Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision e09f2da3

Von Bernd Bleßmann vor fast 9 Jahren hinzugefügt

  • ID e09f2da35e02b34569254b5d1550aa5dd287761f
  • Vorgänger 0935b012
  • Nachfolger e86c1c2a

Auftrags-Controller: Warnung beim Speichern mit doppelten Artikeln.

In der Mandantenkonfiguration (Features) abschaltbar.

Unterschiede anzeigen:

SL/DB/MetaSetup/Default.pm
71 71
  normalize_part_descriptions               => { type => 'boolean', default => 'true' },
72 72
  normalize_vc_names                        => { type => 'boolean', default => 'true' },
73 73
  order_always_project                      => { type => 'boolean', default => 'false' },
74
  order_warn_duplicate_parts                => { type => 'boolean', default => 'true' },
74 75
  parts_image_css                           => { type => 'text', default => 'border:0;float:left;max-width:250px;margin-top:20px:margin-right:10px;margin-left:10px;' },
75 76
  parts_listing_image                       => { type => 'boolean', default => 'true' },
76 77
  parts_show_image                          => { type => 'boolean', default => 'true' },
77 78
  payments_changeable                       => { type => 'integer', default => '0', not_null => 1 },
78 79
  pdonumber                                 => { type => 'text' },
79 80
  ponumber                                  => { type => 'text' },
80
  precision                                 => { type => 'numeric', precision => 15, scale => 5, default => '0.01', not_null => 1 },
81
  precision                                 => { type => 'numeric', default => '0.01', not_null => 1, precision => 15, scale => 5 },
81 82
  profit_determination                      => { type => 'text' },
82 83
  project_status_id                         => { type => 'integer' },
83 84
  project_type_id                           => { type => 'integer' },
......
89 90
  revtrans                                  => { type => 'boolean', default => 'false' },
90 91
  rfqnumber                                 => { type => 'text' },
91 92
  rmanumber                                 => { type => 'text' },
92
  rndgain_accno_id                          => { type => 'integer'},
93
  rndloss_accno_id                          => { type => 'integer'},
93
  rndgain_accno_id                          => { type => 'integer' },
94
  rndloss_accno_id                          => { type => 'integer' },
94 95
  sales_delivery_order_show_delete          => { type => 'boolean', default => 'true' },
95 96
  sales_order_show_delete                   => { type => 'boolean', default => 'true' },
96 97
  sales_purchase_order_ship_missing_column  => { type => 'boolean', default => 'false' },
js/kivi.Order.js
14 14
    return true;
15 15
  };
