-
- $form->{"javascript"} .= qq|<script type="text/javascript" src="js/show_form_details.js"></script>|;
- $form->{"javascript"} .= qq|<script type="text/javascript" src="js/common.js"></script>|;
-
- $jsscript .=
- $form->write_trigger(\%myconfig, 2,
- "orddate", "BL", "trigger_orddate",
- "quodate", "BL", "trigger_quodate");
-
- $form->header;
- $onload = qq|focus()|;
- $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|;
- $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|;
- print qq|
-<body onLoad="$onload">
-
-<form method=post action=$form->{script}>
-
-<input type=hidden name=id value=$form->{id}>
-<input type=hidden name=title value="$form->{title}">
-<input type=hidden name=vc value="vendor">
-<input type=hidden name=type value=$form->{type}>
-<input type=hidden name=level value=$form->{level}>
-
-<input type=hidden name=creditlimit value=$form->{creditlimit}>
-<input type=hidden name=creditremaining value=$form->{creditremaining}>
-
-<input type=hidden name=closedto value=$form->{closedto}>
-<input type=hidden name=locked value=$form->{locked}>
-
-<input type=hidden name=shipped value=$form->{shipped}>
-<input type=hidden name=storno value=$form->{storno}>
-<input type=hidden name=storno_id value=$form->{storno_id}>
-
-| . ($form->{saved_message} ? qq|<p>$form->{saved_message}</p>| : "") . qq|
-
-<table width=100%>
- <tr class=listtop>
- <th class=listtop>$form->{title}</th>
- </tr>
- <tr height="5"></tr>
- <tr>
- <td>
- <table width=100%>
- <tr valign=top>
- <td>
- <table>
- <tr>
- <th align=right nowrap>| . $locale->text('Vendor') . qq|</th>
- <td colspan=3>$vendor</td>
-
- <th align=richt nowrap>|
- . $locale->text('Contact Person') . qq|</th>
- <td colspan=3>$contact</td>
-
- <input type=hidden name=vendor_id value=$form->{vendor_id}>
- <input type=hidden name=oldvendor value="$form->{oldvendor}">
-
- </tr>
- <tr>
- <td></td>
- <td colspan=3>
- <table>
- <tr>
- <th nowrap>| . $locale->text('Credit Limit') . qq|</th>
- <td>$form->{creditlimit}</td>
- <td width=20%></td>
- <th nowrap>| . $locale->text('Remaining') . qq|</th>
- <td class="plus$n">$form->{creditremaining}</td>
- </tr>
- </table>
- </td>
- <tr>
- <th align=right>| . $locale->text('Record in') . qq|</th>
- <td colspan=3><select name=AP>$form->{selectAP}</select></td>
- <input type=hidden name=selectAP value="$form->{selectAP}">
- </tr>
- $taxzone
- $department
- <tr>
- <th align=right nowrap>| . $locale->text('Currency') . qq|</th>
- <td><select name=currency>$form->{selectcurrency}</select></td>
- $exchangerate
- </tr>
- </table>
- </td>
- <td align=right>
- <table>
- <tr>
- <th align=right nowrap>| . $locale->text('Invoice Number') . qq|</th>
- <td><input name=invnumber size=11 value="$form->{invnumber}"></td>
- </tr>
- <tr>
- <th align=right nowrap>| . $locale->text('Invoice Date') . qq|</th>
- $button1
- </tr>
- <tr>
- <th align=right nowrap>| . $locale->text('Due Date') . qq|</th>
- $button2
- </tr>
- <tr>
- <th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
- <td><input name=ordnumber size=11 value="$form->{ordnumber}"></td>
-<input type=hidden name=quonumber value="$form->{quonumber}">
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Order Date') . qq|</th>
- <td><input name="orddate" id="orddate" size="11" title="$myconfig{dateformat}" value="| . Q($form->{orddate}) . qq|" onBlur=\"check_right_date_format(this)\"></td>
- <td><input type="button" name="b_orddate" id="trigger_orddate" value="?"></td>
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Quotation Date') . qq|</th>
- <td><input name="quodate" id="quodate" size="11" title="$myconfig{dateformat}" value="| . Q($form->{quodate}) . qq|" onBlur=\"check_right_date_format(this)\"></td>
- <td><input type="button" name="b_quodate" id="trigger_quodate" value="?"></td>
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Project Number') . qq|</th>
- <td>$globalprojectnumber</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
-
-$jsscript
-
-<input type=hidden name=selectcurrency value="$form->{selectcurrency}">
-<input type=hidden name=defaultcurrency value=$form->{defaultcurrency}>
-<input type=hidden name=fxgain_accno value=$form->{fxgain_accno}>
-<input type=hidden name=fxloss_accno value=$form->{fxloss_accno}>
-<input type=hidden name=webdav value=$webdav>
-
-<input type=hidden name=taxpart value="$form->{taxpart}">
-<input type=hidden name=taxservice value="$form->{taxservice}">
-
-<input type=hidden name=taxaccounts value="$form->{taxaccounts}">
-|;
-
- foreach $item (split / /, $form->{taxaccounts}) {
- print qq|
-<input type=hidden name="${item}_rate" value=$form->{"${item}_rate"}>
-<input type=hidden name="${item}_description" value="$form->{"${item}_description"}">
-|;
+ for my $bar ($::request->layout->get('actionbar')) {
+ $bar->add(
+ action => [
+ t8('Update'),
+ submit => [ '#form', { action => "update" } ],
+ id => 'update_button',
+ accesskey => 'enter',
+ disabled => !$may_edit_create ? t8('You must not change this invoice.') : undef,
+ ],
+
+ combobox => [
+ action => [
+ t8('Post'),
+ submit => [ '#form', { action => "post" } ],
+ checks => [ 'kivi.validate_form' ],
+ checks => [ 'kivi.validate_form', 'kivi.AP.check_fields_before_posting', 'kivi.AP.check_duplicate_invnumber' ],
+ disabled => !$may_edit_create ? t8('You must not change this invoice.')
+ : $form->{locked} ? t8('The billing period has already been locked.')
+ : $form->{storno} ? t8('A canceled invoice cannot be posted.')
+ : ($form->{id} && $change_never) ? t8('Changing invoices has been disabled in the configuration.')
+ : ($form->{id} && $change_on_same_day_only) ? t8('Invoices can only be changed on the day they are posted.')
+ : $is_linked_bank_transaction ? t8('This transaction is linked with a bank transaction. Please undo and redo the bank transaction booking if needed.')
+ : undef,
+ ],
+ action => [
+ t8('Post Payment'),
+ submit => [ '#form', { action => "post_payment" } ],
+ checks => [ 'kivi.validate_form' ],
+ disabled => !$may_edit_create ? t8('You must not change this invoice.')
+ : !$form->{id} ? t8('This invoice has not been posted yet.')
+ : $is_linked_bank_transaction ? t8('This transaction is linked with a bank transaction. Please undo and redo the bank transaction booking if needed.')
+ : undef,
+ ],
+ action => [
+ t8('Mark as paid'),
+ submit => [ '#form', { action => "mark_as_paid" } ],
+ checks => [ 'kivi.validate_form' ],
+ confirm => t8('This will remove the invoice from showing as unpaid even if the unpaid amount does not match the amount. Proceed?'),
+ disabled => !$may_edit_create ? t8('You must not change this invoice.')
+ : !$form->{id} ? t8('This invoice has not been posted yet.')
+ : undef,
+ only_if => $::instance_conf->get_ir_show_mark_as_paid,
+ ],
+ ], # end of combobox "Post"
+
+ combobox => [
+ action => [ t8('Storno'),
+ submit => [ '#form', { action => "storno" } ],
+ checks => [ 'kivi.validate_form' ],
+ confirm => t8('Do you really want to cancel this invoice?'),
+ disabled => !$may_edit_create ? t8('You must not change this invoice.')
+ : !$form->{id} ? t8('This invoice has not been posted yet.')
+ : $has_sepa_exports ? t8('This invoice has been linked with a sepa export, undo this first.')
+ : !$payments_balanced ? t8('Cancelling is disallowed. Either undo or balance the current payments until the open amount matches the invoice amount')
+ : undef,
+ ],
+ action => [ t8('Delete'),
+ submit => [ '#form', { action => "delete" } ],
+ checks => [ 'kivi.validate_form' ],
+ confirm => t8('Do you really want to delete this object?'),
+ disabled => !$may_edit_create ? t8('You must not change this invoice.')
+ : !$form->{id} ? t8('This invoice has not been posted yet.')
+ : $form->{locked} ? t8('The billing period has already been locked.')
+ : $change_never ? t8('Changing invoices has been disabled in the configuration.')
+ : $change_on_same_day_only ? t8('Invoices can only be changed on the day they are posted.')
+ : $has_sepa_exports ? t8('This invoice has been linked with a sepa export, undo this first.')
+ : $has_storno ? t8('Can only delete the "Storno zu" part of the cancellation pair.')
+ : $is_linked_bank_transaction ? t8('This transaction is linked with a bank transaction. Please undo and redo the bank transaction booking if needed.')
+ : undef,
+ ],
+ ], # end of combobox "Storno"
+
+ 'separator',
+
+ combobox => [
+ action => [ t8('Workflow') ],
+ action => [
+ t8('Use As New'),
+ submit => [ '#form', { action => "use_as_new" } ],
+ checks => [ 'kivi.validate_form' ],
+ disabled => !$may_edit_create ? t8('You must not change this invoice.')
+ : !$form->{id} ? t8('This invoice has not been posted yet.')
+ : undef,
+ ],
+ ], # end of combobox "Workflow"
+
+ combobox => [
+ action => [ t8('more') ],
+ action => [
+ t8('History'),
+ call => [ 'set_history_window', $::form->{id} * 1, 'id', 'glid' ],
+ disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
+ ],
+ action => [
+ t8('Follow-Up'),
+ call => [ 'follow_up_window' ],
+ disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
+ ],
+ action => [
+ t8('Drafts'),
+ call => [ 'kivi.Draft.popup', 'ir', 'invoice', $::form->{draft_id}, $::form->{draft_description} ],
+ disabled => !$may_edit_create ? t8('You must not change this invoice.')
+ : $form->{id} ? t8('This invoice has already been posted.')
+ : $form->{locked} ? t8('The billing period has already been locked.')
+ : undef,
+ ],
+ ], # end of combobox "more"
+ );