Revision 3b31aeed
Von Moritz Bunkus vor etwa 2 Jahren hinzugefügt
SL/Controller/Order.pm | ||
---|---|---|
sub action_save_and_delivery_order {
|
||
my ($self) = @_;
|
||
|
||
my %params;
|
||
|
||
if ($::form->{convert_to_purchase_delivery_order_selected_items_only}) {
|
||
$params{only_items} = join(',', @{ $::form->{purchase_delivery_order_item_selection_indexes} || [] });
|
||
}
|
||
|
||
$self->save_and_redirect_to(
|
||
controller => 'oe.pl',
|
||
action => 'oe_delivery_order_from_order',
|
||
%params,
|
||
);
|
||
}
|
||
|
||
... | ... | |
only_if => (any { $self->type eq $_ } (sales_order_type(), purchase_order_type())),
|
||
disabled => !$may_edit_create ? t8('You do not have the permissions to access this function.') : undef,
|
||
],
|
||
action => [
|
||
t8('Save and Delivery Order with item selection'),
|
||
call => [ 'kivi.Order.convert_to_purchase_delivery_order_select_items',
|
||
{ action => 'save_and_delivery_order',
|
||
warn_on_duplicates => $::instance_conf->get_order_warn_duplicate_parts,
|
||
warn_on_reqdate => $::instance_conf->get_order_warn_no_deliverydate },
|
||
],
|
||
checks => [ @req_trans_cost_art, @req_cusordnumber ],
|
||
only_if => (any { $self->type eq $_ } (purchase_order_type())),
|
||
disabled => !$may_edit_create ? t8('You do not have the permissions to access this function.') : undef,
|
||
],
|
||
action => [
|
||
t8('Save and Supplier Delivery Order'),
|
||
call => [ 'kivi.Order.save', { action => 'save_and_supplier_delivery_order',
|
bin/mozilla/oe.pl | ||
---|---|---|
return if !$::form->{id};
|
||
|
||
my $order = SL::DB::Order->new(id => $::form->{id})->load;
|
||
|
||
if (exists $::form->{only_items}) {
|
||
my @wanted_indexes = sort { $a <=> $b } map { $_ - 1 } split(",", $::form->{only_items} // "");
|
||
my @items = $order->items;
|
||
@items = @items[@wanted_indexes];
|
||
$order->items(\@items);
|
||
}
|
||
|
||
$order->flatten_to_form($::form, format_amounts => 1);
|
||
$::form->{taxincluded_changed_by_user} = 1;
|
||
|
js/kivi.Order.js | ||
---|---|---|
data.push({ name: 'action', value: 'Order/' + action });
|
||
|
||
if (back_to_caller) data.push({ name: 'back_to_caller', value: '1' });
|
||
if (params.convert_to_purchase_delivery_order_selected_items_only) data.push({ name: 'convert_to_purchase_delivery_order_selected_items_only', value: '1' });
|
||
|
||
$.post("controller.pl", data, kivi.eval_json_result);
|
||
};
|
||
... | ... | |
window.open("controller.pl?action=CustomerVendor/edit&db=" + encodeURIComponent(db) + "&id=" + encodeURIComponent($(id_selector).val()), '_blank');
|
||
};
|
||
|
||
ns.convert_to_purchase_delivery_order_select_items = function(params) {
|
||
$("#purchase_delivery_order_item_selection_checkall").attr("checked", "checked");
|
||
|
||
var $src = $("#row_table_id");
|
||
var $dest = $("#convert_to_purchase_delivery_order_item_selection_items");
|
||
|
||
$dest.data("params", params);
|
||
$dest.empty();
|
||
|
||
$("#row_table_id tbody>tr:first-child").each(function(idx, tr) {
|
||
const $row = $(tr);
|
||
const partnumber = $row.find("div[name=partnumber]").text().replaceAll(" ", "");
|
||
const description = $row.find("input[name='order.orderitems[].description']").val();
|
||
const qty = $row.find("input[name='order.orderitems[].qty_as_number']").val();
|
||
const unit = $row.find("select[name='order.orderitems[].unit']").val();
|
||
var html =
|
||
"<tr class=\"listrow\">" +
|
||
" <td><input type=\"checkbox\" name=\"purchase_delivery_order_item_selection_indexes[+]\" class=\"purchase_delivery_order_item_selection_checkall\" value=\"" + (idx + 1) + "\" checked=\"checked\"></td>" +
|
||
" <td align=\"right\" class=\"numeric\">" + (idx + 1) + "</td>" +
|
||
" <td>" + partnumber + "</td>" +
|
||
" <td>" + description + "</td>" +
|
||
" <td align=\"right\" class=\"numeric\">" + qty + "</td>" +
|
||
" <td>" + unit + "</td>" +
|
||
"</tr>";
|
||
|
||
$dest.append(html);
|
||
});
|
||
|
||
kivi.popup_dialog({
|
||
id: "convert_to_purchase_delivery_order_item_selection",
|
||
dialog: {
|
||
title: kivi.t8("Select items for delivery order"),
|
||
}
|
||
});
|
||
};
|
||
|
||
ns.convert_to_purchase_delivery_order = function() {
|
||
var $dlg = $("#convert_to_purchase_delivery_order_item_selection");
|
||
$dlg.dialog('close');
|
||
|
||
var params = $("#convert_to_purchase_delivery_order_item_selection_items").data("params");
|
||
params.convert_to_purchase_delivery_order_selected_items_only = 1;
|
||
|
||
$dlg.remove();
|
||
$('#order_form').append($dlg);
|
||
|
||
kivi.Order.save(params);
|
||
};
|
||
});
|
||
|
||
$(function() {
|
js/locale/de.js | ||
---|---|---|
"Save and keep open":"Speichern und geöffnet lassen",
|
||
"Section/Function block actions":"Abschnitts-/Funktionsblockaktionen",
|
||
"Select from preset":"Aus Voreinstellung wählen",
|
||
"Select items for delivery order":"Positionen für Lieferschein auswählen",
|
||
"Select template to paste":"Einzufügende Vorlage auswählen",
|
||
"Send email":"E-Mail verschicken",
|
||
"Sep":"Sep",
|
locale/de/all | ||
---|---|---|
'Create bank transfer via SEPA XML' => 'Überweisung via SEPA XML erzeugen',
|
||
'Create customers and vendors. Edit all vendors. Edit all customers' => 'Kunden und Lieferanten erfassen. Alle Lieferanten bearbeiten. Alle Kunden bearbeiten',
|
||
'Create customers and vendors. Edit all vendors. Edit only customers where salesman equals employee (login)' => 'Kunden und Lieferanten erfassen. Alle Lieferanten bearbeiten. Nur Kunden bearbeiten bei denen der Verkäufer gleich Bearbeiter (login) ist',
|
||
'Create delivery order' => 'Lieferschein erstellen',
|
||
'Create first invoice on' => 'Erste Rechnung erzeugen am',
|
||
'Create invoice' => 'Buchung erstellen',
|
||
'Create invoice?' => 'Rechnung erstellen?',
|
||
... | ... | |
'Save and Close' => 'Speichern und schließen',
|
||
'Save and Credit Note' => 'Speichern und Gutschrift erfassen',
|
||
'Save and Delivery Order' => 'Speichern und Lieferschein',
|
||
'Save and Delivery Order with item selection' => 'Speichern und Lieferschein mit Positionsauswahl',
|
||
'Save and E-mail' => 'Speichern und E-Mail',
|
||
'Save and Final Invoice' => 'Speichern und Schlussrechnung',
|
||
'Save and Further Invoice for Advance Payment' => 'Speichern und weitere Anzahlungsrechnung',
|
||
... | ... | |
'Select file to upload' => 'Datei zum Hochladen auswählen',
|
||
'Select from one of the items below' => 'Wählen Sie einen der untenstehenden Einträge',
|
||
'Select from preset' => 'Aus Voreinstellung wählen',
|
||
'Select items for delivery order' => 'Positionen für Lieferschein auswählen',
|
||
'Select postscript or PDF!' => 'Postscript oder PDF auswählen!',
|
||
'Select tax office...' => 'Finanzamt auswählen...',
|
||
'Select template to paste' => 'Einzufügende Vorlage auswählen',
|
templates/design40_webpages/order/form.html | ||
---|---|---|
</div>
|
||
|
||
</div><!-- /.tabwidget -->
|
||
|
||
[% IF SELF.order.id && (FORM.type == 'purchase_order') %]
|
||
[%- PROCESS 'order/tabs/_purchase_delivery_order_item_selection.html' %]
|
||
[% END %]
|
||
</form>
|
templates/design40_webpages/order/tabs/_purchase_delivery_order_item_selection.html | ||
---|---|---|
[%- USE LxERP -%][%- USE L -%]
|
||
<div id="convert_to_purchase_delivery_order_item_selection">
|
||
<div class="wrapper">
|
||
[% L.button_tag("kivi.Order.convert_to_purchase_delivery_order()", LxERP.t8("Create delivery order")) %]
|
||
</div>
|
||
|
||
<div class="wrapper">
|
||
<table class="tbl-list">
|
||
<thead>
|
||
<tr class="listheading">
|
||
<th>[% L.checkbox_tag("purchase_delivery_order_item_selection_checkall", checkall="input.purchase_delivery_order_item_selection_checkall") %]</th>
|
||
<th>[% LxERP.t8("Position") %]</th>
|
||
<th>[% LxERP.t8("Partnumber") %]</th>
|
||
<th>[% LxERP.t8("Description") %]</th>
|
||
<th>[% LxERP.t8("Qty") %]</th>
|
||
<th>[% LxERP.t8("Unit") %]</th>
|
||
</tr>
|
||
</thead>
|
||
|
||
<tbody id="convert_to_purchase_delivery_order_item_selection_items" class="row_entry listrow">
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
templates/webpages/order/form.html | ||
---|---|---|
|
||
</div>
|
||
|
||
[% IF SELF.order.id && (FORM.type == 'purchase_order') %]
|
||
[%- PROCESS 'order/tabs/_purchase_delivery_order_item_selection.html' %]
|
||
[% END %]
|
||
</form>
|
templates/webpages/order/tabs/_purchase_delivery_order_item_selection.html | ||
---|---|---|
[%- USE LxERP -%][%- USE L -%]
|
||
<div id="convert_to_purchase_delivery_order_item_selection">
|
||
<div>
|
||
[% L.button_tag("kivi.Order.convert_to_purchase_delivery_order()", LxERP.t8("Create delivery order")) %]
|
||
</div>
|
||
|
||
<div>
|
||
<table>
|
||
<thead>
|
||
<tr class="listheading">
|
||
<th>[% L.checkbox_tag("purchase_delivery_order_item_selection_checkall", checkall="input.purchase_delivery_order_item_selection_checkall") %]</th>
|
||
<th>[% LxERP.t8("Position") %]</th>
|
||
<th>[% LxERP.t8("Partnumber") %]</th>
|
||
<th>[% LxERP.t8("Description") %]</th>
|
||
<th>[% LxERP.t8("Qty") %]</th>
|
||
<th>[% LxERP.t8("Unit") %]</th>
|
||
</tr>
|
||
</thead>
|
||
|
||
<tbody id="convert_to_purchase_delivery_order_item_selection_items">
|
||
<tr class="listrow">
|
||
<td>[% L.checkbox_tag("purchase_delivery_order_item_selection_indexes[+]", class="purchase_delivery_order_item_selection_checkall", value="42", checked="checked") %]</td>
|
||
<td>1</td>
|
||
<td align="right">4</td>
|
||
<td>Moo Cow Chunky Bacon</td>
|
||
<td align="right">17,5</td>
|
||
<td>Kuh</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
Auch abrufbar als: Unified diff
Lieferantenauftrag→Einkaufslieferschein: optional nur mit ausgewählten Positionen