Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision d13114c0

Von Tamino Steinert vor 8 Tagen hinzugefügt

  • ID d13114c01420dfdd4e0f53909647cf495e111c04
  • Vorgänger e84b30f1

S:C:Part: Massendruck für Artikeletiketten

Unterschiede anzeigen:

SL/Controller/Part.pm
22 22
use SL::DB::Part;
23 23
use SL::DB::PartsGroup;
24 24
use SL::DB::PriceRuleItem;
25
use SL::DB::PartLabelPrint;
25 26
use SL::DB::PurchaseBasketItem;
26 27
use SL::DB::Shop;
27 28
use SL::Helper::Flash;
......
34 35
use SL::MoreCommon qw(save_form);
35 36
use SL::Presenter::EscapedText qw(escape is_escaped);
36 37
use SL::Presenter::Part;
37
use SL::Presenter::Tag qw(select_tag);
38
use SL::Presenter::Tag qw(select_tag checkbox_tag);
39
use SL::ReportGenerator;
40
use SL::Controller::Helper::ReportGenerator;
38 41

  
39 42
use Rose::Object::MakeMethods::Generic (
40 43
  'scalar --get_set_init' => [ qw(parts models part p warehouses multi_items_models
......
138 141
  $self->js_reset_part_after_save();
139 142
  $self->js->flash('info', t8('The item has been saved.'));
140 143

  
144
  $self->print_part($self->part);
145

  
146
  $self->js->render();
147
}
148

  
149
sub action_print_multi {
150
  my ($self) = @_;
151

  
152
  my $parts = SL::DB::Manager::Part->get_all(where => [id => $::form->{ids}]);
153
  foreach my $part(@{$parts}) {
154
    $self->print_part($part);
155
  }
156

  
157
  $self->js->render();
158
}
159

  
160
sub print_part {
161
  my ($self, $part) = @_;
162

  
141 163
  my $formname    = $::form->{print_options}->{formname};
142 164
  my $format      = $::form->{print_options}->{format};
143 165
  my $media       = $::form->{print_options}->{media};
......
147 169
    $language = SL::DB::Manager::Language->find_by(
148 170
      id => $::form->{print_options}->{language_id}
149 171
    );
172
  }
150 173
  my $copies;
151 174
  if ($::form->{print_options}->{part_labels_for_stock}) {
152
    $copies = $self->part->stockqty;
175
    $copies = $part->stockqty;
153 176
  } else {
154 177
    $copies = $::form->{print_options}->{copies};
155 178
  }
......
178 201
    }
179 202

  
180 203
    my $print_form = Form->new('');
181
    $print_form->{part}       = $self->part;
204
    $print_form->{part}       = $part;
182 205

  
183 206
    # for doc_filename
184 207
    $print_form->{type}       = 'part';
185 208
    $print_form->{formname}   = $formname;
186 209
    $print_form->{format}     = $format;
187
    $print_form->{partnumber} = $self->part->partnumber;
210
    $print_form->{partnumber} = $part->partnumber;
188 211
    $print_form->{language}   = $language && ("_" .
189 212
                                ($language->template_code || $language->description)
190 213
                              );
......
244 267
      ->flash('error', t8("Creating the PDF failed!"))
245 268
      ->flash('error', $@);
246 269
  };
247

  
248
  $self->js->render();
