Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision f775b88a

Von Moritz Bunkus vor mehr als 10 Jahren hinzugefügt

  • ID f775b88a24af70fd667683ee235adc2d450e83b9
  • Vorgänger 85d9159e
  • Nachfolger 3da73190

Einkaufs-/Verkaufsprozesse: optionale Einschränkungen für gewisse Aktionen

Über die Mandantenkonfiguration kann verboten werden, dass gewisse
Aktionen in den Einkaufs- und Verkaufsprozesse durchgeführt
werden. Diese sind:

- Direkte umwandlung von Verkaufsangeboten und aufträgen in
Verkaufsrechnungen (nur über den Weg der Lieferscheine)
Direktes Anlegen neuer Einkaufslieferscheine und -rechnungen (nur
durch Umwandlung bestehender Belege)

Unterschiede anzeigen:

SL/DB/MetaSetup/Default.pm
9 9
__PACKAGE__->meta->table('defaults');
10 10

  
11 11
__PACKAGE__->meta->columns(
12
  accounting_method                       => { type => 'text' },
13
  address                                 => { type => 'text' },
14
  ap_changeable                           => { type => 'integer', default => 2, not_null => 1 },
15
  ap_show_mark_as_paid                    => { type => 'boolean', default => 'true' },
16
  ar_changeable                           => { type => 'integer', default => 2, not_null => 1 },
17
  ar_paid_accno_id                        => { type => 'integer' },
18
  ar_show_mark_as_paid                    => { type => 'boolean', default => 'true' },
19
  articlenumber                           => { type => 'text' },
20
  assemblynumber                          => { type => 'text' },
21
  balance_startdate_method                => { type => 'text' },
22
  bin_id                                  => { type => 'integer' },
23
  bin_id_ignore_onhand                    => { type => 'integer' },
24
  businessnumber                          => { type => 'text' },
25
  closedto                                => { type => 'date' },
26
  cnnumber                                => { type => 'text' },
27
  co_ustid                                => { type => 'text' },
28
  coa                                     => { type => 'text' },
29
  company                                 => { type => 'text' },
30
  currency_id                             => { type => 'integer', not_null => 1 },
31
  customer_hourly_rate                    => { type => 'numeric', precision => 8, scale => 2 },
32
  customernumber                          => { type => 'text' },
33
  datev_check_on_ap_transaction           => { type => 'boolean', default => 'true' },
34
  datev_check_on_ar_transaction           => { type => 'boolean', default => 'true' },
35
  datev_check_on_gl_transaction           => { type => 'boolean', default => 'true' },
36
  datev_check_on_purchase_invoice         => { type => 'boolean', default => 'true' },
37
  datev_check_on_sales_invoice            => { type => 'boolean', default => 'true' },
38
  dunning_ar                              => { type => 'integer' },
39
  dunning_ar_amount_fee                   => { type => 'integer' },
40
  dunning_ar_amount_interest              => { type => 'integer' },
41
  duns                                    => { type => 'text' },
42
  expense_accno_id                        => { type => 'integer' },
43
  fxgain_accno_id                         => { type => 'integer' },
44
  fxloss_accno_id                         => { type => 'integer' },
45
  gl_changeable                           => { type => 'integer', default => 2, not_null => 1 },
46
  id                                      => { type => 'serial', not_null => 1 },
47
  income_accno_id                         => { type => 'integer' },
48
  inventory_accno_id                      => { type => 'integer' },
49
  inventory_system                        => { type => 'text' },
50
  invnumber                               => { type => 'text' },
51
  ir_changeable                           => { type => 'integer', default => 2, not_null => 1 },
52
  ir_show_mark_as_paid                    => { type => 'boolean', default => 'true' },
53
  is_changeable                           => { type => 'integer', default => 2, not_null => 1 },
54
  is_show_mark_as_paid                    => { type => 'boolean', default => 'true' },
55
  itime                                   => { type => 'timestamp', default => 'now()' },
56
  language_id                             => { type => 'integer' },
57
  max_future_booking_interval             => { type => 'integer', default => 360 },
58
  mtime                                   => { type => 'timestamp' },
59
  normalize_part_descriptions             => { type => 'boolean', default => 'true' },
60
  normalize_vc_names                      => { type => 'boolean', default => 'true' },
61
  parts_image_css                         => { type => 'text', default => 'border:0;float:left;max-width:250px;margin-top:20px:margin-right:10px;margin-left:10px;' },
62
  parts_listing_image                     => { type => 'boolean', default => 'true' },
63
  parts_show_image                        => { type => 'boolean', default => 'true' },
64
  payments_changeable                     => { type => 'integer', default => '0', not_null => 1 },
65
  pdonumber                               => { type => 'text' },
66
  ponumber                                => { type => 'text' },
67
  profit_determination                    => { type => 'text' },
68
  purchase_delivery_order_show_delete     => { type => 'boolean', default => 'true' },
69
  purchase_order_show_delete              => { type => 'boolean', default => 'true' },
70
  require_transaction_description_ps      => { type => 'boolean', default => 'false', not_null => 1 },
71
  requirement_spec_section_order_part_id  => { type => 'integer' },
72
  revtrans                                => { type => 'boolean', default => 'false' },
73
  rfqnumber                               => { type => 'text' },
74
  rmanumber                               => { type => 'text' },
75
  sales_delivery_order_show_delete        => { type => 'boolean', default => 'true' },
76
  sales_order_show_delete                 => { type => 'boolean', default => 'true' },
77
  sdonumber                               => { type => 'text' },
78
  sepa_creditor_id                        => { type => 'text' },
79
  servicenumber                           => { type => 'text' },
80
  show_bestbefore                         => { type => 'boolean', default => 'false' },
81
  show_weight                             => { type => 'boolean', default => 'false', not_null => 1 },
82
  signature                               => { type => 'text' },
83
  sonumber                                => { type => 'text' },
84
  sqnumber                                => { type => 'text' },
85
  taxnumber                               => { type => 'text' },
86
  templates                               => { type => 'text' },
87
  transfer_default                        => { type => 'boolean', default => 'true' },
88
  transfer_default_ignore_onhand          => { type => 'boolean', default => 'false' },
89
  transfer_default_use_master_default_bin => { type => 'boolean', default => 'false' },
90
  vendornumber                            => { type => 'text' },
91
  version                                 => { type => 'varchar', length => 8 },
92
  vertreter                               => { type => 'boolean', default => 'false' },
93
  warehouse_id                            => { type => 'integer' },
94
  warehouse_id_ignore_onhand              => { type => 'integer' },
95
  webdav                                  => { type => 'boolean', default => 'false' },
96
  webdav_documents                        => { type => 'boolean', default => 'false' },
97
  weightunit                              => { type => 'varchar', length => 5 },
12
  accounting_method                        => { type => 'text' },
13
  address                                  => { type => 'text' },
14
  allow_new_purchase_delivery_order        => { type => 'boolean', default => 'true', not_null => 1 },
15
  allow_new_purchase_invoice               => { type => 'boolean', default => 'true', not_null => 1 },
16
  allow_sales_invoice_from_sales_order     => { type => 'boolean', default => 'true', not_null => 1 },
17
  allow_sales_invoice_from_sales_quotation => { type => 'boolean', default => 'true', not_null => 1 },
18
  ap_changeable                            => { type => 'integer', default => 2, not_null => 1 },
19
  ap_show_mark_as_paid                     => { type => 'boolean', default => 'true' },
20
  ar_changeable                            => { type => 'integer', default => 2, not_null => 1 },
21
  ar_paid_accno_id                         => { type => 'integer' },
22
  ar_show_mark_as_paid                     => { type => 'boolean', default => 'true' },
23
  articlenumber                            => { type => 'text' },
24
  assemblynumber                           => { type => 'text' },
25
  balance_startdate_method                 => { type => 'text' },
26
  bin_id                                   => { type => 'integer' },
27
  bin_id_ignore_onhand                     => { type => 'integer' },
28
  businessnumber                           => { type => 'text' },
29
  closedto                                 => { type => 'date' },
30
  cnnumber                                 => { type => 'text' },
31
  co_ustid                                 => { type => 'text' },
32
  coa                                      => { type => 'text' },
33
  company                                  => { type => 'text' },
34
  currency_id                              => { type => 'integer', not_null => 1 },
35
  customer_hourly_rate                     => { type => 'numeric', precision => 8, scale => 2 },
36
  customernumber                           => { type => 'text' },
37
  datev_check_on_ap_transaction            => { type => 'boolean', default => 'true' },
38
  datev_check_on_ar_transaction            => { type => 'boolean', default => 'true' },
39
  datev_check_on_gl_transaction            => { type => 'boolean', default => 'true' },
40
  datev_check_on_purchase_invoice          => { type => 'boolean', default => 'true' },
41
  datev_check_on_sales_invoice             => { type => 'boolean', default => 'true' },
42
  dunning_ar                               => { type => 'integer' },
43
  dunning_ar_amount_fee                    => { type => 'integer' },
44
  dunning_ar_amount_interest               => { type => 'integer' },
45
  duns                                     => { type => 'text' },
46
  expense_accno_id                         => { type => 'integer' },
47
  fxgain_accno_id                          => { type => 'integer' },
48
  fxloss_accno_id                          => { type => 'integer' },
49
  gl_changeable                            => { type => 'integer', default => 2, not_null => 1 },
50
  id                                       => { type => 'serial', not_null => 1 },
51
  income_accno_id                          => { type => 'integer' },
52
  inventory_accno_id                       => { type => 'integer' },
53
  inventory_system                         => { type => 'text' },
54
  invnumber                                => { type => 'text' },
55
  ir_changeable                            => { type => 'integer', default => 2, not_null => 1 },
56
  ir_show_mark_as_paid                     => { type => 'boolean', default => 'true' },
57
  is_changeable                            => { type => 'integer', default => 2, not_null => 1 },
58
  is_show_mark_as_paid                     => { type => 'boolean', default => 'true' },
59
  itime                                    => { type => 'timestamp', default => 'now()' },
60
  language_id                              => { type => 'integer' },
61
  max_future_booking_interval              => { type => 'integer', default => 360 },
62
  mtime                                    => { type => 'timestamp' },
63
  normalize_part_descriptions              => { type => 'boolean', default => 'true' },
64
  normalize_vc_names                       => { type => 'boolean', default => 'true' },
65
  parts_image_css                          => { type => 'text', default => 'border:0;float:left;max-width:250px;margin-top:20px:margin-right:10px;margin-left:10px;' },
66
  parts_listing_image                      => { type => 'boolean', default => 'true' },
67
  parts_show_image                         => { type => 'boolean', default => 'true' },
68
  payments_changeable                      => { type => 'integer', default => '0', not_null => 1 },
69
  pdonumber                                => { type => 'text' },
70
  ponumber                                 => { type => 'text' },
71
  profit_determination                     => { type => 'text' },
72
  purchase_delivery_order_show_delete      => { type => 'boolean', default => 'true' },
73
  purchase_order_show_delete               => { type => 'boolean', default => 'true' },
74
  require_transaction_description_ps       => { type => 'boolean', default => 'false', not_null => 1 },
75
  requirement_spec_section_order_part_id   => { type => 'integer' },
76
  revtrans                                 => { type => 'boolean', default => 'false' },
77
  rfqnumber                                => { type => 'text' },
78
  rmanumber                                => { type => 'text' },
79
  sales_delivery_order_show_delete         => { type => 'boolean', default => 'true' },
80
  sales_order_show_delete                  => { type => 'boolean', default => 'true' },
81
  sdonumber                                => { type => 'text' },
82
  sepa_creditor_id                         => { type => 'text' },
83
  servicenumber                            => { type => 'text' },
84
  show_bestbefore                          => { type => 'boolean', default => 'false' },
85
  show_weight                              => { type => 'boolean', default => 'false', not_null => 1 },
86
  signature                                => { type => 'text' },
87
  sonumber                                 => { type => 'text' },
88
  sqnumber                                 => { type => 'text' },
89
  taxnumber                                => { type => 'text' },
90
  templates                                => { type => 'text' },
91
  transfer_default                         => { type => 'boolean', default => 'true' },
92
  transfer_default_ignore_onhand           => { type => 'boolean', default => 'false' },
93
  transfer_default_use_master_default_bin  => { type => 'boolean', default => 'false' },
94
  vendornumber                             => { type => 'text' },
95
  version                                  => { type => 'varchar', length => 8 },
96
  vertreter                                => { type => 'boolean', default => 'false' },
97
  warehouse_id                             => { type => 'integer' },
98
  warehouse_id_ignore_onhand               => { type => 'integer' },
99
  webdav                                   => { type => 'boolean', default => 'false' },
100
  webdav_documents                         => { type => 'boolean', default => 'false' },
101
  weightunit                               => { type => 'varchar', length => 5 },
98 102
);
99 103

  
100 104
__PACKAGE__->meta->primary_key_columns([ 'id' ]);
SL/Menu.pm
162 162
  return SL::Auth::evaluate_rights_ary($stack[0]);
