Line # Revision Author
1 198 ahitrov <& "/contenido/components/header.msn" &>
2
3 <style>
4 <!--
5 .inverted td { font-weight:bold; color:white; background-color:#8093B0; }
6 .inverted td a { color:white; font-weight:bold; }
7 //-->
8 </style>
9
10 270 ahitrov <% spacer( h=>10 ) %>
11
12 198 ahitrov <table width="100%" cellspacing="0" cellpadding="0" border="0">
13 <tr valign="top">
14 <td width="35%">
15
16 540 ahitrov <& /contenido/webshop/components/block_order_company_filter.msn, value => $company_filter_value &>
17 626 ahitrov <& /contenido/webshop/components/block_order_id_finder.msn &>
18 198 ahitrov <& /contenido/webshop/components/block_order_status_changer.msn, status => $ost &>
19
20 270 ahitrov <& /contenido/webshop/components/block_coupons.msn &>
21 425 ahitrov %#<& /contenido/webshop/components/block_discounts.msn &>
22 422 ahitrov <& /contenido/webshop/components/block_order_finder.msn &>
23 270 ahitrov
24 198 ahitrov </td>
25 <td width="1%">&nbsp;</td>
26 <td width="65%">
27
28 628 ahitrov <div id="search-by-id-found"></div>
29
30 198 ahitrov <fieldset>
31 <legend>Заказы со статусом "<span style="color:yellow"><% $current_status->[1] %></span>"</legend>
32
33 % if ( $total ) {
34
35 <div style="font-size:75%; font-family:Arial;">
36 <& /inc/pages_.msn, p=>$p, n=>$size, total=>$total, params=>\%filter_params, &>
37 <div style="height:5px"><spacer type="block" height="5"></div>
38 </div>
39
40 <& /contenido/webshop/components/order_browse.msn, documents => \@documents, columns => \@columns, filter => \%filter_params, status => $ost, %ARGS &>
41
42 <div style="font-size:75%; font-family:Arial;">
43 <& /inc/pages_.msn, p=>$p, n=>$size, total=>$total, params=>\%filter_params, &>
44 <div style="height:5px"><spacer type="block" height="5"></div>
45 </div>
46
47 % } else {
48 <h4 align="center"><i>---- Нет документов -----</i></h4>
49 % }
50
51 </td>
52 <td width="1%">&nbsp;</td>
53 </tr>
54 </table>
55
56 </body>
57 </html>
58 <%args>
59
60 $ost => 1
61 $p => 1
62 205 ahitrov $delete => undef
63 303 ahitrov $drop_owner => undef
64 198 ahitrov
65 </%args>
66 <%init>
67
68 my %filter_params;
69
70 my (@documents, $total);
71 $filter_params{ost} = $ost if $ost != 1;
72 my $size = 40;
73
74 540 ahitrov my %opts;
75 my $company_filter_value;
76 if ( exists $ARGS{order_company_filter} ) {
77 $company_filter_value = $ARGS{order_company_filter};
78 $m->comp( '/contenido/components/cookies.msn', name => $request->{cookie_filter_company}, value => $company_filter_value );
79 if ( defined $company_filter_value && $company_filter_value ne '' ) {
80 $opts{company_id} = $company_filter_value;
81 }
82 } else {
83 $company_filter_value = $m->comp( '/contenido/components/cookies.msn', name => $request->{cookie_filter_company} );
84 if ( defined $company_filter_value && $company_filter_value ne '' ) {
85 $opts{company_id} = $company_filter_value;
86 }
87 }
88
89 198 ahitrov @documents = $keeper->get_documents(
90 class => 'webshop::Order',
91 status => $ost,
92 limit => $size,
93 offset => ($p-1)*$size,
94 540 ahitrov %opts
95 198 ahitrov );
96 $total = $keeper->get_documents(
97 540 ahitrov class => 'webshop::Order',
98 198 ahitrov status => $ost,
99 count => 1,
100 540 ahitrov %opts
101 198 ahitrov );
102 my @structure = webshop::Order->new( $keeper->{webshop} )->structure;
103 my @columns = sort { $a->{column} <=> $b->{column} }
104 grep { $_->{column} } @structure;
105 push @columns, {attr => '_act_', rusname => 'Действия'};
106 my ($status_map) = grep { $_->{attr} eq 'status' } @structure;
107 my ($current_status) = grep { $_->[0] == $ost } @{$status_map->{cases}};
108
109 205 ahitrov my $active_rights = $m->comp('/contenido/webshop/subs/user_rights.msn');
110 if ( !$active_rights && $delete ) {
111 my $return_params = join ('&', map { $_.'='.$filter_params{$_} } grep { $_ ne 's' } keys %filter_params );
112 my %deleted;
113 while ( my ($field, $value) = each %ARGS ) {
114 if ( $field =~ /^delete_(\d+)_(\w+)$/ ) {
115 my $oid = $1;
116 my $attr = $2;
117 $deleted{$oid}{$attr} = $value;
118 }
119 }
120 my %classes = map { $_->{class} => 1 } values %deleted;
121 foreach my $delete_class ( keys %classes ) {
122 my @ids;
123 while ( my ($oid, $attr) = each %deleted) {
124 push @ids, $oid if exists $attr->{id} && $attr->{id} && ($attr->{class} eq $delete_class);
125 }
126 my @objects = $keeper->get_documents (
127 id => \@ids,
128 class => $delete_class
129 ) if @ids;
130 foreach my $object ( @objects ) {
131 my $document_access = $user->section_accesses($user, $object->section);
132 next unless $document_access == 2;
133 297 ahitrov if ( $user->type ) {
134 $object->status( 5 );
135 $object->store;
136 } else {
137 $object->delete;
138 }
139 205 ahitrov }
140 }
141 $m->redirect("/contenido/webshop/".($return_params ? '?'.$return_params : ''));
142 303 ahitrov } elsif ( $active_rights == 0 && $drop_owner ) {
143 my $id = $ARGS{id};
144 my $doc = $keeper->get_document_by_id( $id,
145 class => 'webshop::Order',
146 ) if $id && $id =~ /^\d+$/;
147 if ( ref $doc ) {
148 my $user_id = $ARGS{field};
149 $doc->$user_id( 0 );
150 $doc->store;
151 $m->redirect( $r->header_in('Referer') );
152 }
153 205 ahitrov }
154
155 198 ahitrov </%init>