249 270
}
250 271

  
251 272
sub action_save_and_purchase_order {
......
915 936
  $self->render(\$output, { layout => 0, process => 0 });
916 937
}
917 938

  
939
sub action_search_print_part_labels_of_changed_prices {
940
  my ($self) = @_;
941
  $self->_setup_search_print_part_labels_of_changed_prices_action_bar();
942

  
943
  $::form->{filter} ||= {};
944

  
945
  $::form->{filter}->{price_change_printed} ||= {
946
    template   => 'part_label',
947
    print_type => 'stock',
948
    printed    => 0
949
  };
950

  
951
  my $price_change_printed =$::form->{filter}->{price_change_printed};
952
  $::form->{filter}->{price_change_printed} = \$price_change_printed;
953

  
954
  my $report =  SL::ReportGenerator->new(\%::myconfig, $::form);
955

  
956
  $self->models->finalize; # for filter laundering
957

  
958
  $::form->{filter}->{price_change_printed} = ${$::form->{filter}->{price_change_printed}};
959

  
960
  my $callback = $self->models->get_callback;
961

  
962
  $self->{report} = $report;
963

  
964
  my @columns_order = qw(
965
    id_check_box
966
    partnumber
967
    ean
968
    description
969
    notes
970
    partsgroup
971
  );
972

  
973
  my @default_columns = qw(
974
    id_check_box
975
    partnumber
976
    ean
977
    description
978
    partsgroup
979
  );
980

  
981
  my %column_defs = (
982
    id_check_box => {
983
      raw_data => sub {
984
        checkbox_tag("ids[]", value => $_[0]->id, "data-checkall" => 1, checked => 1);
985
      },
986
      raw_header_data => checkbox_tag("", id => "check_all", checkall => "[data-checkall=2]", checked => 1),
987
      text => ' ',
988
    },
989
    partnumber => {
990
      obj_link => sub {$self->url_for(action => 'edit', 'part.id' => $_[0]->id, callback => $callback)},
991
      sub      => sub { $_[0]->partnumber },
992
    },
993
    ean => {
994
      obj_link => sub {$self->url_for(action => 'edit', 'part.id' => $_[0]->id, callback => $callback)},
995
      sub      => sub { $_[0]->ean },
996
    },
997
    description => {
998
      sub      => sub {$_[0]->description },
999
    },
1000
    notes => {
1001
      sub      => sub {$_[0]->notes },
1002
    },
1003
    partsgroup => {
1004
      sub      => sub {t8($_[0]->partsgroup ? $_[0]->partsgroup->partsgroup : '') },
1005
    },
1006
  );
1007

  
1008
  $column_defs{$_}->{text} ||= t8( $self->models->get_sort_spec->{$_}->{title} || $_ )
1009
    for keys %column_defs;
1010

  
1011
  unless ($::form->{active_in_report}) {
1012
    $::form->{active_in_report}->{$_} = 1 foreach @default_columns;
1013
  }
1014

  
1015
  $self->models->add_additional_url_params(
1016
    active_in_report => $::form->{active_in_report});
1017
  map { $column_defs{$_}->{visible} = $::form->{active_in_report}->{"$_"} || 0 }
1018
    grep {$_ ne 'id_check_box'}
1019
    keys %column_defs;
1020

  
1021
  # make all sortable
1022
  my @sortable =
1023
    grep {$_ ne 'id_check_box'}
1024
    keys %column_defs;
1025

  
1026
  use SL::Presenter::Filter::Part;
1027
  my $filter_html = SL::Presenter::Filter::Part::filter(
1028
    $::form->{filter},
1029
    show_price_change_printed_filter => 1,
1030
    active_in_report => $::form->{active_in_report}
1031
  );
1032

  
1033
  $report->set_options(
1034
    std_column_visibility => 1,
1035
    controller_class      => 'Part',
1036
    output_format         => 'HTML',
1037
    raw_top_info_text     => $self->render(
1038
     'part/_print_part_labels_of_changed_prices_report_top',
1039
     { output => 0 },
1040
     FILTER_HTML => $filter_html,
1041
    ),
1042
    raw_bottom_info_text  => $self->render(
1043
     'part/_print_part_labels_of_changed_prices_report_bottom',
1044
     { output => 0 },
1045
     models => $self->models
1046
    ),
1047
    title                 => t8('Parts with Changed Prices'),
1048
    allow_pdf_export      => 1,
1049
    allow_csv_export      => 1,
1050
  );
1051

  
1052
  $report->set_columns(%column_defs);
1053
  $report->set_column_order(@columns_order);
1054
  $report->set_export_options(
1055
    'search_print_part_labels_of_changed_prices',
1056
    qw(filter active_in_report)
1057
  );
1058
  $report->set_options_from_form;
1059
  $self->models->set_report_generator_sort_options(
1060
    report => $report,
1061
    sortable_columns => \@sortable
1062
  );
1063

  
1064
  $self->report_generator_list_objects(
1065
    report => $report,
1066
    objects => $self->models->get,
1067
  );
1068
}
1069

  
918 1070
sub action_print_label {
919 1071
  my ($self) = @_;
920 1072
  # TODO: implement
......
1437 1589
        dir  => 1,
1438 1590
      },
