Revision 96c33451
Von Moritz Bunkus vor etwa 8 Jahren hinzugefügt
SL/Controller/BankTransaction.pm | ||
---|---|---|
$bank_transactions = [ sort { $a->{agreement} <=> $b->{agreement} } @{ $bank_transactions } ] if $::form->{sort_by} eq 'proposal' and $::form->{sort_dir} == 1;
|
||
$bank_transactions = [ sort { $b->{agreement} <=> $a->{agreement} } @{ $bank_transactions } ] if $::form->{sort_by} eq 'proposal' and $::form->{sort_dir} == 0;
|
||
|
||
|
||
$::request->layout->add_javascripts("kivi.BankTransaction.js");
|
||
$self->render('bank_transactions/list',
|
||
title => t8('Bank transactions MT940'),
|
||
BANK_TRANSACTIONS => $bank_transactions,
|
||
... | ... | |
value_key => 'payment_type',
|
||
title_key => 'display' )
|
||
if @select_options;
|
||
$html .= '<a href=# onclick="delete_invoice(' . $::form->{bt_id} . ',' . $::form->{prop_id} . ');">x</a>';
|
||
$html .= '<a href=# onclick="kivi.BankTransaction.delete_invoice(' . $::form->{bt_id} . ',' . $::form->{prop_id} . ');">x</a>';
|
||
$html = SL::Presenter->html_tag('div', $html, id => $::form->{bt_id} . '.' . $::form->{prop_id});
|
||
|
||
$self->render(\ SL::JSON::to_json( { 'html' => $html } ), { layout => 0, type => 'json', process => 0 });
|
js/kivi.BankTransaction.js | ||
---|---|---|
namespace('kivi.BankTransaction', function(ns) {
|
||
"use strict";
|
||
|
||
ns.assign_invoice = function(bank_transaction_id) {
|
||
kivi.popup_dialog({
|
||
url: 'controller.pl?action=BankTransaction/assign_invoice',
|
||
data: '&bt_id=' + bank_transaction_id,
|
||
type: 'POST',
|
||
id: 'assign_invoice_window',
|
||
dialog: { title: kivi.t8('Assign invoice') }
|
||
});
|
||
return true;
|
||
};
|
||
|
||
ns.add_invoices = function(bank_transaction_id, proposal_id) {
|
||
$('[name=' + proposal_id + ']').remove();
|
||
|
||
$.ajax({
|
||
url: 'controller.pl?action=BankTransaction/ajax_payment_suggestion&bt_id=' + bank_transaction_id + '&prop_id=' + proposal_id,
|
||
success: function(data) {
|
||
$('#assigned_invoices_' + bank_transaction_id).append(data.html);
|
||
}
|
||
});
|
||
};
|
||
|
||
ns.delete_invoice = function(bank_transaction_id, proposal_id) {
|
||
$( "#" + bank_transaction_id + "\\." + proposal_id ).remove();
|
||
};
|
||
|
||
ns.create_invoice = function(bank_transaction_id) {
|
||
kivi.popup_dialog({
|
||
url: 'controller.pl?action=BankTransaction/create_invoice',
|
||
data: '&bt_id=' + bank_transaction_id + "&filter.bank_account=" + $('#filter_bankaccount').val() + '&filter.fromdate=' + $('#filter_fromdate').val() + '&filter.todate=' + $('#filter_todate').val(),
|
||
type: 'POST',
|
||
id: 'create_invoice_window',
|
||
dialog: { title: kivi.t8('Create invoice') }
|
||
});
|
||
return true;
|
||
};
|
||
|
||
|
||
ns.filter_invoices = function() {
|
||
var url="controller.pl?action=BankTransaction/ajax_add_list&" + $("#assign_invoice_window form").serialize();
|
||
$.ajax({
|
||
url: url,
|
||
success: function(data) {
|
||
$("#record_list_filtered_list").html(data.html);
|
||
}
|
||
});
|
||
}
|
||
|
||
ns.add_selected_invoices = function() {
|
||
var bank_transaction_id = $("#assign_invoice_window_form").data("bank-transaction-id");
|
||
var url ="controller.pl?action=BankTransaction/ajax_accept_invoices&bt_id=" + bank_transaction_id + '&' + $("#assign_invoice_window form").serialize();
|
||
|
||
$.ajax({
|
||
url: url,
|
||
success: function(new_html) {
|
||
$('#assigned_invoices_' + bank_transaction_id).append(new_html);
|
||
$('#assign_invoice_window').dialog('close');
|
||
}
|
||
});
|
||
}
|
||
|
||
ns.init_list = function(ui_tab) {
|
||
$('#check_all').checkall('INPUT[name^="proposal_ids"]');
|
||
$('.sort_link').each(function() {
|
||
var _href = $(this).attr("href");
|
||
$(this).attr("href", _href + "&filter.fromdate=" + $('#filter_fromdate').val() + "&filter.todate=" + $('#filter_todate').val());
|
||
});
|
||
|
||
$.cookie('jquery_ui_tab_bt_tabs', ui_tab);
|
||
};
|
||
});
|
templates/webpages/bank_transactions/assign_invoice.html | ||
---|---|---|
|
||
[% SET debug = 0 %]
|
||
|
||
<form method="post" action="javascript:filter_invoices();" id="assign_invoice_window_form">
|
||
<form method="post" action="javascript:kivi.BankTransaction.filter_invoices();" id="assign_invoice_window_form" data-bank-transaction-id="[% HTML.escape(SELF.transaction.id) %]">
|
||
<b>[%- LxERP.t8("Bank transaction") %]:</b>
|
||
<table>
|
||
<tr class="listheading">
|
||
... | ... | |
|
||
<p>
|
||
[% L.submit_tag('', LxERP.t8("Search")) %]
|
||
[% L.button_tag('add_selected_invoices()', LxERP.t8("Add invoices"), id='add_selected_record_links_button') %]
|
||
[% L.button_tag('kivi.BankTransaction.add_selected_invoices()', LxERP.t8("Add invoices"), id='add_selected_record_links_button') %]
|
||
[% L.button_tag('$("#assign_invoice_window_form").resetForm()', LxERP.t8('Reset')) %]
|
||
<a href="#" onclick="$('#assign_invoice_window').dialog('close');">[% LxERP.t8("Cancel") %]</a>
|
||
</p>
|
||
... | ... | |
|
||
<script type="text/javascript">
|
||
<!--
|
||
|
||
function filter_invoices() {
|
||
var url="controller.pl?action=BankTransaction/ajax_add_list&" + $("#assign_invoice_window form").serialize();
|
||
$.ajax({
|
||
url: url,
|
||
success: function(new_data) {
|
||
$("#record_list_filtered_list").html(new_data['html']);
|
||
}
|
||
});
|
||
}
|
||
|
||
function add_selected_invoices() {
|
||
var url="controller.pl?action=BankTransaction/ajax_accept_invoices&" + 'bt_id=[% SELF.transaction.id %]&' + $("#assign_invoice_window form").serialize();
|
||
$.ajax({
|
||
url: url,
|
||
success: function(new_html) {
|
||
var invoices = document.getElementById('assigned_invoices_[% SELF.transaction.id %]');
|
||
if (invoices.innerHTML == '') {
|
||
invoices.innerHTML = new_html;
|
||
} else {
|
||
invoices.innerHTML += '<br />' + new_html;
|
||
}
|
||
$('#assign_invoice_window').dialog('close');
|
||
}
|
||
});
|
||
}
|
||
|
||
$(function() {
|
||
$('#invnumber').focus();
|
||
});
|
templates/webpages/bank_transactions/invoices.html | ||
---|---|---|
[% L.hidden_tag('invoice_ids.' _ bt_id _'[]', invoice.id) %]
|
||
[% 'Invno.' | $T8 %]: [% invoice.invnumber %]
|
||
[% 'Open amount' | $T8 %]: [% LxERP.format_amount(invoice.open_amount, 2) %]
|
||
<a href=# onclick="delete_invoice([% bt_id %], [% invoice.id %])">x</a>
|
||
<a href=# onclick="kivi.BankTransaction.delete_invoice([% bt_id %], [% invoice.id %])">x</a>
|
||
</div>
|
||
[% END %]
|
templates/webpages/bank_transactions/list.html | ||
---|---|---|
<p>
|
||
[% IF FORM.filter.fromdate %] [% 'From' | $T8 %] [% FORM.filter.fromdate %] [% END %]
|
||
[% IF FORM.filter.todate %] [% 'to (date)' | $T8 %] [% FORM.filter.todate %][% END %]
|
||
[% L.hidden_tag("filter_bankaccount", FORM.filter.bankaccount) %]
|
||
[% L.hidden_tag("filter_fromdate", FORM.filter.fromdate) %]
|
||
[% L.hidden_tag("filter_todate", FORM.filter.todate) %]
|
||
</p>
|
||
|
||
<div id="bt_tabs" class="tabwidget">
|
||
... | ... | |
|
||
<script type="text/javascript">
|
||
<!--
|
||
|
||
$(function() {
|
||
$('#check_all').checkall('INPUT[name^="proposal_ids"]');
|
||
kivi.BankTransaction.init_list([% ui_tab %]);
|
||
});
|
||
|
||
$(function() {
|
||
$('.sort_link').each(function() {
|
||
var _href = $(this).attr("href");
|
||
$(this).attr("href", _href + "&filter.fromdate=" + "[% FORM.filter.fromdate %]" + "&filter.todate=" + "[% FORM.filter.todate %]");
|
||
});
|
||
});
|
||
|
||
function assign_invoice(bt_id) {
|
||
kivi.popup_dialog({
|
||
url: 'controller.pl?action=BankTransaction/assign_invoice',
|
||
data: '&bt_id=' + bt_id,
|
||
type: 'POST',
|
||
id: 'assign_invoice_window',
|
||
dialog: { title: kivi.t8('Assign invoice') }
|
||
});
|
||
return true;
|
||
}
|
||
|
||
function add_invoices(bt_id, prop_id, prop_invnumber) {
|
||
// prop_id is a proposed invoice_id
|
||
// remove the added invoice from all the other suggestions
|
||
var number_of_elements = document.getElementsByName(prop_id).length;
|
||
for( var i = 0; i < number_of_elements; i++ ) {
|
||
var node = document.getElementsByName(prop_id)[0];
|
||
node.parentNode.removeChild(node);
|
||
}
|
||
var invoices = document.getElementById('assigned_invoices_' + bt_id);
|
||
|
||
$.ajax({
|
||
url: 'controller.pl?action=BankTransaction/ajax_payment_suggestion&bt_id=' + bt_id + '&prop_id=' + prop_id,
|
||
success: function(data) {
|
||
invoices.innerHTML += data.html;
|
||
}
|
||
});
|
||
}
|
||
|
||
function delete_invoice(bt_id, prop_id) {
|
||
$( "#" + bt_id + "\\." + prop_id ).remove();
|
||
}
|
||
|
||
function create_invoice(bt_id) {
|
||
kivi.popup_dialog({
|
||
url: 'controller.pl?action=BankTransaction/create_invoice',
|
||
data: '&bt_id=' + bt_id + "&filter.bank_account=[% FORM.filter.bank_account %]&filter.todate=[% FORM.filter.todate %]&filter.fromdate=[% FORM.filter.fromdate %]",
|
||
type: 'POST',
|
||
id: 'create_invoice_window',
|
||
dialog: { title: kivi.t8('Create invoice') }
|
||
});
|
||
return true;
|
||
}
|
||
|
||
$.cookie('jquery_ui_tab_bt_tabs', [% ui_tab %] );
|
||
//-->
|
||
</script>
|
templates/webpages/bank_transactions/tabs/all.html | ||
---|---|---|
<tbody>
|
||
[%- FOREACH bt = BANK_TRANSACTIONS %]
|
||
<tr class="listrow" id="bt_id_[% bt.id %]">
|
||
<td><a href=# onclick="assign_invoice('[% bt.id %]'); return false;">[% 'Assign invoice' | $T8 %]</a></td>
|
||
<td><a href=# onclick="create_invoice('[% bt.id %]'); return false;">[% 'Create invoice' | $T8 %]</a></td>
|
||
<td><a href=# onclick="kivi.BankTransaction.assign_invoice('[% bt.id %]'); return false;">[% 'Assign invoice' | $T8 %]</a></td>
|
||
<td><a href=# onclick="kivi.BankTransaction.create_invoice('[% bt.id %]'); return false;">[% 'Create invoice' | $T8 %]</a></td>
|
||
<td id="assigned_invoices_[% bt.id %]" nowrap></td>
|
||
[% IF debug %]
|
||
<td class="tooltipster-html" title="[% FOREACH match = bt.rule_matches %] [% match %]<br> [% END %]">[% bt.agreement %]</td>
|
||
... | ... | |
<td>
|
||
[% FOREACH prop = bt.proposals %]
|
||
<div name='[% prop.id %]'>
|
||
<a href=# onclick="add_invoices('[% bt.id %]', '[% prop.id %]', '[% HTML.escape(prop.invnumber) %]');"
|
||
<a href=# onclick="kivi.BankTransaction.add_invoices('[% bt.id %]', '[% prop.id %]');"
|
||
title="<table><tr><th></th><th>[% 'Suggested invoice' | $T8 %][% IF !prop.is_sales %] ([% 'AP' | $T8 %])[% END %]</th><th>[% 'Bank transaction' | $T8 %]</th></tr><tr><th>[% 'Amount' | $T8 %]</th><td>[% prop.realamount %] ([% 'open' | $T8 %]: [% LxERP.format_amount(prop.open_amount, 2) %])</td><td>[% LxERP.format_amount(bt.amount, 2) %]</td></tr>[% IF prop.skonto_date %]<tr><th>[% 'Payment terms' | $T8 %]</th><td>[% LxERP.format_amount(prop.amount_less_skonto, 2) %] [% 'until' | $T8 %] [% HTML.escape(prop.skonto_date.to_kivitendo) %] ([% prop.percent_skonto * 100 %] %)</td><td></td></tr>[% END %]<tr><th>[% 'Customer/Vendor' | $T8 %]</th><td>[% HTML.escape(prop.customer.displayable_name) %][% HTML.escape(prop.vendor.displayable_name) %]</td><td>[% HTML.escape(bt.remote_name) %]</td></tr><tr><th>[% 'Invoice Date' | $T8 %]</th><td>[% HTML.escape(prop.transdate_as_date) %]</td><td>[% HTML.escape(bt.transdate_as_date) %] ([% HTML.escape(bt.transdate.utc_rd_days - prop.transdate.utc_rd_days) %])</td></tr><tr><th>[% 'Invoice Number' | $T8 %]</th><td>[% HTML.escape(prop.invnumber) %]</td><td>[% HTML.escape(bt.purpose) %]</td></tr></table>"
|
||
class="[% IF bt.agreement >= 5 %]green[% ELSIF bt.agreement < 5 and bt.agreement >= 3 %]orange[% ELSE %]red[% END %] tooltipster-html">←[% HTML.escape(prop.invnumber)%]</a></div>
|
||
[% END %]
|
Auch abrufbar als: Unified diff
Kontoauszug verbuchen: JavaScript-Code in eigene js-Datei ausgelagert