var $db = false;
var $error = false;
+ var $pricegroup = 0;
var $TAX = false;
var $mkPart = true;
var $divStd = false;
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;
$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() {
$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'];
$this->db->rollback();
return false;
} else {
- $this->err->out(" Auftrag: ".$data["ordnumber"]." ");
+ $this->error->out(" Auftrag: ".$data["ordnumber"]." ");
return $rs['id'];
}
}
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 {
$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();
$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);
$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"];
}
} 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;
$data = array(partnumber,description,longdescription,weight,sellprice,taxrate,partsgroup,unit)
Rückgabe parts.id
*/
+ $link = '<a href="../ic.pl?action=edit&id=%d" target="_blank">';
if ($data['partnumber'] == '') {
$this->error->write('erplib','Artikelnummer fehlt');
return false;
$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'].'</a>',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();
+ }
+ }
}
?>