1439 1591
      partnumber  => t8('Partnumber'),
1440
      description  => t8('Description'),
1592
      description => t8('Description'),
1593
      ean         => t8('EAN'),
1594
      notes       => t8('Notes'),
1595
      partsgroup  => t8('Partsgroup'),
1441 1596
    },
1442 1597
    with_objects => [ qw(unit_obj classification) ],
1443 1598
  );
......
2025 2180
  }
2026 2181
}
2027 2182

  
2183
sub _setup_search_print_part_labels_of_changed_prices_action_bar {
2184
  my ($self, %params) = @_;
2185

  
2186
  for my $bar ($::request->layout->get('actionbar')) {
2187
    $bar->add(
2188
      action => [
2189
        t8('Update'),
2190
        submit    => [
2191
          '#filter_form', {
2192
            action => 'Part/search_print_part_labels_of_changed_prices',
2193
          }
2194
        ],
2195
        accesskey => 'enter',
2196
      ],
2197
      combobox => [
2198
        action => [
2199
          t8('Print'),
2200
        ],
2201
        action => [
2202
          t8('Print one Label'),
2203
          call     => [ 'kivi.Part.show_print_options' ],
2204
        ],
2205
        action => [
2206
          t8('Print Labels for Stock'),
2207
          call     => [ 'kivi.Part.show_part_labels_for_stock_print_options' ],
2208
        ],
2209
      ],
2210
    );
2211
  }
2212
}
2213

  
2028 2214
1;
2029 2215

  
2030 2216
__END__
SL/DB/Manager/Part.pm
34 34
    return or => [ map { $prefix . $_ => $value } qw(partnumber description ean customerprices.customer_partnumber) ],
35 35
      $prefix . 'customerprices';
36 36
  },
37
  price_change_printed => sub {
38
    my ($key, $value, $prefix) = @_;
39
    die "value must be a scalar ref to a hash ref"
40
      unless ref $value eq 'REF' && ref ($$value) eq 'HASH';
41

  
42
    my %value = %$$value;
43

  
44
    my $template   = $value{template};
45
    my $print_type = $value{print_type};
46
    my $printed    = $value{printed};
47

  
48
    my $comp = !!$printed  ? '>' : '<=';
49

  
50
    # table part_table is aliased as t1
51
    return
52
      [\qq{(
53
        SELECT DISTINCT CASE WHEN count(*) $comp 1 THEN FALSE ELSE TRUE END
54
        FROM (
55
          (
56
            -- last printed or first price
57
            SELECT t2_sellprice
58
            FROM (
59
              (
60
                SELECT
61
                  parts_price_history.sellprice AS t2_sellprice,
62
                  parts_price_history.valid_from AS t2_valid_from,
63
                  parts_price_history.id as t2_id
64
                FROM parts_price_history
65
                JOIN part_label_prints
66
                  ON (parts_price_history.id = part_label_prints.price_history_id)
67
                WHERE parts_price_history.part_id = t1.id AND (
68
                    ('' = ? OR part_label_prints.template = ?) AND
69
                    ('' = ? OR part_label_prints.print_type = ?)
70
                  )
71
                ORDER by
72
                  parts_price_history.valid_from DESC,
73
                  parts_price_history.id DESC
74
                LIMIT 1
75
              ) UNION (
76
                SELECT
77
                  parts_price_history.sellprice AS t2_sellprice,
78
                  parts_price_history.valid_from AS t2_valid_from,
79
                  parts_price_history.id as t2_id
80
                FROM parts_price_history
81
                WHERE part_id = t1.id
82
                ORDER BY
83
                  parts_price_history.valid_from ASC,
84
                  parts_price_history.id ASC
85
                LIMIT 1
86
              )
87
            )
88
            ORDER by
89
              t2_valid_from DESC,
90
              t2_id DESC
91
            LIMIT 1
92
          ) UNION (
93
            -- current price
94
            SELECT parts_price_history.sellprice AS t2_sellprice
95
            FROM parts_price_history
96
            WHERE part_id = t1.id
97
            ORDER BY
98
              parts_price_history.valid_from DESC,
99
              parts_price_history.id
100
            DESC LIMIT 1
101
          )
102
        )
103
        )} => ($template, $template, $print_type, $print_type || 'stock')
104
      ] => \'TRUE';
105
  },
