Merge branch 'master' of vc.linet-services.de:public/lx-office-erp
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 18 Nov 2011 16:25:05 +0000 (17:25 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Fri, 18 Nov 2011 16:25:05 +0000 (17:25 +0100)
Conflicts:
doc/INSTALL.texi
doc/INSTALL.txt

doc/INSTALL.html
doc/INSTALL.texi
doc/INSTALL.txt
doc/Lx-Office_Installation_DE.pdf
scripts/csv-import-from-shell.sh [new file with mode: 0644]

index b7a4eb6..95cd087 100644 (file)
@@ -219,6 +219,7 @@ einer Standard-Perl-Installation sind:
 <li>DBI
 <li>DBD::Pg
 <li>Email::Address
+<li>JSON
 <li>List::MoreUtils
 <li>Params::Validate
 <li>PDF::API2
@@ -240,6 +241,8 @@ und <code>XML::Writer</code> sind notwendig. Ohne startet Lx-Office nicht.
 <code>Rose::Object</code>, <code>Rose::DB</code> und <code>Rose::DB::Object</code> neu
 hinzugekommen. <code>IO::Wrap</code> wurde entfernt.
 
+   <p>Gegenüber Version 2.6.3 ist <code>JSON</code> neu hinzugekommen.
+
    <p><code>Email::Address</code> und <code>List::MoreUtils</code> sind schon länger feste
 Abhängigkeiten, wurden aber bisher mit Lx-Office mitgeliefert.  Beide sind auch
 in 2.6.1 weiterhin mit ausgeliefert, wurden in einer zukünftigen Version aber
@@ -250,7 +253,7 @@ anderen als Bibliotheken zu installieren.
 
    <p>Für Debian oder Ubuntu benötigen Sie diese Pakete:
 
-   <p><code>apache2 postgresql libparent-perl libarchive-zip-perl libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl libemail-address-perl liblist-moreutils-perl libpdf-api2-perl librose-object-perl librose-db-perl librose-db-object-perl libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl libconfig-std-perl libparams-validate-perl</code>
+   <p><code>apache2 postgresql libparent-perl libarchive-zip-perl libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl libemail-address-perl liblist-moreutils-perl libpdf-api2-perl librose-object-perl librose-db-perl librose-db-object-perl libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl libconfig-std-perl libparams-validate-perl libjson-perl</code>
 
    <p>Für Fedora Core benötigen Sie diese Pakete:
 
index 6667237..56d47dd 100644 (file)
@@ -148,6 +148,8 @@ DBD::Pg
 @item
 Email::Address
 @item
+JSON
+@item
 List::MoreUtils
 @item
 Params::Validate
@@ -180,6 +182,8 @@ Gegenüber Version 2.6.1 sind @code{parent}, @code{DateTime},
 @code{Rose::Object}, @code{Rose::DB} und @code{Rose::DB::Object} neu
 hinzugekommen. @code{IO::Wrap} wurde entfernt.
 
+Gegenüber Version 2.6.3 ist @code{JSON} neu hinzugekommen.
+
 @code{Email::Address} und @code{List::MoreUtils} sind schon länger feste
 Abhängigkeiten, wurden aber bisher mit Lx-Office mitgeliefert.  Beide sind auch
 in 2.6.1 weiterhin mit ausgeliefert, wurden in einer zukünftigen Version aber
@@ -190,7 +194,7 @@ Die zu installierenden Pakete können in den verschiedenen Distributionen unters
 
 Für Debian oder Ubuntu benötigen Sie diese Pakete:
 
-@code{apache2 postgresql libparent-perl libarchive-zip-perl libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl libemail-address-perl liblist-moreutils-perl libpdf-api2-perl librose-object-perl librose-db-perl librose-db-object-perl libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl libconfig-std-perl libparams-validate-perl}
+@code{apache2 postgresql libparent-perl libarchive-zip-perl libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl libemail-address-perl liblist-moreutils-perl libpdf-api2-perl librose-object-perl librose-db-perl librose-db-object-perl libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl libconfig-std-perl libparams-validate-perl libjson-perl}
 
 Für Fedora Core benötigen Sie diese Pakete:
 
index 860622a..2e08f0c 100644 (file)
@@ -141,6 +141,8 @@ Bestandteil einer Standard-Perl-Installation sind:
 
    * Email::Address
 
+   * JSON
+
    * List::MoreUtils
 
    * Params::Validate
@@ -172,6 +174,8 @@ Bestandteil einer Standard-Perl-Installation sind:
 `Rose::DB' und `Rose::DB::Object' neu hinzugekommen. `IO::Wrap' wurde
 entfernt.
 
+   Gegenüber Version 2.6.3 ist `JSON' neu hinzugekommen.
+
    `Email::Address' und `List::MoreUtils' sind schon länger feste
 Abhängigkeiten, wurden aber bisher mit Lx-Office mitgeliefert.  Beide
 sind auch in 2.6.1 weiterhin mit ausgeliefert, wurden in einer
@@ -190,7 +194,7 @@ libemail-address-perl liblist-moreutils-perl libpdf-api2-perl
 librose-object-perl librose-db-perl librose-db-object-perl
 libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl
 libxml-writer-perl libyaml-perl libconfig-std-perl
-libparams-validate-perl'
+libparams-validate-perl libjson-perl'
 
    Für Fedora Core benötigen Sie diese Pakete:
 
index 36c888c..02c0543 100644 (file)
Binary files a/doc/Lx-Office_Installation_DE.pdf and b/doc/Lx-Office_Installation_DE.pdf differ
diff --git a/scripts/csv-import-from-shell.sh b/scripts/csv-import-from-shell.sh
new file mode 100644 (file)
index 0000000..c0e8890
--- /dev/null
@@ -0,0 +1,131 @@
+#!/bin/bash
+
+# Ein Script, das demonstriert, wie sich CSV-Dateien über die
+# Kommandozeile importieren lassen. Dabei gibt es zwei Orte, an denen
+# das Script angepasst werden muss. Diese sind entsprechend mit
+# Kommentaren versehen.
+#
+# Der Aufruf erfolgt mit einem Parameter: dem Dateinamen der
+# CSV-Datei. Als Ausgabe erscheint bei Erfolg gar nichts (und
+# Exit-Code 0). Im Fehlerfall werden eine Meldung und der Name einer
+# temporären Datei ausgegeben, in der der HTML-Code der Fehlermeldung
+# sichtbar ist. Exit-Code ist dann 2.
+
+# ---- Logindaten und URL anpassen: ----
+login=MyLxOfficeUserName
+password=MySecretPassword
+url='https://localhost/lx-office-erp/controller.pl'
+
+function fail {
+  echo "$@"
+  exit 1
+}
+
+test -z $1 && fail "Kein CSV-Dateiname angegeben."
+test -f $1 || fail "Datei '$1' nicht gefunden."
+file="$1"
+
+function do_curl {
+  local action="$1"
+
+  # ---- Hier ebenfalls die Parameter anpassen, falls notwendig. ----
+  # Die anpassbaren Parameter und ihre Werte sind:
+
+  # Allgemeine Parameter für alle importierbaren Sachen:
+
+  #   "profile.type": zu importierende Objekte: "parts": Artikel;
+  #   "customers_vendors": Kunden/Lieferanten; "contacts":
+  #   Ansprechpersonen; "addresses": Lieferanschriften
+
+  #   "escape_char": "quote", "singlequote" oder das Escape-Zeichen
+  #   selber
+
+  #   "quote_char": die gleichen Optionen wie "escape_char"
+
+  #   "sep_char": "comma", "semicolon", "space", "tab" oder das
+  #   Trennzeichen selber
+
+  #   "settings.numberformat": "1.000,00", "1000,00", "1,000.00",
+  #   "1000.00"
+
+  #   "settings.charset": Name eines Zeichensatzes. Meist "CP850" oder
+  #   "UTF-8".
+
+  #   "settings.duplicates": Doublettencheck; "no_check", "check_csv",
+  #   "check_db"
+
+  # Parameter für Artikel:
+
+  #   "settings.default_buchungsgruppe": Standard-Buchungsgruppe;
+  #   Datenbank-ID einer Buchungsgruppe
+
+  #   "settings.apply_buchungsgruppe": Buchungsgruppe wo anwenden:
+  #   "never", "all", "missing"
+
+  #   "settings.parts_type": Artikeltyp: "part", "service", "mixed"
+
+  #   "settings.article_number_policy": Artikel mit existierender
+  #   Artikelnummer: "update_prices", "insert_new"
+
+  #   "settings.sellprice_places": Anzahl Nachkommastellen
+  #   Verkaufspreise
+
+  #   "settings.sellprice_adjustment": Wert für Verkaufspreisanpassung
+
+  #   "settings.sellprice_adjustment_type": Art der
+  #   Verkaufspreisanpassung; "percent", "absolute"
+
+  #   "settings.shoparticle_if_missing": Shopartikel setzen falls
+  #   fehlt: "1", "0"
+
+  # Parameter für Kunden/Lieferanten:
+
+  #   "settings.table": Zieltabelle: "customer", "vendor"
+
+  # Parameter für Ansprechpartner:
+  #   Nur die Standard-Parameter von oben
+
+  # Parameter für Lieferanschriten:
+  #   Nur die Standard-Parameter von oben
+
+  curl \
+    --silent --insecure \
+    -F 'action=CsvImport/dispatch' \
+    -F "${action}=1" \
+    -F 'escape_char=quote' \
+    -F 'profile.type=parts' \
+    -F 'quote_char=quote' \
+    -F 'sep_char=semicolon' \
+    -F 'settings.apply_buchungsgruppe=all' \
+    -F 'settings.article_number_policy=update_prices' \
+    -F 'settings.charset=CP850' \
+    -F 'settings.default_buchungsgruppe=395' \
+    -F 'settings.duplicates=no_check' \
+    -F 'settings.numberformat=1.000,00' \
+    -F 'settings.parts_type=part' \
+    -F 'settings.sellprice_adjustment=0' \
+    -F 'settings.sellprice_adjustment_type=percent' \
+    -F 'settings.sellprice_places=2' \
+    -F 'settings.shoparticle_if_missing=0' \
+    -F "login=${login}" \
+    -F "password=${password}" \
+    -F "file=@${file}" \
+    ${url}
+}
+
+tmpf=$(mktemp)
+do_curl 'action_test'  > $tmpf
+
+if grep -q -i 'es wurden.*objekte gefunden, von denen.*' $tmpf; then
+  rm $tmpf
+  do_curl 'action_import' > $tmpf
+  if grep -i 'von.*objekten wurden importiert' $tmpf ; then
+    rm $tmpf
+  else
+    echo "Import schlug fehl. Ausgabe befindet sich in ${tmpf}"
+    exit 2
+  fi
+else
+  echo "Test-Import nicht OK. Ausgabe befindet sich in ${tmpf}"
+  exit 2
+fi