163 163
}
164 164

  
165
sub parse_instance_conf_string {
166
  my ($self, $setting) = @_;
167
  return $::instance_conf->data->{$setting};
168
}
169

  
165 170
sub set_access {
166 171
  my $self = shift;
167 172

  
......
171 176
    my $entry = $self->{$key};
172 177

  
173 178
    $entry->{GRANTED}              = $entry->{ACCESS} ? $self->parse_access_string($key, $entry->{ACCESS}) : 1;
179
    $entry->{GRANTED}            &&= $self->parse_instance_conf_string($entry->{INSTANCE_CONF}) if $entry->{INSTANCE_CONF};
174 180
    $entry->{IS_MENU}              = $entry->{submenu} || ($key !~ m/--/);
175 181
    $entry->{NUM_VISIBLE_CHILDREN} = 0;
176 182

  
bin/mozilla/do.pl
85 85

  
86 86
  check_do_access();
87 87

  
88
  if (($::form->{type} =~ /purchase/) && !$::instance_conf->get_allow_new_purchase_invoice) {
89
    $::form->show_generic_error($::locale->text("You do not have the permissions to access this function."));
90
  }
91

  
88 92
  my $form     = $main::form;
89 93

  
90 94
  set_headings("add");
bin/mozilla/ir.pl
58 58

  
59 59
  $main::auth->assert('vendor_invoice_edit');
60 60

  
61
  if (!$::instance_conf->get_allow_new_purchase_invoice) {
62
    $::form->show_generic_error($::locale->text("You do not have the permissions to access this function."));
63
  }
64

  
61 65
  return $main::lxdebug->leave_sub() if (load_draft_maybe());
62 66

  
63 67
  $form->{title} = $locale->text('Record Vendor Invoice');
bin/mozilla/oe.pl
90 90
  $main::auth->assert($right);
91 91
}
92 92

  
93
sub check_oe_conversion_to_sales_invoice_allowed {
94
  return 1 if  $::form->{type} !~ m/^sales/;
95
  return 1 if ($::form->{type} =~ m/quotation/) && $::instance_conf->get_allow_sales_invoice_from_sales_quotation;
96
  return 1 if ($::form->{type} =~ m/order/)     && $::instance_conf->get_allow_sales_invoice_from_sales_order;
97

  
98
  $::form->show_generic_error($::locale->text("You do not have the permissions to access this function."));
99

  
100
  return 0;
101
}
102

  
93 103
sub set_headings {
94 104
  $main::lxdebug->enter_sub();
95 105

  
......
1313 1323
  my $locale   = $main::locale;
1314 1324

  
1315 1325
  check_oe_access();
1326
  check_oe_conversion_to_sales_invoice_allowed();
1316 1327
  $main::auth->assert($form->{type} eq 'purchase_order' || $form->{type} eq 'request_quotation' ? 'vendor_invoice_edit' : 'invoice_edit');
1317 1328

  
1318 1329
  $form->{old_salesman_id} = $form->{salesman_id};
locale/de/all
208 208
  'All units have either no or exactly one base unit of which they are multiples.' => 'Einheiten haben entweder keine oder genau eine Basiseinheit, von der sie ein Vielfaches sind.',
209 209
  'All users'                   => 'Alle BenutzerInnen',
210 210
  'Allow access'                => 'Zugriff erlauben',
211
  'Allow conversion from sales orders to sales invoices' => 'Umwandlung von Verkaufsaufträgen in Verkaufsrechnungen zulassen',
212
  'Allow conversion from sales quotations to sales invoices' => 'Umwandlung von Verkaufsangeboten in Verkaufsrechnungen zulassen',
213
  'Allow direct creation of new purchase delivery orders' => 'Direktes Anlegen neuer Einkaufslieferscheine zulassen',
214
  'Allow direct creation of new purchase invoices' => 'Direktes Anlegen neuer Einkaufsrechnungen zulassen',
211 215
  'Allow the following users access to my follow-ups:' => 'Erlaube den folgenden Benutzern Zugriff auf meine Wiedervorlagen:',
212 216
  'Alternatively you can create a new part which will then be selected.' => 'Sie können auch einen neuen Artikel anlegen, der dann automatisch ausgewählt wird.',
213 217
  'Amended Advance Turnover Tax Return' => 'Berichtigte Anmeldung',
......
1192 1196
  'If amounts differ more than "Maximal amount difference" (see settings), this item is marked as invalid.' => 'Weichen die Beträge mehr als die "maximale Betragsabweichung" (siehe Einstellungen) ab, so wird diese Position als ungültig markiert.',
1193 1197
  'If checked the taxkey will not be exported in the DATEV Export, but only IF chart taxkeys differ from general ledger taxkeys' => 'Falls angehakt wird der DATEV-Steuerschlüssel bei Buchungen auf dieses Konto nicht beim DATEV-Export mitexportiert, allerdings nur wenn zusätzlich der Konto-Steuerschlüssel vom Buchungs (Hauptbuch) Steuerschlüssel abweicht',
1194 1198
  'If configured this bin will be preselected for all new parts. Also this bin will be used as the master default bin, if default transfer out with master bin is activated.' => 'Falls konfiguriert, wird dieses Lager mit Lagerplatz für neu angelegte Waren vorausgewählt.',
1199
  'If disabled purchase delivery orders can only be created by conversion from existing requests for quotations and purchase orders.' => 'Falls deaktiviert, so können Einkaufslieferscheine nur durch Umwandlung aus bestehenden Preisanfragen und Lieferantenaufträgen angelegt werden.',
1200
  'If disabled purchase invoices can only be created by conversion from existing requests for quotations, purchase orders and purchase delivery orders.' => 'Falls deaktiviert, so können Einkaufsrechnungen nur durch Umwandlung aus bestehenden Preisanfragen, Lieferantenaufträgen und Einkaufslieferscheinen angelegt werden.',
1201
  'If disabled sales orders cannot be converted into sales invoices directly.' => 'Falls deaktiviert, so können Verkaufsangebote nicht direkt in Verkaufsrechnungen umgewandelt werden.',
1202
  'If disabled sales quotations cannot be converted into sales invoices directly.' => 'Falls deaktiviert, so können Verkaufsauträge nicht direkt in Verkaufsrechnungen umgewandelt werden.',
1195 1203
  'If enabled purchase and sales records cannot be saved if no transaction description has been entered.' => 'Wenn angeschaltet, so können Einkaufs- und Verkaufsbelege nicht gespeichert werden, solange keine Vorgangsbezeichnung eingegeben wurde.',
1196 1204
  'If missing then the start date will be used.' => 'Falls es fehlt, so wird die erste Rechnung für das Startdatum erzeugt.',
1197 1205
  'If the article type is set to \'mixed\' then a column called \'type\' must be present.' => 'Falls der Artikeltyp auf \'gemischt\' gestellt wird, muss eine Spalte namens \'type\' vorhanden sein.',
menus/erp.ini
214 214

  
215 215
[AP--Add Delivery Note]
216 216
ACCESS=purchase_delivery_order_edit
217
INSTANCE_CONF=allow_new_purchase_delivery_order
217 218
module=do.pl
218 219
action=add
219 220
type=purchase_delivery_order
220 221

  
221 222
[AP--Add Vendor Invoice]
222 223
ACCESS=vendor_invoice_edit
224
INSTANCE_CONF=allow_new_purchase_invoice
223 225
module=ir.pl
224 226
action=add
225 227
type=invoice
sql/Pg-upgrade2/defaults_sales_process_limitations.sql
1
-- @tag: defaults_sales_purchase_process_limitations
2
-- @description: Mandantenkonfiguration: Einschränkungen, welche Aktionen im Einkaufs-/Verkaufsprozess erlaubt sind
3
-- @depends: release_3_1_0
4
ALTER TABLE defaults
5
  ADD COLUMN allow_sales_invoice_from_sales_quotation BOOLEAN,
6
  ADD COLUMN allow_sales_invoice_from_sales_order     BOOLEAN,
7
  ADD COLUMN allow_new_purchase_delivery_order        BOOLEAN,
8
  ADD COLUMN allow_new_purchase_invoice               BOOLEAN;
9

  
10
UPDATE defaults
11
SET allow_sales_invoice_from_sales_quotation = TRUE,
12
    allow_sales_invoice_from_sales_order     = TRUE,
13
    allow_new_purchase_delivery_order        = TRUE,
14
    allow_new_purchase_invoice               = TRUE;
15

  
16
ALTER TABLE defaults
17
  ALTER COLUMN allow_sales_invoice_from_sales_quotation SET DEFAULT TRUE,
18
  ALTER COLUMN allow_sales_invoice_from_sales_quotation SET NOT NULL,
19

  
20
  ALTER COLUMN allow_sales_invoice_from_sales_order     SET DEFAULT TRUE,
21
  ALTER COLUMN allow_sales_invoice_from_sales_order     SET NOT NULL,
22

  
23
  ALTER COLUMN allow_new_purchase_delivery_order        SET DEFAULT TRUE,
24
  ALTER COLUMN allow_new_purchase_delivery_order        SET NOT NULL,
25

  
26
  ALTER COLUMN allow_new_purchase_invoice               SET DEFAULT TRUE,
27
  ALTER COLUMN allow_new_purchase_invoice               SET NOT NULL;
templates/webpages/client_config/_features.html
65 65
   <td>[% LxERP.t8('If enabled purchase and sales records cannot be saved if no transaction description has been entered.') %]</td>
66 66
  </tr>
67 67

  
68
  <tr>
69
   <td align="right">[% LxERP.t8('Allow conversion from sales quotations to sales invoices') %]</td>
70
   <td>[% L.yes_no_tag('defaults.allow_sales_invoice_from_sales_quotation', SELF.defaults.allow_sales_invoice_from_sales_quotation) %]</td>
71
   <td>[% LxERP.t8('If disabled sales quotations cannot be converted into sales invoices directly.') %]</td>
72
  </tr>
73

  
74
  <tr>
75
   <td align="right">[% LxERP.t8('Allow conversion from sales orders to sales invoices') %]</td>
76
   <td>[% L.yes_no_tag('defaults.allow_sales_invoice_from_sales_order', SELF.defaults.allow_sales_invoice_from_sales_order) %]</td>
77
   <td>[% LxERP.t8('If disabled sales orders cannot be converted into sales invoices directly.') %]</td>
78
  </tr>
79

  
80
  <tr>
81
   <td align="right">[% LxERP.t8('Allow direct creation of new purchase delivery orders') %]</td>
82
   <td>[% L.yes_no_tag('defaults.allow_new_purchase_delivery_order', SELF.defaults.allow_new_purchase_delivery_order) %]</td>
83
   <td>[% LxERP.t8('If disabled purchase delivery orders can only be created by conversion from existing requests for quotations and purchase orders.') %]</td>
84
  </tr>
85

  
86
  <tr>
87
   <td align="right">[% LxERP.t8('Allow direct creation of new purchase invoices') %]</td>
88
   <td>[% L.yes_no_tag('defaults.allow_new_purchase_invoice', SELF.defaults.allow_new_purchase_invoice) %]</td>
89
   <td>[% LxERP.t8('If disabled purchase invoices can only be created by conversion from existing requests for quotations, purchase orders and purchase delivery orders.') %]</td>
90
  </tr>
91

  
68 92
  <tr><td class="listheading" colspan="4">[% LxERP.t8("Requirement Specs") %]</td></tr>
69 93

  
70 94
  <tr>
templates/webpages/oe/form_footer.html
2 2
[%- USE HTML %]
3 3
[%- USE LxERP %]
4 4
[%- USE L %]
5
[%- IF is_req_quo || is_pur_ord %]
6
  [%- SET allow_invoice=1 %]
7
[%- ELSIF is_sales_quo && INSTANCE_CONF.get_allow_sales_invoice_from_sales_quotation %]
8
  [%- SET allow_invoice=1 %]
9
[%- ELSIF is_sales_ord && INSTANCE_CONF.get_allow_sales_invoice_from_sales_order %]
10
  [%- SET allow_invoice=1 %]
11
[%- ELSE %]
12
  [%- SET allow_invoice=0 %]
13
[%- END %]
5 14
  <tr>
6 15
    <td>
7 16
      <table width="100%">
......
157 166
    <input class="submit" type="submit" name="action_delivery_order" value="[% 'Delivery Order' | $T8 %]">
158 167
  [%- END %]
159 168

  
169
  [%- IF allow_invoice %]
160 170
  <input class="submit" type="submit" name="action_invoice" value="[% 'Invoice' | $T8 %]">
171
  [%- END %]
161 172

  
162 173
  [%- IF is_sales_ord || is_pur_ord %]
163 174
    <br>[% heading %] als neue Vorlage verwenden f&uuml;r<br>

Auch abrufbar als: Unified diff