16 16

  
17
  ns.save = function() {
17
  ns.check_save_duplicate_parts = function() {
18
    var id_arr = $('[name="order.orderitems[].parts_id"]').map(function() {return this.value;}).get();
19

  
20
    var i, obj = {}, pos = [];
21

  
22
    for (i = 0; i < id_arr.length; i++) {
23
      var id = id_arr[i];
24
      if (obj.hasOwnProperty(id)) {
25
        pos.push(i + 1);
26
      }
27
      obj[id] = 0;
28
    }
29

  
30
    if (pos.length > 0) {
31
      return confirm(kivi.t8("There are duplicate parts at positions") + "\n"
32
                     + pos.join(', ') + "\n"
33
                     + kivi.t8("Do you really want to save?"));
34
    }
35
    return true;
36
  };
37

  
38
  ns.save = function(warn_on_duplicates) {
18 39
    if (!ns.check_cv()) return;
40
    if (warn_on_duplicates && !ns.check_save_duplicate_parts()) return;
19 41

  
20 42
    var data = $('#order_form').serializeArray();
21 43
    data.push({ name: 'action', value: 'Order/save' });
......
23 45
    $.post("controller.pl", data, kivi.eval_json_result);
24 46
  };
25 47

  
26
  ns.save_and_delivery_order = function() {
48
  ns.save_and_delivery_order = function(warn_on_duplicates) {
27 49
    if (!ns.check_cv()) return;
50
    if (warn_on_duplicates && !ns.check_save_duplicate_parts()) return;
28 51

  
29 52
    var data = $('#order_form').serializeArray();
30 53
    data.push({ name: 'action', value: 'Order/save_and_delivery_order' });
js/locale/de.js
36 36
"Do you really want do continue?":"Wollen Sie wirklich fortfahren?",
37 37
"Do you really want to cancel?":"Wollen Sie wirklich abbrechen?",
38 38
"Do you really want to revert to this version?":"Wollen Sie wirklich auf diese Version zurücksetzen?",
39
"Do you really want to save?":"Wollen Sie wirklich speichern?",
39 40
"Do you want to set the account number \"#1\" to \"#2\" and the name \"#3\" to \"#4\"?":"Soll die Kontonummer \"#1\" zu \"#2\" und den Name \"#3\" zu \"#4\" geändert werden?",
40 41
"Download picture":"Bild herunterladen",
41 42
"Edit":"Bearbeiten",
......
79 80
"The option field is empty.":"Das Optionsfeld ist leer.",
80 81
"The recipient, subject or body is missing.":"Der Empfäger, der Betreff oder der Text ist leer.",
81 82
"The selected database is still configured for client \"#1\". If you delete the database that client will stop working until you re-configure it. Do you still want to delete the database?":"Die auswählte Datenbank ist noch für Mandant \"#1\" konfiguriert. Wenn Sie die Datenbank löschen, wird der Mandanten nicht mehr funktionieren, bis er anders konfiguriert wurde. Wollen Sie die Datenbank trotzdem löschen?",
83
"There are duplicate parts at positions":"Es gibt doppelte Artikel bei den Positionen",
82 84
"There are still transfers not matching the qty of the delivery order. Stock operations can not be changed later. Do you really want to proceed?":"Einige der Lagerbewegungen sind nicht vollständig und Lagerbewegungen können nachträglich nicht mehr verändert werden. Wollen Sie wirklich fortfahren?",
83 85
"There is no connected chart.":"Es fehlt ein verknüpftes Buchungskonto.",
84 86
"There is one or more sections for which no part has been assigned yet; therefore creating the new record is not possible yet.":"Es gibt einen oder mehrere Abschnitte ohne Artikelzuweisung; daher kann der neue Beleg noch nicht erstellt werden.",
locale/de/all
943 943
  'Do you really want to delete this object?' => 'Wollen Sie dieses Objekt wirklich löschen?',
944 944
  'Do you really want to delete this warehouse?' => 'Wollen Sie dieses Lager wirklich l&ouml;schen?',
945 945
  'Do you really want to revert to this version?' => 'Wollen Sie wirklich auf diese Version zurücksetzen?',
946
  'Do you really want to save?' => 'Wollen Sie wirklich speichern?',
946 947
  'Do you want to <b>limit</b> your search?' => 'Wollen Sie Ihre Suche <b>spezialisieren</b>?',
947 948
  'Do you want to carry this shipping address over to the new purchase order so that the vendor can deliver the goods directly to your customer?' => 'Wollen Sie diese Lieferadresse in den neuen Lieferantenauftrag &uuml;bernehmen, damit der H&auml;ndler die Waren direkt an Ihren Kunden liefern kann?',
948 949
  'Do you want to overwrite your current title?' => 'Wollen Sie den aktuellen Titel überschreiben?',
......
1388 1389
  'If disabled sales orders cannot be converted into sales invoices directly.' => 'Falls deaktiviert, so können Verkaufsaufträge nicht direkt in Verkaufsrechnungen umgewandelt werden.',
1389 1390
  'If disabled sales quotations cannot be converted into sales invoices directly.' => 'Falls deaktiviert, so können Verkaufsangebote nicht direkt in Verkaufsrechnungen umgewandelt werden.',
1390 1391
  'If enabled a column will be shown in sales and purchase orders that lists both the amount and the value not shipped yet for each item.' => 'Falls eingeschaltet, wird für jede Position in Auftragsbestätigungen und Lieferantenaufträgen eine Spalte mit noch nicht gelieferter Menge und Wert angezeigt.',
1392
  'If enabled a warning will be shown in sales and purchase orders if there are two or more positions of the same part (new controller only).' => 'Falls eingeschaltet, wird eine Warnung angezeigt, wenn der Auftrag mehrere gleiche Artikel enthält (nur neuer Controller).',
1391 1393
  'If enabled only those projects that are assigned to the currently selected customer are offered for selection in sales records.' => 'Wenn eingeschaltet, so werden in Verkaufsbelegen nur diejenigen Projekte zur Auswahl angeboten, die dem aktuell ausgewählten Kunden zugewiesen wurden.',
1392 1394
  '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.',
1393 1395
  'If missing then the start date will be used.' => 'Falls es fehlt, so wird die erste Rechnung für das Startdatum erzeugt.',
......
2989 2991
  'There are currently no open invoices, or none matches your filter conditions.' => 'Es gibt momentan keine offenen Rechnungen, oder keine erfüllt die Filterkriterien.',
2990 2992
  'There are currently no open sales delivery orders.' => 'Es gibt zur Zeit keine offenen Verkaufslieferscheine.',
2991 2993
  'There are double partnumbers in your database.' => 'In ihrer Datenbank befinden sich mehrfach vergebene Artikelnummern.',
2994
  'There are duplicate parts at positions' => 'Es gibt doppelte Artikel bei den Positionen',
2992 2995
  'There are entries in tax where taxkey is NULL.' => 'In der Datenbank sind Steuern ohne Steuerschlüssel vorhanden (in der Tabelle tax Spalte taxkey).',
2993 2996
  'There are invalid taxnumbers in use.' => 'Es werden ungültige Steuerautomatik-Konten benutzt.',
2994 2997
  'There are invalid transactions in your database.' => 'Sie haben ungültige Buchungen in Ihrer Datenbank.',
......
3272 3275
  'Warehouse management'        => 'Lagerverwaltung/Bestandsveränderung',
3273 3276
  'Warehouse saved.'            => 'Lager gespeichert.',
3274 3277
  'Warehouses'                  => 'Lager',
3278
  'Warn before saving orders with duplicate parts (new controller only)' => 'Beim Speichern warnen, wenn doppelte Artikel in einem Auftrag sind',
3275 3279
  'Warning'                     => 'Warnung',
3276 3280
  'WebDAV'                      => 'WebDAV',
3277 3281
  'WebDAV link'                 => 'WebDAV-Link',
locale/en/all
744 744
  'Do you really want to delete the selected links?' => '',
745 745
  'Do you really want to delete this object?' => '',
746 746
  'Do you really want to delete this warehouse?' => '',
747
  'Do you really want to save?' => '',
747 748
  'Do you want to <b>limit</b> your search?' => '',
748 749
  'Do you want to carry this shipping address over to the new purchase order so that the vendor can deliver the goods directly to your customer?' => '',
749 750
  'Do you want to set the account number "#1" to "#2" and the name "#3" to "#4"?' => '',
......
1096 1097
  'IV'                          => '',
1097 1098
  'If amounts differ more than "Maximal amount difference" (see settings), this item is marked as invalid.' => '',
1098 1099
  'If checked the taxkey will not be exported in the DATEV Export, but only IF chart taxkeys differ from general ledger taxkeys' => '',
1099
  '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.' => '',
1100
  'If enabled a warning will be shown in sales and purchase orders if there are two or more positions of the same part (new controller only).' => 'Falls eingeschaltet, wird eine Warnung angezeigt, wenn der Auftrag mehrere gleiche Artikel enthält (nur neuer Controller).',  '',
1100 1101
  'If the article type is set to \'mixed\' then a column called \'type\' must be present.' => '',
1101 1102
  'If the automatic creation of invoices for fees and interest is switched on for a dunning level then the following accounts will be used for the invoice.' => '',
1102 1103
  'If the database user listed above does not have the right to create a database then enter the name and password of the superuser below:' => '',
......
2296 2297
  'There are Bins defined in your master data.' => '',
2297 2298
  'There are bookings to the account 3803 after 01.01.2007. If you didn\'t change this account manually to 19% the bookings are probably incorrect.' => '',
2298 2299
  'There are double partnumbers in your database.' => '',
2300
  'There are duplicate parts at positions' => '',
2299 2301
  'There are entries in tax where taxkey is NULL.' => '',
2300 2302
  'There are invalid taxnumbers in use.' => '',
2301 2303
  'There are invalid transactions in your database.' => '',
......
2512 2514
  'Warehouse management'        => '',
2513 2515
  'Warehouse saved.'            => '',
2514 2516
  'Warehouses'                  => '',
2517
  'Warn before saving orders with duplicate parts (new controller only)' => '',
2515 2518
  'Warning'                     => '',
2516 2519
  'WebDAV'                      => '',
2517 2520
  'WebDAV link'                 => '',
sql/Pg-upgrade2/defaults_order_warn_duplicate_parts.sql
1
-- @tag: defaults_order_warn_duplicate_parts
2
-- @description: Mandantenkonfiguration: Warnung bei doppelten Artikeln in Aufträgen
3
-- @depends: release_3_3_0
4
-- @encoding: utf-8
5

  
6
ALTER TABLE defaults ADD COLUMN order_warn_duplicate_parts BOOLEAN DEFAULT TRUE;
templates/webpages/client_config/_features.html
101 101
   <td>[% LxERP.t8("If enabled a column will be shown in sales and purchase orders that lists both the amount and the value not shipped yet for each item.") %]</td>
102 102
  </tr>
103 103

  
104
  <tr>
105
   <td align="right">[% LxERP.t8("Warn before saving orders with duplicate parts (new controller only)") %]</td>
106
   <td>[% L.yes_no_tag("defaults.order_warn_duplicate_parts", SELF.defaults.order_warn_duplicate_parts) %]</td>
107
   <td>[% LxERP.t8("If enabled a warning will be shown in sales and purchase orders if there are two or more positions of the same part (new controller only).") %]</td>
108
  </tr>
109

  
104 110
  <tr><td class="listheading" colspan="4">[% LxERP.t8("E-mail") %]</td></tr>
105 111

  
106 112
  <tr>
templates/webpages/order/form.html
43 43

  
44 44
  [% L.hidden_tag('action', 'Order/dispatch') %]
45 45

  
46
  [% L.button_tag('kivi.Order.save()', LxERP.t8('Save')) %]
46
  [% L.button_tag('kivi.Order.save(' _ INSTANCE_CONF.get_order_warn_duplicate_parts _ ')', LxERP.t8('Save')) %]
47 47
  [% L.button_tag('kivi.Order.show_print_options()', LxERP.t8('Print')) %]
48 48
  [% L.button_tag('kivi.Order.email()', LxERP.t8('E-mail')) %]
49
  [% L.button_tag('kivi.Order.save_and_delivery_order()', LxERP.t8('Save and Delivery Order')) %]
49
  [% L.button_tag('kivi.Order.save_and_delivery_order(' _ INSTANCE_CONF.get_order_warn_duplicate_parts _ ')', LxERP.t8('Save and Delivery Order')) %]
50 50
[%- IF SELF.order.id && ( (SELF.cv == 'customer' && INSTANCE_CONF.get_sales_order_show_delete) || (SELF.cv == 'vendor' && INSTANCE_CONF.get_purchase_order_show_delete) ) %]
51 51
  [% L.button_tag('kivi.Order.delete_order()', LxERP.t8('Delete'), confirm=LxERP.t8("Are you sure?")) %]
52 52
[%- END %]

Auch abrufbar als: Unified diff