BankTransaction: Kreditorenvorlagen: Vorlage direkt laden, wenn genau 1 Treffer
[kivitendo-erp.git] / js / kivi.BankTransaction.js
index 08f5133..2441aa1 100644 (file)
@@ -13,30 +13,46 @@ namespace('kivi.BankTransaction', function(ns) {
   };
 
   ns.add_invoices = function(bank_transaction_id, proposal_id) {
-    $('[data-proposal-id=' + proposal_id + ']').hide();
 
     $.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);
+        $('#assigned_invoices_' + bank_transaction_id + "_" + proposal_id).html(data.html);
+        $('#sources_' + bank_transaction_id + "_" + proposal_id + ',' +
+          '#memos_'   + bank_transaction_id + "_" + proposal_id).show();
+        $('[data-proposal-id=' + proposal_id + ']').hide();
+
+        ns.update_invoice_amount(bank_transaction_id);
       }
     });
   };
 
   ns.delete_invoice = function(bank_transaction_id, proposal_id) {
-    $( "#" + bank_transaction_id + "\\." + proposal_id ).remove();
+    var $inputs = $('#sources_' + bank_transaction_id + "_" + proposal_id + ',' +
+                    '#memos_'   + bank_transaction_id + "_" + proposal_id);
+
     $('[data-proposal-id=' + proposal_id + ']').show();
+    $('#assigned_invoices_' + bank_transaction_id + "_" + proposal_id).html('');
+    $('#extra_row_' + bank_transaction_id + '_' + proposal_id).remove();
+
+    $inputs.hide();
+    $inputs.val('');
+
+    ns.update_invoice_amount(bank_transaction_id);
   };
 
   ns.create_invoice = function(bank_transaction_id) {
+    $.post('controller.pl?action=BankTransaction/create_invoice',
+           '&bt_id=' + bank_transaction_id + "&filter.bank_account=" + $('#filter_bank_account').val() + '&filter.fromdate=' + $('#filter_fromdate').val() + '&filter.todate=' + $('#filter_todate').val(),
+           kivi.eval_json_result);
+  };
+
+  ns.show_create_invoice_dialog = function(dialog_html) {
     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',
+      html:    dialog_html,
       id:     'create_invoice_window',
       dialog: { title: kivi.t8('Create invoice') }
     });
-    return true;
   };
 
 
@@ -57,14 +73,37 @@ namespace('kivi.BankTransaction', function(ns) {
     $.ajax({
       url: url,
       success: function(new_html) {
-        $('#assigned_invoices_' + bank_transaction_id).append(new_html);
+        $('#bt_rows_' + bank_transaction_id).append(new_html);
         $('#assign_invoice_window').dialog('close');
+        ns.update_invoice_amount(bank_transaction_id);
       }
     });
   }
 
+  ns.update_invoice_amount = function(bank_transaction_id) {
+    var $container = $('#invoice_amount_' + bank_transaction_id);
+    var amount     = $container.data('invoice-amount') * 1;
+
+    $('[id^="' + bank_transaction_id + '."]').each(function(idx, elt) {
+      if ($("input[name='skonto_pt." + elt.id + "']").val() == 1) {
+        // skonto payment term
+        amount += $(elt).data('invoice-amount-less-skonto');
+      } else {
+        // normal amount
+        amount += $(elt).data('invoice-amount');
+        //subtract free skonto if checked (no check for number!)
+        if ($("input[name='skonto_pt." + elt.id + "']").val() == 'free_skonto') {
+          amount -= $("input[name='free_skonto_amount." + elt.id + "']").val();
+        }
+      }
+    });
+
+    $container.html(kivi.format_amount(amount, 2));
+  };
+
   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());
@@ -72,4 +111,68 @@ namespace('kivi.BankTransaction', function(ns) {
 
     $.cookie('jquery_ui_tab_bt_tabs', ui_tab);
   };
+
+  ns.show_set_all_sources_memos_dialog = function(sources_selector, memos_selector) {
+    var dlg_id = 'set_all_sources_memos_dialog';
+    var $dlg   = $('#' + dlg_id);
+
+    $dlg.data('sources-selector', sources_selector);
+    $dlg.data('memos-selector',   memos_selector);
+
+    $('#set_all_sources').val('');
+    $('#set_all_memos').val('');
+
+    kivi.popup_dialog({
+      id: dlg_id,
+      dialog: {
+        title: kivi.t8('Set all source and memo fields')
+      }
+    });
+  };
+
+  ns.set_all_sources_memos = function(sources_selector, memos_selector) {
+    var $dlg = $('#set_all_sources_memos_dialog');
+
+    ['sources', 'memos'].forEach(function(type) {
+      var value = $('#set_all_' + type).val();
+      if (value !== '')
+        $($dlg.data(type + '-selector')).each(function(idx, input) {
+          $(input).val(value);
+        });
+    });
+
+    $dlg.dialog('close');
+  };
+
+  ns.filter_templates = function() {
+    var url="controller.pl?action=BankTransaction/filter_templates&" + $("#create_invoice_window form").serialize();
+    $.ajax({
+      url: url,
+      success: function(new_data) {
+        $("#templates").html(new_data.error || new_data.html);
+      }
+    });
+  };
+  ns.update_skonto = function(caller, bt_id, prop_id, formatted_amount_with_skonto_pt) {
+
+    if (caller.value === 'free_skonto') {
+      $('#free_skonto_amount_' + bt_id + '_' + prop_id).val("");
+      $('#free_skonto_amount_' + bt_id + '_' + prop_id).prop('disabled', false);
+      $("input[name='skonto_pt." + bt_id + '.' + prop_id + "']").val('free_skonto');
+      $('#free_skonto_amount_' + bt_id + '_' + prop_id).focus();
+    }
+    if (caller.value === 'without_skonto') {
+      $('#free_skonto_amount_' + bt_id + '_' + prop_id).val(kivi.format_amount(0,2));
+      $('#free_skonto_amount_' + bt_id + '_' + prop_id).prop('disabled', true);
+      $("input[name='skonto_pt." + bt_id + '.' + prop_id + "']").val(0);
+    }
+    if (caller.value === 'with_skonto_pt') {
+      $('#free_skonto_amount_' + bt_id + '_' + prop_id).val(formatted_amount_with_skonto_pt);
+      $('#free_skonto_amount_' + bt_id + '_' + prop_id).prop('disabled', true);
+      $("input[name='skonto_pt." + bt_id + '.' + prop_id + "']").val(1);
+    }
+    // recalc assigned amount
+    ns.update_invoice_amount(bt_id);
+  };
+
 });