X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=peppershop%2Ferplib.php;h=8b22d42eb5c9f07cb862d9e925954b42d29608b2;hb=fba4f72dc6a7177d46be67bf4689502b5d53cd19;hp=28902e9853a4c63dacf3d0b6b6e52057e685374b;hpb=2b44867fc2d4e3c061c126890cc90fcaa84b6baa;p=kivitendo-erp.git diff --git a/peppershop/erplib.php b/peppershop/erplib.php index 28902e985..8b22d42eb 100644 --- a/peppershop/erplib.php +++ b/peppershop/erplib.php @@ -13,6 +13,7 @@ class erp { var $db = false; var $error = false; + var $pricegroup = 0; var $TAX = false; var $mkPart = true; var $divStd = false; @@ -20,14 +21,18 @@ class erp { var $doordnr = false; var $docustnr = false; var $lager = 1; + var $warehouse_id = 0; + var $transtype = 0; var $preordnr = ''; var $precustnr = ''; var $OEinsPart = false; var $INVnetto = true; //Rechnungen mit Nettopreisen var $SHOPincl = true; //Shoppreise sind Brutto - function erp($db,$error,$divStd,$divVerm,$doordnr,$docustnr,$preordnr,$precustnr,$INVnetto,$SHOPincl,$OEinsPart,$lager) { + function erp($db,$error,$divStd,$divVerm,$doordnr,$docustnr,$preordnr,$precustnr,$INVnetto,$SHOPincl,$OEinsPart,$lager,$pricegroup,$ERPusrID) { $this->db = $db; + $this->pricegroup = $pricegroup; + $this->employee_id = $ERPusrID; $this->error = $error; $this->divStd = $divStd; $this->divVerm = $divVerm; @@ -40,6 +45,18 @@ class erp { $this->OEinsPart = ($OEinsPart == 1)?true:false; $this->lager = ($lager)?$lager:1; $this->getTax(); + if ( $lager > 1 ) { + $sql = "SELECT warehouse_id from bin where id = ".$this->lager; + $rs = $this->db->getOne($sql); + if ( $rs['warehouse_id'] > 0 ) { + $this->warehouse_id = $rs['warehouse_id']; + $sql = "SELECT id from transfer_type WHERE direction = 'in' and description = 'stock'"; + $rs = $this->db->getOne($sql); + $this->transtype = $rs['id']; + } else { + $this->lager = 1; + } + } } function getTax() { @@ -52,7 +69,7 @@ class erp { $rs = $this->db->getAll($sql); if ($rs) foreach ($rs as $row) { $nr = $row['bugru']; - if (!$this->TAX[$nr]) { + if ( !$this->TAX[$nr] || !array_key_exists($nr, $this->TAX) ) { $data = array(); $data['startdate'] = $row['startdate']; $data['rate'] = $row['rate']; @@ -171,7 +188,7 @@ class erp { $this->db->rollback(); return false; } else { - $this->err->out(" Auftrag: ".$data["ordnumber"]." "); + $this->error->out(" Auftrag: ".$data["ordnumber"]." "); return $rs['id']; } } @@ -224,7 +241,7 @@ class erp { return true; } function insCustomer($data) { - $this->err->out('Insert:'.$data["name"].' '); + $this->error->out('Insert:'.$data["name"].' '); if ($this->docustnr == 1) { $data['customernumber'] = $this->getNewNr('customer'); } else { @@ -239,7 +256,7 @@ class erp { $sql = "SELECT id FROM customer WHERE customernumber = '".$data['customernumber']."'"; $rs = $this->db->getOne($sql); $rc = $rs['id']; - $this->err->out("Kd-Nr: ".$data['customernumber'].":".$rs['id']); + $this->error->out("Kd-Nr: ".$data['customernumber'].":".$rs['id']); } else { $this->error->write('erplib','Kunde anlegen: '.$data["name"]); $this->db->rollback(); @@ -252,7 +269,7 @@ class erp { $sql = "SELECT * FROM customer WHERE id = ".$data['customer_id']; $rs = $this->db->getOne($sql); if ($rs['id'] == $data['customer_id']) { - $this->err->out('Update:'.$data['customer_id'].' '); + $this->error->out('Update:'.$data['customer_id'].' '); $sql = "UPDATE customer SET greeting = :greeting,name = :name,street = :street,city = :city,country = :country,"; $sql .= "zipcode = :zipcode,contact = :contact,phone = :phone,email = :email WHERE id = :customer_id"; $rc = $this->db->update($sql,$data); @@ -295,7 +312,7 @@ class erp { $this->error->write('erplib','Auftrag anlegen'); return -1; } - $this->err->out($data["customer"]["firma"]." "); + $this->error->out($data["customer"]["firma"]." "); $rc = $this->db->Commit(); return $data["customer_id"]; } @@ -351,7 +368,7 @@ class erp { } else { return $rs['id']; } - } else if ($this->mkPart and $new) { + } else if ($new and $this->mkPart) { $data['id'] = $this->mkNewPart($data); if ($long) { return $data; @@ -369,6 +386,7 @@ class erp { $data = array(partnumber,description,longdescription,weight,sellprice,taxrate,partsgroup,unit) Rückgabe parts.id */ + $link = ''; if ($data['partnumber'] == '') { $this->error->write('erplib','Artikelnummer fehlt'); return false; @@ -408,10 +426,35 @@ class erp { $sql .= "VALUES (:partnumber,:description,:sellprice,:weight,:notes,:shop,:unit,:partsgroup_id,"; $sql .= ":image,:buchungsgruppen_id,1,1,1)"; $rc = $this->db->insert($sql,$data); + $data['parts_id'] = $this->chkPartnumber($data,false); + if ( $this->pricegroup > 0 ) { + $sql = "INSERT INTO prices (parts_id,pricegroup_id,price) VALUES (:parts_id,:pricegroup,:shoppreis)"; + $data['pricegroup'] = $this->pricegroup; + $rc = $this->db->insert($sql,$data); + }; + if ( $data['onhand'] > 0 and $this->lager > 1) $this->insLager($data); $x = $this->chkPartnumber($data,False); - $this->err->out('Neuer Artikel: '.$data['partnumber'],true); - $this->error->write('erplib','Artikel neu: '.$data['partnumber']); + $this->error->write('erplib',$data['description'].' '.$data['partnumber']); + $this->error->out(sprintf($link,$data['parts_id']).$data['description'].' '.$data['partnumber'].'',true); return $x; } + function insLager($data) { + $rc = $this->db->Begin(); + $sql = "SELECT nextval(('id'::text)::regclass) as id from id"; + $rs = $this->db->getOne($sql); + $sql = "INSERT INTO inventory (warehouse_id,parts_id,shippingdate,employee_id,bin_id,qty,trans_id,trans_type_id,comment) "; + $sql .= "VALUES (:wid,:parts_id,now(),:employee_id,:bid,:onhand,:next,:tt,'Shopübernahme')"; + $data['next'] = $rs['id']; + $data['tt'] = $this->transtype; + $data['bid'] = $this->lager; + $data['wid'] = $this->warehouse_id; + $data['employee_id'] = $this->employee_id; + $rc = $this->db->insert($sql,$data); + if ( $rc ) { + $this->db->Commit(); + } else { + $this->db->Rollback(); + } + } } ?>