epic-s6ts
[kivitendo-erp.git] / scripts / csv-import-from-shell.sh
old mode 100644 (file)
new mode 100755 (executable)
index c0e8890..94e4435
 # ---- Logindaten und URL anpassen: ----
 login=MyLxOfficeUserName
 password=MySecretPassword
-url='https://localhost/lx-office-erp/controller.pl'
+client_id=ClientDatabaseID
+url='https://localhost/kivitendo-erp/controller.pl'
 
 function fail {
   echo "$@"
   exit 1
 }
 
-test -z $1 && fail "Kein CSV-Dateiname angegeben."
-test -f $1 || fail "Datei '$1' nicht gefunden."
+test -z "$1" && fail "Kein CSV-Dateiname angegeben."
+test -f "$1" || fail "Datei '$1' nicht gefunden."
 file="$1"
 
 function do_curl {
@@ -52,7 +53,10 @@ function do_curl {
   #   "UTF-8".
 
   #   "settings.duplicates": Doublettencheck; "no_check", "check_csv",
-  #   "check_db"
+  #   "check_db". Falls angestellt wird, werden weitere Einstellungen
+  #   "settings.duplicates_....=1" benötigt, die vom Programm logisch
+  #   mit "und" verknüpft werden. Diese Einstellungen sind für jeden
+  #   Typ weiter unten beschrieben.
 
   # Parameter für Artikel:
 
@@ -62,7 +66,7 @@ function do_curl {
   #   "settings.apply_buchungsgruppe": Buchungsgruppe wo anwenden:
   #   "never", "all", "missing"
 
-  #   "settings.parts_type": Artikeltyp: "part", "service", "mixed"
+  #   "settings.part_type": Artikeltyp: "part", "service", "mixed"
 
   #   "settings.article_number_policy": Artikel mit existierender
   #   Artikelnummer: "update_prices", "insert_new"
@@ -78,17 +82,50 @@ function do_curl {
   #   "settings.shoparticle_if_missing": Shopartikel setzen falls
   #   fehlt: "1", "0"
 
+  #   "settings.duplicates_partnumber=1": Doublettencheck nach
+  #   Artikelnummer (nur, wenn "settings.duplicates" auch gesetzt
+  #   ist).
+
+  #   "settings.duplicates_description=1": Doublettencheck nach
+  #   Artikelnummer (nur, wenn "settings.duplicates" auch gesetzt
+  #   ist).
+
   # Parameter für Kunden/Lieferanten:
 
   #   "settings.table": Zieltabelle: "customer", "vendor"
 
-  # Parameter für Ansprechpartner:
-  #   Nur die Standard-Parameter von oben
+  #   "settings.duplicates_name=1": Doublettencheck nach
+  #   Kunden-/Lieferantennamen (nur, wenn "settings.duplicates" auch
+  #   gesetzt ist).
+
+  # Parameter für Ansprechperson:
+
+  #   "settings.duplicates_cp_name=1": Doublettencheck nach Namen der
+  #   Ansprechperson (nur, wenn "settings.duplicates" auch gesetzt
+  #   ist).
 
   # Parameter für Lieferanschriten:
   #   Nur die Standard-Parameter von oben
 
+  # Parameter für Projekte:
+
+  #   "settings.duplicates_projectnumber=1": Doublettencheck nach
+  #   Projektnummer (nur, wenn "settings.duplicates" auch gesetzt
+  #   ist).
+
+  # Spaltenzuordnungen für Benutzerdefinierte Variablen:
+  #   Beispiel (Achtung, die Reihenfolge ist wichtig):
+
+  #   "mappings[+].from=vm_product_length"
+  #   "mappings[].to=cvar_vm_product_length"
+  #   "mappings[+].from=vm_product_width"
+  #   "mappings[].to=cvar_vm_product_width"
+  #   "mappings[+].from=vm_product_height"
+  #   "mappings[].to=cvar_vm_product_height"
+
   curl \
+    -X 'POST' \
+    -H 'Content-Type:multipart/form-data' \
     --silent --insecure \
     -F 'action=CsvImport/dispatch' \
     -F "${action}=1" \
@@ -102,13 +139,14 @@ function do_curl {
     -F 'settings.default_buchungsgruppe=395' \
     -F 'settings.duplicates=no_check' \
     -F 'settings.numberformat=1.000,00' \
-    -F 'settings.parts_type=part' \
+    -F 'settings.part_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 "{AUTH}login=${login}" \
+    -F "{AUTH}password=${password}" \
+    -F "{AUTH}client_id=${client_id}" \
     -F "file=@${file}" \
     ${url}
 }
@@ -116,10 +154,10 @@ function do_curl {
 tmpf=$(mktemp)
 do_curl 'action_test'  > $tmpf
 
-if grep -q -i 'es wurden.*objekte gefunden, von denen.*' $tmpf; then
+if grep -q -i 'Ihr Import wird verarbeitet' $tmpf; then
   rm $tmpf
   do_curl 'action_import' > $tmpf
-  if grep -i 'von.*objekten wurden importiert' $tmpf ; then
+  if grep -i 'Ihr Import wird verarbeitet' $tmpf ; then
     rm $tmpf
   else
     echo "Import schlug fehl. Ausgabe befindet sich in ${tmpf}"