package webshop::Order; use base "Contenido::Document"; sub extra_properties { return ( { 'attr' => 'status', 'type' => 'status', 'rusname' => 'Статус заказа', facilshow => 1, postshow => 1, 'cases' => [ [0, 'открыт'], [1, 'обрабатывается'], [2, 'комплектуется'], [3, 'в доставке'], [4, 'доставлен'], [5, 'отклонен'], ], }, { 'attr' => 'delivery', 'type' => 'lookup', 'rusname' => 'Тип доставки', facilshow => 1, postshow => 1, 'lookup_opts' => { 'class' => 'webshop::Delivery', }, }, { 'attr' => 'btime', 'type' => 'datetime', 'rusname' => 'Заказ отдан на комплектацию', postshow => 1, facilshow => 1 }, { 'attr' => 'ftime', 'type' => 'datetime', 'rusname' => 'Заказ передан в доставку', manager_hidden => 1, postshow => 1, faciledit => 1 }, { 'attr' => 'etime', 'type' => 'datetime', 'rusname' => 'Заказ доставлен', manager_hidden => 1, postedit => 1, facilshow => 1 }, { 'attr' => 'num', 'type' => 'integer', 'rusname' => 'Количество позиций', manshow => 1, postshow => 1, facilshow => 1 }, { 'attr' => 'sum', 'type' => 'string', 'rusname' => 'Сумма (total)', shortname => 'Сумма', column => 5, postshow => 1, facilshow => 1 }, { 'attr' => 'sum_delivery', 'type' => 'string', 'rusname' => 'Стоимость доставки', shortname => 'Доставка', column => 6, postshow => 1, facilshow => 1 }, { 'attr' => 'contact', 'type' => 'string', 'rusname' => 'Контактное лицо', facilshow => 1 }, { 'attr' => 'email', 'type' => 'string', 'rusname' => 'E-mail для связи', shortname => 'E-mail', column => 3, postshow => 1, facilshow => 1 }, { 'attr' => 'phone', 'type' => 'string', 'rusname' => 'Телефон для связи', shortname => 'Тел.', column => 4, postshow => 1, facilshow => 1 }, { 'attr' => 'zipcode', 'type' => 'string', 'rusname' => 'Почтовый индекс', postshow => 1 }, { 'attr' => 'town', 'type' => 'string', 'rusname' => 'Город', postshow => 1, facilshow => 1 }, { 'attr' => 'metro', 'type' => 'string', 'rusname' => 'Ближайшее метро', postshow => 1 }, { 'attr' => 'timeline', 'type' => 'string', 'rusname' => 'Предпочтительное время', postshow => 1 }, { 'attr' => 'description', 'type' => 'text', 'rusname' => 'Описание для курьера', rows => 5, postshow => 1 }, { 'attr' => 'facility_comment', 'type' => 'text', 'rusname' => 'Описание проблем с комплектацией', rows => 5, faciledit => 1 }, { 'attr' => 'delivery_comment', 'type' => 'text', 'rusname' => 'Описание проблем с доставкой', rows => 5, postedit => 1 }, { 'attr' => 'address', 'type' => 'text', 'rusname' => 'Адрес доставки', rows => 5, postedit => 1, facilshow => 1 }, ) } sub sum_formatted { my $self = shift; my $price = $self->sum; $price = reverse $price; $price =~ s/(\d{3})/$1\ /g; $price = reverse $price; return $price; } sub total_formatted { my $self = shift; my $price = $self->sum + ($self->sum_delivery || 0); $price = reverse $price; $price =~ s/(\d{3})/$1\ /g; $price = reverse $price; return $price; } sub reject { my $self = shift; my $query = $self->{keeper}->SQL->prepare("delete from basket where order_id = ? and uid = ?"); $query->execute( $self->id, $self->uid ); $self->delete; } sub class_name { return 'Заказ'; } sub class_description { return 'Заказ'; } sub class_table { return 'webshop::SQL::Order'; } sub post_delete { my $self = shift; my @items = $self->keeper->get_documents( class => 'webshop::Basket', order_id => $self->id, ); foreach my $item ( @items ) { $item->delete( attachments => 1 ); } 1; } 1;