37 106
);
38 107

  
39 108
sub type_filter {
js/kivi.Part.js
50 50
    $.post("controller.pl", data, kivi.eval_json_result);
51 51
  };
52 52

  
53
  ns.print_multi = function() {
54
    $('#print_options').dialog('close');
55

  
56
    var data = $('#report_form').serializeArray();
57
    data = data.concat($('#print_options_form').serializeArray());
58
    data.push({ name: 'action', value: 'Part/print_multi' });
59

  
60
    $.post("controller.pl", data, kivi.eval_json_result);
61
  };
62

  
53 63
  ns.show_part_labels_for_stock_print_options = function() {
54 64
    kivi.popup_dialog({
55 65
      id: 'print_part_labels_for_stock_print_options',
56 66
      dialog: {
57
        title:  kivi.t8('Part Labels for Stock Print options'),
67
        title:  kivi.t8('Print options for Stock Print'),
58 68
        width:  800,
59 69
        height: 300
60 70
      }
61 71
    });
62
  }
72
  };
63 73

  
64 74
  ns.save_and_print_part_labels_for_stock = function() {
65 75
    $('#print_part_labels_for_stock_print_options').dialog('close');
......
71 81
    $.post("controller.pl", data, kivi.eval_json_result);
72 82
  };
73 83

  
84
  ns.print_multi_part_labels_for_stock = function() {
85
    $('#print_part_labels_for_stock_print_options').dialog('close');
86

  
87
    var data = $('#report_form').serializeArray();
88
    data = data.concat($('#print_part_labels_for_stock_print_options_form').serializeArray());
89
    data.push({ name: 'action', value: 'Part/print_multi' });
90

  
91
    $.post("controller.pl", data, kivi.eval_json_result);
92
  };
