Falscher Rechtename für "Lagerbestand ansehen"
[kivitendo-erp.git] / lxo-import / import_lib.php
1 <?php
2 /*
3 Funktionsbibliothek für den Datenimport in Lx-Office ERP
4
5 Copyright (C) 2005
6 Author: Holger Lindemann
7 Email: hli@lx-system.de
8 Web: http://lx-system.de
9
10 */
11
12 require_once "db.php";
13
14 $address = array(
15     "name" => "Firmenname",
16     "department_1" => "Abteilung",
17     "department_2" => "Abteilung",
18     "street" => "Strasse + Nr",
19     "zipcode" => "Plz",
20     "city" => "Ort",
21     "country" => "Land",
22     "contact" => "Ansprechpartner",
23     "phone" => "Telefon",
24     "fax" => "Fax",
25     "homepage" => "Homepage",
26     "email" => "eMail",
27     "notes" => "Bemerkungen",
28     "discount" => "Rabatt (nn.nn)",
29     "taxincluded" => "incl. Steuer? (t/f)",
30     "terms" => "Zahlungsziel (Tage)",
31     "customernumber" => "Kundennummer",
32     "vendornumber" => "Lieferantennummer",
33     "taxnumber" => "Steuernummer",
34     "ustid" => "Umsatzsteuer-ID",
35     "account_number" => "Kontonummer",
36     "bank_code" => "Bankleitzahl",
37     "bank" => "Bankname",
38     "branche" => "Branche",
39     //"language" => "Sprache (de,en,fr)",
40     "sw" => "Stichwort",
41     "creditlimit" => "Kreditlimit (nnnnnn.nn)"); /*,
42     "hierarchie" => "Hierarchie",
43     "potenzial" => "Potenzial",
44     "ar" => "Debitorenkonto",
45     "ap" => "Kreditorenkonto",
46     "matchcode" => "Matchcode",
47     "customernumber2" => "Kundennummer 2"); 
48     Kundenspezifisch */
49         
50 $shiptos = array(
51     "firma" => "Firmenname",
52     "shiptoname" => "Liefername",
53     "shiptodepartment_1" => "Abteilung",
54     "shiptodepartment_2" => "Abteilung",
55     "shiptostreet" => "Strasse + Nr",
56     "shiptozipcode" => "Plz",
57     "shiptocity" => "Ort",
58     "shiptocountry" => "Land",
59     "shiptocontact" => "Ansprechpartner",
60     "shiptophone" => "Telefon",
61     "shiptofax" => "Fax",
62     "shiptoemail" => "eMail",
63     "customernumber" => "Kundennummer",
64     "vendornumber" => "Lieferantennummer");
65
66 $parts = array( 
67     "partnumber" => "Artikelnummer",
68     "ean" => "Barcode",
69     "description" => "Artikeltext",
70     "unit" => "Einheit",
71     "weight" => "Gewicht in Benutzerdefinition",
72     "notes" => "Beschreibung",
73     "notes1" => "Beschreibung",
74     "makemodel" => "Hersteller",
75     "model" => "Modellbezeichnung",
76     "image" => "Pfad/Dateiname",
77     "drawing" => "Pfad/Dateiname",
78     "microfiche" => "Pfad/Dateiname",
79     "listprice" => "Listenpreis",
80     "sellprice" => "Verkaufspreis",
81     "lastcost" => "letzter EK",
82     "art" => "Ware/Dienstleistung (*/d), mu&szlig; vor den Konten kommen",
83     "inventory_accno" => "Bestandskonto",
84     "income_accno" => "Erl&ouml;skonto",
85     "expense_accno" => "Konto Umsatzkosten",
86     "obsolete" => "Gesperrt (Y/N)",
87     "lastcost" => "letzer EK-Preis",
88     "rop" => "Mindestbestand",
89     "shop" => "Shopartikel (Y/N)",
90     "assembly" => "St&uuml;ckliste (Y/N); wird noch nicht unterst&uuml;tzt",
91     "partsgroup" => "Warengruppenbezeichnung",
92     "partsgroup1" => "2.Warengruppenbezeichnung",
93     "partsgroup2" => "3.Warengruppenbezeichnung",
94     "partsgroup3" => "4.Warengruppenbezeichnung",
95     "partsgroup4" => "5.Warengruppenbezeichnung",
96     );
97     
98 $contactscrm = array(
99     "customernumber" => "Kundennummer",
100     "vendornumber" => "Lieferantennummer",
101     "cp_cv_id" => "FirmenID in der db",
102     "firma" => "Firmenname",
103     "cp_abteilung" => "Abteilung",
104     "cp_position" => "Position/Hierarchie",
105     "cp_gender" => "Geschlecht (m/f)",
106     "cp_title" => "Titel",
107     "cp_givenname" => "Vorname",
108     "cp_name" => "Nachname",
109     "cp_email" => "eMail",
110     "cp_phone1" => "Telefon 1",
111     "cp_phone2" => "Telefon 2",
112     "cp_mobile1" => "Mobiltelefon 1",
113     "cp_mobile2" => "Mobiltelefon 2",
114     "cp_homepage" => "Homepage",
115     "cp_street" => "Strasse",
116     "cp_country" => "Land",
117     "cp_zipcode" => "PLZ",
118     "cp_city" => "Ort",
119     "cp_privatphone" => "Privattelefon",
120     "cp_privatemail" => "private eMail",
121     "cp_notes" => "Bemerkungen",
122     "cp_stichwort1" => "Stichwort(e)",
123     "cp_id" => "Kontakt ID"
124     );
125
126 $contacts = array(
127     "customernumber" => "Kundennummer",
128     "vendornumber" => "Lieferantennummer",
129     "cp_cv_id" => "FirmenID in der db",
130     "firma" => "Firmenname",
131     "cp_greeting" => "Anrede",
132     "cp_title" => "Titel",
133     "cp_givenname" => "Vorname",
134     "cp_greeting" => "Anrede",
135     "cp_name" => "Nachname",
136     "cp_email" => "eMail",
137     "cp_phone1" => "Telefon 1",
138     "cp_phone2" => "Telefon 2",
139     "cp_mobile1" => "Mobiltelefon 1",
140     "cp_mobile2" => "Mobiltelefon 2",
141     "cp_privatphone" => "Privattelefon",
142     "cp_privatemail" => "private eMail",
143     "cp_homepage" => "Homepage",
144     "cp_id" => "Kontakt ID"
145     );
146
147 function checkCRM() {
148     global $db;
149     $sql="select * from crm";
150     $rs=$db->getAll($sql);
151     if ($rs) {
152         return true;
153     } else {
154         return false;
155     }
156 }
157
158 function chkUsr($usr) {
159 // ist es ein gültiger ERP-Benutzer? Er muß mindestens 1 x angemeldet gewesen sein.
160     global $db;
161     $sql="select * from employee where login = '$usr'";
162     $rs=$db->getAll($sql);
163     if ($rs[0]["id"]) { return $rs[0]["id"]; } 
164     else { return false; };
165 }
166
167 function getKdId() {
168 // die nächste freie Kunden-/Lieferantennummer holen
169     global $db,$file,$test;
170     if ($test) { return "#####"; }
171     $sql1="select * from defaults";
172     $sql2="update defaults set ".$file."number = '%s'";
173     $db->begin();
174     $rs=$db->getAll($sql1);
175     $nr=$rs[0][$file."number"];
176     preg_match("/^([^0-9]*)([0-9]+)/",$nr,$hits);
177     if ($hits[2]) { $nr=$hits[2]+1; $nnr=$hits[1].$nr; }
178     else { $nr=$hits[1]+1; $nnr=$nr; };
179     $rc=$db->query(sprintf($sql2,$nnr));
180     if ($rc) { 
181         $db->commit(); 
182         return $nnr;
183     } else { 
184         $db->rollback(); 
185         return false;
186     };
187 }
188
189 function chkKdId($data) {
190 // gibt es die Nummer schon?
191     global $db,$file,$test;
192     $sql="select * from $file where ".$file."number = '$data'";
193     $rs=$db->getAll($sql);
194     if ($rs[0][$file."number"]==$data) {
195         // ja, eine neue holen
196         return getKdId();
197     } else {
198         return $data;
199     }
200 }
201
202 function chkContact($id) {
203     global $db;
204     $sql="select * from contact where cp_id = $id";
205     $rs=$db->getAll($sql);
206     if ($rs[0]["cp_id"]==$id) {
207         return true;
208     } else {
209         return false;
210     }
211 }
212
213 function getKdRefId($data) {
214 // gibt es die Nummer schon?
215     global $db,$file,$test;
216     if (empty($data) or !$data) {   
217         return false; 
218     } 
219     $sql="select * from $file where ".$file."number = '$data'";
220     $rs=$db->getAll($sql);
221     return $rs[0]["id"];
222 }
223
224 function suchFirma($tab,$data) {
225 // gibt die Firma ?
226     global $db;
227     if (empty($data) or !$data) {   
228         return false; 
229     }
230     $data=strtoupper($data);
231     $sql="select * from $tab where upper(name) like '%$data%'";
232     $rs=$db->getAll($sql);
233     if (!$rs) {
234         $org=$data;
235         while(strpos($data,"  ")>0) {
236             $data=ereg_replace("  "," ",$data);
237         }
238          $data=preg_replace("/[^A-Z0-9]/ ",".*",trim($data));
239         $sql="select * from $tab where upper(name) ~ '$data'"; 
240         $rs=$db->getAll($sql);
241         if (count($rs)==1) {
242             return array("cp_cv_id"=>$rs[0]["id"],"Firma"=>$rs[0]["name"]);
243         }
244         return false;
245     } else {
246         return array("cp_cv_id"=>$rs[0]["id"],"Firma"=>$rs[0]["name"]);
247     }
248 }
249
250
251 //Suche Nach Kunden-/Lieferantenummer
252 function getFirma($nummer,$tabelle) {
253     global $db;
254     $nummer=strtoupper($nummer);
255     $sql="select id from $tabelle where upper(".$tabelle."number) = '$nummer'";
256     $rs=$db->getAll($sql);
257     if (!$rs) {
258         $nr=ereg_replace(" ","%",$nummer);
259         $sql="select id,".$tabelle."number from $tabelle where upper(".$tabelle."number) like '$nr'";
260         $rs=$db->getAll($sql);
261         if ($rs) {
262             $nr=ereg_replace(" ","",$nummer);
263             foreach ($rs as $row) {
264                 $tmp=ereg_replace(" ","",$row[$tabelle."number"]);
265                 if ($tmp==$nr) return $row["id"];
266             }
267         } else { 
268             return false;
269         }
270     } else {
271         return $rs[0]["id"];
272     }
273 }
274
275 function getAllBG($db) {
276     $sql  = "select * from buchungsgruppen order by description";
277     $rs=$db->getAll($sql);
278     return $rs;
279 }
280
281 function anmelden() {
282     ini_set("gc_maxlifetime","3600");
283     $tmp = @file_get_contents("../config/authentication.pl");
284     preg_match("/'db'[ ]*=> '(.+)'/",$tmp,$hits);
285     $dbname=$hits[1];
286     preg_match("/'password'[ ]*=> '(.+)'/",$tmp,$hits);
287     $dbpasswd=$hits[1];
288     preg_match("/'user'[ ]*=> '(.+)'/",$tmp,$hits);
289     $dbuser=$hits[1];
290     preg_match("/'host'[ ]*=> '(.+)'/",$tmp,$hits);
291     $dbhost=($hits[1])?$hits[1]:"localhost";
292     preg_match("/'port'[ ]*=> '?(.+)'?/",$tmp,$hits);
293     $dbport=($hits[1])?$hits[1]:"5432";
294     preg_match("/[ ]*\\\$self->\{cookie_name\}[ ]*=[ ]*'(.+)'/",$tmp,$hits);
295     $cookiename=$hits[1];
296     if (!$cookiename) $cookiename='lx_office_erp_session_id';
297     $cookie=$_COOKIE[$cookiename];
298     if (!$cookie) header("location: ups.html");
299     $auth=authuser($dbhost,$dbport,$dbuser,$dbpasswd,$dbname,$cookie);
300     if (!$auth) { return false; };
301     $_SESSION["sessid"]=$cookie;
302     $_SESSION["cookie"]=$cookiename;
303     $_SESSION["employee"]=$auth["login"];
304     $_SESSION["mansel"]=$auth["dbname"];
305     $_SESSION["dbname"]=$auth["dbname"];
306     $_SESSION["dbhost"]=(!$auth["dbhost"])?"localhost":$auth["dbhost"];
307     $_SESSION["dbport"]=(!$auth["dbport"])?"5432":$auth["dbport"];
308     $_SESSION["dbuser"]=$auth["dbuser"];
309     $_SESSION["dbpasswd"]=$auth["dbpasswd"];
310     $_SESSION["db"]=new myDB($_SESSION["dbhost"],$_SESSION["dbuser"],$_SESSION["dbpasswd"],$_SESSION["dbname"],$_SESSION["dbport"],$showErr);
311     $_SESSION["authcookie"]=$authcookie;
312     $sql="select * from employee where login='".$auth["login"]."'";
313     $rs=$_SESSION["db"]->getAll($sql);
314     if(!$rs) {
315             return false;
316     } else {
317         if ($rs) {
318             $tmp=$rs[0];
319             $_SESSION["termbegin"]=(($tmp["termbegin"]>=0)?$tmp["termbegin"]:8);
320             $_SESSION["termend"]=($tmp["termend"])?$tmp["termend"]:19;
321             $_SESSION["Pre"]=$tmp["pre"];
322             $_SESSION["interv"]=($tmp["interv"]>0)?$tmp["interv"]:60;
323             $_SESSION["loginCRM"]=$tmp["id"];
324             $_SESSION["lang"]=$tmp["countrycode"]; //"de";
325             $_SESSION["kdview"]=$tmp["kdview"];
326             $sql="select * from defaults";
327             $rs=$_SESSION["db"]->getAll($sql);
328             $_SESSION["ERPver"]=$rs[0]["version"];
329             return true;
330         } else {
331             return false;
332         }
333     }
334 }
335
336 function authuser($dbhost,$dbport,$dbuser,$dbpasswd,$dbname,$cookie) {
337     $db=new myDB($dbhost,$dbuser,$dbpasswd,$dbname,$dbport,true);
338     $sql="select sc.session_id,u.id from auth.session_content sc left join auth.user u on ";
339     $sql.="u.login=sc.sess_value left join auth.session s on s.id=sc.session_id ";
340     $sql.="where session_id = '$cookie' and sc.sess_key='login'";// order by s.mtime desc";
341     $rs=$db->getAll($sql,"authuser_1");
342     if (!$rs) return false;
343     $stmp="";
344     if (count($rs)>1) {
345         header("location:../login.pl?action=logout");
346         /*foreach($rs as $row) {
347                 $stmp.=$row["session_id"].",";
348         }
349         $sql1="delete from session where id in (".substr($stmp,-1).")";
350         $sql2="delete from session_content where session_id in (".substr($stmp,-1).")";
351         $db->query($sql1,"authuser_A");
352         $db->query($sql2,"authuser_B");
353         $sql3="insert into session ";*/
354     }
355     $sql="select * from auth.user where id=".$rs[0]["id"];
356     $rs1=$db->getAll($sql,"authuser_1");
357     if (!$rs1) return false;
358     $auth=array();
359     $auth["login"]=$rs1[0]["login"];
360     $sql="select * from auth.user_config where user_id=".$rs[0]["id"];
361     $rs1=$db->getAll($sql,"authuser_2");
362     $keys=array("dbname","dbpasswd","dbhost","dbport","dbuser");
363     foreach ($rs1 as $row) {
364         if (in_array($row["cfg_key"],$keys)) {
365                 $auth[$row["cfg_key"]]=$row["cfg_value"];
366         }
367     }
368     $sql="update auth.session set mtime = '".date("Y-M-d H:i:s.100001")."' where id = '".$rs[0]["session_id"]."'";
369     $db->query($sql,"authuser_3");
370     return $auth;
371 }
372
373 ?>