93

  
74 94
  ns.delete = function() {
75 95
    var data = $('#ic').serializeArray();
76 96
    data.push({ name: 'action', value: 'Part/delete' });
js/locale/de.js
133 133
"Previous month":"vorheriger Monat",
134 134
"Price Types":"Preistypen",
135 135
"Print options":"Druckoptionen",
136
"Print options for Stock Print":"Druckoptionen für Bestand-Druck",
136 137
"Print record":"Beleg drucken",
137 138
"Project link actions":"Projektverknüpfungs-Aktionen",
138 139
"Project picker":"Projektauswahl",
js/locale/en.js
133 133
"Previous month":"",
134 134
"Price Types":"",
135 135
"Print options":"",
136
"Print options for Stock Print":"",
136 137
"Print record":"",
137 138
"Project link actions":"",
138 139
"Project picker":"",
locale/de/all
2837 2837
  'Parts Classification'        => 'Artikel-Klassifizierung',
2838 2838
  'Parts Inventory'             => 'Warenliste',
2839 2839
  'Parts Master Data'           => 'Artikelstammdaten',
2840
  'Parts with Changed Prices'   => 'Artikel mit Preisänderung',
2840 2841
  'Parts with existing part numbers' => 'Artikel mit existierender Artikelnummer',
2841 2842
  'Parts, services and assemblies' => 'Waren, Dienstleistungen und Erzeugnisse',
2842 2843
  'Partsgroup'                  => 'Warengruppe',
......
3015 3016
  'Previous transnumber text'   => 'Letzte Buchung mit der Buchungsnummer',
3016 3017
  'Price'                       => 'Preis',
3017 3018
  'Price #1'                    => 'Preis #1',
3019
  'Price Change Printed'        => 'Preisänderung gedruckt',
3018 3020
  'Price Factor'                => 'Preisfaktor',
3019 3021
  'Price Factors'               => 'Preisfaktoren',
3020 3022
  'Price List'                  => 'Preisliste',
......
3043 3045
  'Prices'                      => 'Preise',
3044 3046
  'Prices & Discounts'          => 'Preise & Rabatte',
3045 3047
  'Print'                       => 'Drucken',
3048
  'Print Labels for Stock'      => 'Etikettendruck für Bestand',
3049
  'Print Part Labels of Changed Prices' => 'Etikettendruck für geänderte Preise',
3050
  'Print Type'                  => 'Drucktyp',
3046 3051
  'Print and Post'              => 'Drucken und Buchen',
3047 3052
  'Print automatically'         => 'Automatisch ausdrucken',
3048 3053
  'Print both sided'            => 'Beidseitig ausdrucken',
......
3051 3056
  'Print destination (copy)'    => 'Druckausgabe (Kopie)',
3052 3057
  'Print dunnings'              => 'Mahnungen drucken',
3053 3058
  'Print list'                  => 'Liste ausdrucken',
3059
  'Print one Label'             => 'Etikettendruck einzeln',
3054 3060
  'Print options'               => 'Druckoptionen',
3061
  'Print options for Stock Print' => 'Druckoptionen für Bestand-Druck',
3055 3062
  'Print record'                => 'Beleg drucken',
3056 3063
  'Print template base file name' => 'Druckvorlagen-Basisdateiname',
3057 3064
  'Print templates'             => 'Druckvorlagen',
3058 3065
  'Print templates to use'      => 'Zu verwendende Druckvorlagen',
3059 3066
  'Printdate'                   => 'Druckdatum',
3067
  'Printed'                     => 'Gedruckt',
3060 3068
  'Printer'                     => 'Drucker',
3061 3069
  'Printer Command'             => 'Druckbefehl',
3062 3070
  'Printer Description'         => 'Druckerbeschreibung',
......
3468 3476
  'Save and Invoice'            => 'Speichern und Rechnung erfassen',
3469 3477
  'Save and Invoice for Advance Payment' => 'Speichern und Anzahlungsrechnung',
3470 3478
  'Save and Order'              => 'Speichern und Auftrag erfassen',
3479
  'Save and Print Labels for Stock' => 'Speichern und Etiketten für Bestand drucken',
3471 3480
  'Save and Purchase Delivery Order' => 'Speichern und Lieferschein (Einkauf)',
3472 3481
  'Save and Purchase Delivery Order with item selection' => 'Speichern und Lieferschein (Einkauf) mit Artikelauswahl',
3473 3482
  'Save and Purchase Order'     => 'Speichern und Lieferantenauftrag',
......
3750 3759
  'Show »not delivered qty/value« column in sales and purchase orders' => 'Spalte »Nicht gelieferte Menge/Wert« in Aufträgen anzeigen',
3751 3760
  'Signature'                   => 'Unterschrift',
3752 3761
  'Since bin is not enforced in the parts data, please specify a bin where goods without a specified bin will be put.' => 'Da Lagerplätze kein Pflichtfeld sind, geben Sie bitte einen Lagerplatz an, in dem Waren ohne spezifizierten Lagerplatz eingelagert werden sollen.',
3762
  'Single'                      => 'Einzeln',
3753 3763
  'Single quotes'               => 'Einfache Anführungszeichen',
3754 3764
  'Single values in item mode, cumulated values in invoice mode' => 'Einzelwerte im Artikelmodus, kumulierte Werte im Rechnungsmodus',
3755 3765
  'Singular'                    => 'Singular',
......
3817 3827
  'Step 2'                      => 'Schritt 2',
3818 3828
  'Step 2 -- Watch status'      => 'Schritt 2 -- Status beobachten',
3819 3829
  'Steuersatz'                  => 'Steuersatz',
3830
  'Stock'                       => 'Bestand',
3820 3831
  'Stock Local/Shop'            => 'Bestand Lokal/Online',
3821 3832
  'Stock Qty for Date'          => 'Lagerbestand am',
3822 3833
  'Stock for part #1'           => 'Bestand für Artikel #1',
......
4208 4219
  'The order intake has been deleted' => 'Der Auftragseingang wurde gelöscht',
4209 4220
  'The order intake has been saved' => 'Der Auftragseingang wurde gespeichert',
4210 4221
  'The package name is invalid.' => 'Der Paketname ist ungültig.',
4222
  'The part has no stock.'      => 'Der Artikel hat kein Bestand',
4211 4223
  'The partnumber already exists!' => 'Die Artikelnummer wird bereits verwendet.',
4212 4224
  'The partnumber already exists.' => 'Die Artikelnummer wird bereits verwendet.',
4213 4225
  'The partnumber is already being used' => 'Der Artikel ist bereits in Verwendung',
locale/en/all
2836 2836
  'Parts Classification'        => '',
2837 2837
  'Parts Inventory'             => '',
2838 2838
  'Parts Master Data'           => '',
2839
  'Parts with Changed Prices'   => '',
2839 2840
  'Parts with existing part numbers' => '',
2840 2841
  'Parts, services and assemblies' => '',
2841 2842
  'Partsgroup'                  => '',
......
3014 3015
  'Previous transnumber text'   => '',
3015 3016
  'Price'                       => '',
3016 3017
  'Price #1'                    => '',
3018
  'Price Change Printed'        => '',
3017 3019
  'Price Factor'                => '',
3018 3020
  'Price Factors'               => '',
3019 3021
  'Price List'                  => '',
......
3042 3044
  'Prices'                      => '',
3043 3045
  'Prices & Discounts'          => '',
3044 3046
  'Print'                       => '',
3047
  'Print Labels for Stock'      => '',
3048
  'Print Part Labels of Changed Prices' => '',
3049
  'Print Type'                  => '',
3045 3050
  'Print and Post'              => '',
3046 3051
  'Print automatically'         => '',
3047 3052
  'Print both sided'            => '',
......
3050 3055
  'Print destination (copy)'    => '',
3051 3056
  'Print dunnings'              => '',
3052 3057
  'Print list'                  => '',
3058
  'Print one Label'             => '',
3053 3059
  'Print options'               => '',
3060
  'Print options for Stock Print' => '',
3054 3061
  'Print record'                => '',
3055 3062
  'Print template base file name' => '',
3056 3063
  'Print templates'             => '',
3057 3064
  'Print templates to use'      => '',
3058 3065
  'Printdate'                   => '',
3066
  'Printed'                     => '',
3059 3067
  'Printer'                     => '',
3060 3068
  'Printer Command'             => '',
3061 3069
  'Printer Description'         => '',
......
3467 3475
  'Save and Invoice'            => '',
3468 3476
  'Save and Invoice for Advance Payment' => '',
3469 3477
  'Save and Order'              => '',
3478
  'Save and Print Labels for Stock' => '',
3470 3479
  'Save and Purchase Delivery Order' => '',
3471 3480
  'Save and Purchase Delivery Order with item selection' => '',
3472 3481
  'Save and Purchase Order'     => '',
......
3749 3758
  'Show »not delivered qty/value« column in sales and purchase orders' => '',
3750 3759
  'Signature'                   => '',
3751 3760
  'Since bin is not enforced in the parts data, please specify a bin where goods without a specified bin will be put.' => '',
3761
  'Single'                      => '',
3752 3762
  'Single quotes'               => '',
3753 3763
  'Single values in item mode, cumulated values in invoice mode' => '',
3754 3764
  'Singular'                    => '',
......
3816 3826
  'Step 2'                      => '',
3817 3827
  'Step 2 -- Watch status'      => '',
3818 3828
  'Steuersatz'                  => '',
3829
  'Stock'                       => '',
3819 3830
  'Stock Local/Shop'            => '',
3820 3831
  'Stock Qty for Date'          => '',
3821 3832
  'Stock for part #1'           => '',
......
4206 4217
  'The order intake has been deleted' => '',
4207 4218
  'The order intake has been saved' => '',
4208 4219
  'The package name is invalid.' => '',
4220
  'The part has no stock.'      => '',
4209 4221
  'The partnumber already exists!' => '',
4210 4222
  'The partnumber already exists.' => '',
4211 4223
  'The partnumber is already being used' => '',
menus/user/00-erp.yaml
96 96
    action: RequirementSpec/new
97 97
    is_template: 1
98 98
- parent: master_data
99
  id: master_data_update_prices
99
  id: master_data_prices
100
  name: Prices
101
  order: 800
102
- parent: master_data_prices
103
  id: master_data_prices_update_prices
100 104
  name: Update Prices
101 105
  icon: prices_update
102
  order: 800
106
  order: 100
103 107
  access: part_service_assembly_edit & part_service_assembly_edit_prices
104 108
  params:
105 109
    action: PartsPriceUpdate/search_update_prices
106
- parent: master_data
107
  id: master_data_price_rules
110
- parent: master_data_prices
111
  id: master_data_prices_printing_part_labels
112
  name: Print Part Labels of Changed Prices
113
  order: 200
114
  access: part_service_assembly_details
115
  params:
116
    action: Part/search_print_part_labels_of_changed_prices
117
- parent: master_data_prices
118
  id: master_data_prices_price_rules
108 119
  name: Price Rules
109
  order: 900
120
  order: 300
110 121
  access: part_service_assembly_edit
111 122
  params:
112 123
    action: PriceRule/list
templates/design40_webpages/part/_print_part_labels_of_changed_prices_report_bottom.html
1
[% USE L %]
2
[%- L.paginate_controls(models=models) %]
3
  </form> <!-- report -->
4
</div><!-- div report -->
templates/design40_webpages/part/_print_part_labels_of_changed_prices_report_top.html
1
[%- USE L %]
2
[%- USE LxERP %]
3

  
4
[% BLOCK filter_toggle_panel %]
5
[%- FILTER_HTML %]
6
[% END %]
7

  
8
<div class="wrapper">
9
  [% SET display_status = 'open' %]
10
  [% INCLUDE 'common/toggle_panel.html' %]
11
</div><!-- /.wrapper -->
12

  
13
<div id="print_options" style="display:none">
14
  <form method="post" action="controller.pl" id="print_options_form">
15
    [% SELF.print_options %]
16
    <br>
17
    [% L.button_tag('kivi.Part.print_multi()', LxERP.t8('Print')) %]
18
    <a href="#" onclick="$('#print_options').dialog('close');" class="button neutral">[% LxERP.t8("Cancel") %]</a>
19
  </form>
20
</div>
21

  
22
<div id="print_part_labels_for_stock_print_options" style="display:none">
23
  <form method="post" action="controller.pl" id="print_part_labels_for_stock_print_options_form">
24
    [% SELF.part_labels_for_stock_print_options %]
25
    [% L.hidden_tag('print_options.part_labels_for_stock', 1) %]
26
    <br>
27
    [% L.button_tag('kivi.Part.print_multi_part_labels_for_stock()', LxERP.t8('Print')) %]
28
    <a href="#" onclick="$('#print_part_labels_for_stock_print_options').dialog('close');" class="button neutral">[% LxERP.t8("Cancel") %]</a>
29
  </form>
30
</div>
31

  
32
<div class="wrapper"><!-- div report -->
33
  <form id="report_form">

Auch abrufbar als: Unified diff