+
+
+XML;
+ $_xmlobj = new SimpleXMLExtended($xmlstr);
+ $xmlobj = $_xmlobj->AddChild('adressen','');
+ //$sxe->addAttribute('type', 'documentary');
+
+
+
+ $xml = '';
+ $anz_gesamt = 0;
+ $anz_result = 0;
+ $i = 0;
+ $gesamt_umsatz = 0;
+ $anzeige_umsatz = 0;
+ while($adresse = $this->app->DB->Fetch_Array($adressen))
+ {
+
+ $do = true;
+ if($re && $gu)
+ {
+
+ if(isset($xmldata['umsatzvon']))
+ {
+ if((float)$adresse['rechnung_umsatz_netto'] - (float)$adresse['gutschrift_umsatz_netto'] < (float)$xmldata['umsatzvon'])$do = false;
+ }
+ if(isset($xmldata['umsatzbis']))
+ {
+ if((float)$adresse['rechnung_umsatz_netto'] - (float)$adresse['gutschrift_umsatz_netto'] > (float)$xmldata['umsatzbis'])$do = false;
+ }
+ }elseif($re)
+ {
+ if(isset($xmldata['umsatzvon']))
+ {
+ if((float)$adresse['rechnung_umsatz_netto'] < (float)$xmldata['umsatzvon'])$do = false;
+ }
+ if(isset($xmldata['umsatzbis']))
+ {
+ if((float)$adresse['rechnung_umsatz_netto'] > (float)$xmldata['umsatzbis'])$do = false;
+ }
+ }
+ if($filterkategorie && $do)
+ {
+ $do2 = false;
+ if($re && $adresse['re_iskat'])$do2 = true;
+ if($gu && $adresse['gu_iskat'])$do2 = true;
+ if($be && $adresse['be_iskat'])$do2 = true;
+ if($ab && $adresse['ab_iskat'])$do2 = true;
+ if($an && $adresse['an_iskat'])$do2 = true;
+ if(!$do2)$do = false;
+ }
+ if($do && $re && $gu)
+ {
+ $gesamt_umsatz += (float)$adresse['rechnung_umsatz_netto'] - (float)$adresse['gutschrift_umsatz_netto'];
+ }
+ if($do && $i >= $offset && $i < $offset+$_limit)
+ {
+ $anzeige_umsatz += (float)$adresse['rechnung_umsatz_netto'] - (float)$adresse['gutschrift_umsatz_netto'];
+ $adrobj = $xmlobj->AddChild('adresse','');
+ //$xml .= '';
+ $RowKeys = array_keys($adresse);
+ $RowValues = array_values($adresse);
+ $cRowKeys = (!empty($RowKeys)?count($RowKeys):0);
+ for($k = 1; $k < $cRowKeys;$k+=2)
+ {
+ if($RowKeys[$k] !== 're_iskat' && $RowKeys[$k] !== 'gu_iskat' && $RowKeys[$k] !== 'be_iskat' && $RowKeys[$k] !== 'ab_iskat' && $RowKeys[$k] !== 'an_iskat')
+ {
+ if($RowKeys[$k] === 'rechnung_umsatz_netto' || $RowKeys[$k] === 'gutschrift_umsatz_netto' || $RowKeys[$k] === 'bestellung_umsatz_netto' || $RowKeys[$k] === 'auftrag_umsatz_netto' || $RowKeys[$k] === 'angebot_umsatz_netto')
+ $RowValues[$k] = number_format((float)$this->GetPlainText($RowValues[$k]),2,'.','');
+ $valobj = $adrobj->AddChild($RowKeys[$k],'');
+ if($this->usecdata)
+ {
+ if ((string)$this->GetPlainText($RowValues[$k]) != '')$valobj->addCData($RowValues[$k]);
+ }else {
+ if ((string)$this->GetPlainText($RowValues[$k]) != '') $valobj->value = (string)$this->app->erp->GetPlainText($RowValues[$k]);
+ }
+ }
+ //$xml .= '<'.$RowKeys[$k].'>'.(string)$this->app->erp->GetPlainText($RowValues[$k]).''.$RowKeys[$k].'>';
+ }
+ //$xml .= '';
+ $anz_result++;
+ }
+ if($do)$i++;
+ }
+ $xmlobj->AddChild('anz_gesamt',$i);
+ $xmlobj->AddChild('anz_result',$anz_result);
+ if($re && $gu)
+ {
+ $xmlobj->AddChild('anzeige_umsatz',number_format($anzeige_umsatz,2,'.',''));
+ $xmlobj->AddChild('gesamt_umsatz',number_format($gesamt_umsatz,2,'.',''));
+ }
+ $xml = str_replace(array('',"",''),array('','',''),$_xmlobj->asXML());
+ unset($_xmlobj);
+
+ }else{
+ $xml = '00';
+ if($this->app->DB->error())
+ {
+ $xml .= '' .$this->GetPlainText($this->app->DB->error()).'';
+ }
+ }
+ //$xml .= $xmldata;
+ if ($intern != false) {
+ return $xml;
+ }
+ $this->XMLResponse(1,$xml);
+ $this->app->ExitXentral();
+ }
+
+
+ function ApiGruppeCreate()
+ {
+ $id = $this->app->Secure->GetGET("id");
+
+ $xmldata = $this->XMLPost();
+
+ $this->app->DB->Insert("INSERT INTO gruppen (id) VALUES ('')");
+
+ $id = $this->app->DB->GetInsertID();
+
+ $this->ApiGruppeEdit($id,true);
+
+ $this->XMLResponse(1,"$id");
+ $this->app->ExitXentral();
+ }
+
+
+ function ApiGruppeEdit($id="",$internal=false)
+ {
+ $xmldata = $this->XMLPost();
+ $id = $xmldata['id'];
+ if($id <=0)
+ $id = $this->app->Secure->GetGET("id");
+
+ $id = $this->app->DB->Select("SELECT id FROM gruppen WHERE id='$id' LIMIT 1");
+ // Key gibt es nicht
+ if($id <= 0)
+ $this->XMLResponse(5);
+
+ $xmldata = $this->XMLPost();
+
+ if($xmldata['porto_preis']!="" && $xmldata['porto_artikelid']!="" && !is_array($xmldata['porto_preis']))
+ {
+ $this->app->erp->AddVerkaufspreisGruppe($xmldata['porto_artikelid'],1,$id,$xmldata['porto_preis']);
+ }
+
+ foreach($xmldata as $key=>$value)
+ {
+ if(is_array($value)) {
+ $value='';
+ }
+ if($key==='internebemerkung') {
+ $value = html_entity_decode($value);
+ }
+ if($key!=='id'){
+ $this->app->DB->Update("UPDATE gruppen SET $key='$value' WHERE id='$id' LIMIT 1");
+ }
+ }
+
+ if($internal){
+ return $id;
+ }
+
+ $this->XMLResponse(1);
+ $this->app->ExitXentral();
+ }
+
+
+ public function ApiGruppeGet()
+ {
+ $xmldata = $this->XMLPost();
+ if($xmldata['id'] == '') {
+ $id = $this->app->Secure->GetGET("id");
+ }else{
+ $id =$xmldata['id'];
+ }
+ //checl
+ $id = $this->app->DB->Select("SELECT id FROM gruppen WHERE id='$id' LIMIT 1");
+
+ if($id > 0){
+ $this->XMLResponse(1, $this->app->erp->XMLGruppe($id, $this->usecdata));
+ $this->app->ExitXentral();
+ }
+
+ $this->XMLResponse(5);
+ $this->app->ExitXentral();
+ }
+
+
+ // alte funktion
+ public function ApiShopimages()
+ {
+ $artikel = $this->app->Secure->GetGET("artikel");
+ $number = $this->app->Secure->GetGET("number");
+ $datei = $this->app->DB->SelectArr("SELECT datei FROM datei_stichwoerter WHERE subjekt='Shopbild' AND objekt='Artikel' AND parameter='$artikel'");
+ if($number <= 0) $number = 1;
+
+ $datei = $datei[$number-1]['datei'];
+
+ $mimetype = mime_content_type($this->app->erp->GetDateiPfad($datei));
+ // Wir werden eine PDF Datei ausgeben
+ header('Content-type: '.$mimetype);
+ echo $this->app->erp->GetDatei($datei);
+ $this->app->ExitXentral();
+ }
+
+ public function ApiExportVorlageGet()
+ {
+ $id = $this->app->Secure->GetGET("id");
+ $projekt = $this->app->Secure->GetGET("projekt");
+ $von = $this->app->Secure->GetGET("von");
+ $bis = $this->app->Secure->GetGET("bis");
+
+ if($id!="")
+ {
+ if($projekt!="")
+ {
+ $projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' LIMIT 1");
+ }
+ }
+
+ //check
+ $id = $this->app->DB->Select("SELECT id FROM exportvorlage WHERE id='$id' AND apifreigabe=1 LIMIT 1");
+
+ $filter['projekt']=$projekt;
+ $filter['von']=$von;
+ $filter['bis']=$bis;
+
+ if($id > 0){
+ $this->XMLResponse(1, $this->app->erp->XMLExportVorlage($id, $filter, $this->usecdata));
+ $this->app->ExitXentral();
+ }
+
+ $this->XMLResponse(5);
+ $this->app->ExitXentral();
+ }
+
+ public function ApiBerichteGet()
+ {
+ $id = $this->app->Secure->GetGET("id");
+
+ $xmldata = $this->XMLPost();
+ if($id=="") $id = $xmldata['id'];
+
+ $id = $this->app->DB->Select("SELECT id FROM berichte WHERE id='$id' LIMIT 1");
+
+ if($id > 0){
+ $this->XMLResponse(1, $this->app->erp->XMLBerichte($id, $this->usecdata));
+ $this->app->ExitXentral();
+ }
+ $this->XMLResponse(5);
+ $this->app->ExitXentral();
+ }
+
+ public function ApiArtikelList($intern = false)
+ {
+ $xmldata = $this->XMLPost();
+ $keys = array_keys($xmldata);
+ $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.* FROM artikel a";
+ if($xmldata['kategorie'] != ''){
+ $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.*,ak.bezeichnung FROM artikel a";
+ $tabellenkuerzel = "a.";
+ $sql .= " inner join artikelkategorien ak on ak.id = SUBSTRING_INDEX(a.typ,'_',1)";
+ }
+ $wherevorhanden = false;
+ $ckeys = (!empty($keys)?count($keys):0);
+ for($i=0; $i<$ckeys; $i++){
+ if( ($keys[$i] != "order") && ($keys[$i] != "field") && ($keys[$i] != "limit") && ($keys[$i] != "offset") ){
+ $this->app->DB->Select("SELECT '" . $keys[$i] . "' FROM artikel LIMIT 1");
+ if ($this->app->DB->error() == '') {
+ if ($wherevorhanden == false) {
+ if($keys[$i] == 'kategorie'){
+ // schauen ob mehrere kategorien
+ if(is_array($xmldata[$keys[$i]])){
+ $sql .= " WHERE (";
+ foreach($xmldata[$keys[$i]] as $katvalue){
+ if(is_numeric($katvalue)){
+ $sql .= " ak.id = '" . $katvalue . "' OR ";
+ } else {
+ $sql .= " ak.bezeichnung LIKE '%" . $katvalue . "%' OR ";
+ }
+ }
+ $sql = rtrim($sql, " OR");
+ $sql .= " ) ";
+
+ }else{
+ if(is_numeric($xmldata[$keys[$i]])){
+ $sql .= " WHERE ak.id = '" . $xmldata[$keys[$i]] . "' AND ";
+ } else {
+ $sql .= " WHERE ak.bezeichnung LIKE '%" . $xmldata[$keys[$i]] . "%' AND ";
+ }
+ }
+ } else {
+ $sql .= " WHERE " . $tabellenkuerzel.$keys[$i] . " LIKE '%" . $xmldata[$keys[$i]] . "%' AND ";
+ }
+
+ $wherevorhanden = true;
+ } else {
+ if($keys[$i] === 'kategorie') {
+ $sql .= "ak.bezeichnung LIKE '%" . $xmldata[$keys[$i]] . "%' AND ";
+ }elseif($keys[$i] === 'nummer') {
+ if(is_array($xmldata[$keys[$i]])) {
+
+ } else{
+ $sql .= $tabellenkuerzel . $keys[$i] . " LIKE '%" . $xmldata[$keys[$i]] . "%' AND ";
+ }
+ } else{
+ $sql .= $tabellenkuerzel.$keys[$i] . " LIKE '%" . $xmldata[$keys[$i]] . "%' AND ";
+ }
+ }
+ }
+ }
+ }
+ $sql = trim($sql);
+ $sql = rtrim($sql, " AND");
+
+ if (array_key_exists('order', $xmldata)) {
+ if (is_array($xmldata['order'])) {
+ $orderkeys = array_keys($xmldata['order']);
+ if (array_key_exists('field', $xmldata['order'])) {
+ if ($xmldata['order']['field'] != "") {
+ $this->app->DB->Select("SELECT " . $xmldata['order']['field'] . " FROM artikel LIMIT 1");
+ if ($this->app->DB->error() == '') {
+ if ($xmldata['order']['desc'] == 0 || $xmldata['order']['desc'] == "") {
+ $sql .= " ORDER BY " . $tabellenkuerzel . $xmldata['order']['field'] . " ASC";
+ } elseif ($xmldata['order']['desc'] == 1) {
+ $sql .= " ORDER BY " . $tabellenkuerzel . $xmldata['order']['field'] . " DESC";
+ }
+ }
+ }
+
+ }
+ }
+
+ if (array_key_exists('limit', $xmldata)) {
+ if ($xmldata['limit'] > 0) {
+ if (array_key_exists('offset', $xmldata)) {
+ if ($xmldata['offset'] != "") {
+ $sql .= " LIMIT " . $xmldata['offset'] . ", " . $xmldata['limit'];
+ } else {
+ $sql .= " LIMIT " . $xmldata['limit'];
+ }
+ } else {
+ $sql .= " LIMIT " . $xmldata['limit'];
+ }
+ }
+ }
+ }
+
+ $ergebnis = $this->app->DB->SelectArr($sql);
+ $anz_gesamt = $this->app->DB->Select("SELECT FOUND_ROWS()");
+ if(!is_array($ergebnis)){
+ $this->XMLResponse(1,$sql);
+ }
+
+ $output = "";
+
+ if((!empty($ergebnis)?count($ergebnis):0)>0)
+ {
+ $output .= "";
+
+ $cergebnis = (!empty($ergebnis)?count($ergebnis):0);
+ for($i=0;$i<$cergebnis;$i++)
+ {
+ $output .= "- ";
+
+ foreach($ergebnis[$i] as $key=>$value){
+ if($this->usecdata) {
+ $output .= "<$key>$key>";
+ }else{
+ $output .= "<$key>" . htmlspecialchars($value) . "$key>";
+ }
+ }
+ $output .= "
";
+ }
+ $output .= "".$anz_gesamt."";
+ $output .= "".(!empty($ergebnis)?count($ergebnis):0)."";
+ $output .= "".$sql."";
+ $output .= "";
+ }
+
+ if($output != ""){
+ if ($intern != false) {
+ return $output;
+ }
+ $this->XMLResponse(1, $output);
+ $this->app->ExitXentral();
+ }
+ if ($intern != false) {
+ return false;
+ }
+ $this->XMLResponse(4);
+ $this->app->ExitXentral();
+ }
+
+ public function ApiArtikelStueckliste()
+ {
+ $xmldata = $this->XMLPost();
+
+ $keys = array_keys($xmldata);
+
+ //$this->app->erp->LogFile(print_r($xmldata, 1));
+
+ $mineininserterfolgreich = false;
+
+ if(array_key_exists('stuecklistevonartikel', $xmldata)){
+ $artikelvorhanden = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer = '".$xmldata['stuecklistevonartikel']."' LIMIT 1");
+ if($artikelvorhanden != ""){
+ $altestueckliste = $this->app->DB->SelectArr("SELECT id FROM stueckliste WHERE stuecklistevonartikel = '$artikelvorhanden'");
+ if(array_key_exists('items', $xmldata)){
+ if(is_array($xmldata['items'])){
+ if($xmldata['items']['item'][1] != ""){
+ $stuecklistearray = $xmldata['items']['item'];
+ }else{
+ $stuecklistearray = $xmldata['items'];
+ }
+ foreach($stuecklistearray as $key=>$value){
+ if(array_key_exists('stuecklistemenge', $value)){
+ $stuecklistemenge = str_replace(',', '.', $value['stuecklistemenge']);
+ if($stuecklistemenge > 0){
+ if(array_key_exists('nummer', $value)){
+ $nummervorhanden = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer = '".$value['nummer']."' LIMIT 1");
+ if($nummervorhanden != ""){
+ //hier optional
+ if(array_key_exists('stuecklisteart', $value) && !is_array($value['stuecklisteart'])){//standard et
+ $stuecklisteart = $value['stuecklisteart'];
+ if($stuecklisteart != "et" && $stuecklisteart != "it" && $stuecklisteart != "bt"){
+ $stuecklisteart = "et";
+ }else{
+ $stuecklisteart = $value['stuecklisteart'];
+ }
+ if($stuecklisteart == ""){
+ $stuecklisteart = "et";
+ }
+ }else{
+ $stuecklisteart = "et";
+ }
+ if(array_key_exists('stuecklistealternative', $value) && !is_array($value['stuecklistealternative'])){
+ $stuecklistealternative = $value['stuecklistealternative'];
+ if($stuecklistealternative == ""){
+ $stuecklistealternative = "0";
+ }else{
+ $alternativevorhanden = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer = '$stuecklistealternative' LIMIT 1");
+ if($alternativevorhanden != ""){
+ $stuecklistealternative = $alternativevorhanden;
+ }else{
+ $stuecklistealternative = 0;
+ }
+ }
+ }else{
+ $stuecklistealternative = "0";
+ }
+ if(array_key_exists('stuecklistereferenz', $value) && !is_array($value['stuecklistereferenz'])){
+ $stuecklistereferenz = $value['stuecklistereferenz'];
+ if($stuecklistereferenz == ""){
+ $stuecklistereferenz = "";
+ }
+ }else{
+ $stuecklistereferenz = "";
+ }
+ if(array_key_exists('stuecklistelayer', $value) && !is_array($value['stuecklistelayer'])){//standard Top
+ if($value['stuecklistelayer'] != "Top" && $value['$stuecklistelayer'] != "Bottom"){
+ $stuecklistelayer = "Top";
+ }else{
+ $stuecklistelayer = $value['stuecklistelayer'];
+ }
+ if($stuecklistelayer == ""){
+ $stuecklistelayer = "Top";
+ }
+ }else{
+ $stuecklistelayer = "Top";
+ }
+ if(array_key_exists('stuecklisteplatzierung', $value) && !is_array($value['stuecklisteplatzierung'])){//standard DP
+ if($value['stuecklisteplatzierung'] != "DP" && $value['$stuecklisteplatzierung'] != "DNP"){
+ $stuecklisteplatzierung = "DP";
+ }else{
+ $stuecklisteplatzierung = $value['stuecklisteplatzierung'];
+ }
+ if($stuecklisteplatzierung == ""){
+ $stuecklisteplatzierung = "DP";
+ }
+ }else{
+ $stuecklisteplatzierung = "DP";
+ }
+ if(array_key_exists('stuecklistewert', $value) && !is_array($value['stuecklistewert'])){
+ $stuecklistewert = $value['stuecklistewert'];
+ if($stuecklistewert == ""){
+ $stuecklistewert = "";
+ }
+ }else{
+ $stuecklistewert = "";
+ }
+ if(array_key_exists('stuecklistebauform', $value) && !is_array($value['stuecklistebauform'])){
+ $stuecklistebauform = $value['stuecklistebauform'];
+ if($stuecklistebauform == ""){
+ $stuecklistebauform = "";
+ }
+ }else{
+ $stuecklistebauform = "";
+ }
+ if(array_key_exists('stuecklistezachse', $value) && !is_array($value['stuecklistezachse'])){
+ $stuecklistezachse = $value['stuecklistezachse'];
+ if($stuecklistezachse == ""){
+ $stuecklistezachse = "";
+ }
+ }else{
+ $stuecklistezachse = "";
+ }
+ if(array_key_exists('stuecklistexposition', $value) && !is_array($value['stuecklistexposition'])){
+ $stuecklistexposition = $value['stuecklistexposition'];
+ if($stuecklistexposition == ""){
+ $stuecklistexposition = "";
+ }
+ }else{
+ $stuecklistexposition = "";
+ }
+ if(array_key_exists('stuecklisteyposition', $value) && !is_array($value['stuecklisteyposition'])){
+ $stuecklisteyposition = $value['stuecklisteyposition'];
+ if($stuecklisteyposition == ""){
+ $stuecklisteyposition = "";
+ }
+ }else{
+ $stuecklisteyposition = "";
+ }
+
+ $this->app->DB->Insert("INSERT INTO stueckliste (artikel, referenz, place, layer, stuecklistevonartikel,
+ menge, firma, wert, bauform, alternative, zachse, xpos, ypos, art)
+ VALUES ('$nummervorhanden', '$stuecklistereferenz', '$stuecklisteplatzierung', '$stuecklistelayer', '$artikelvorhanden',
+ '$stuecklistemenge', 1, '$stuecklistewert', '$stuecklistebauform', '$stuecklistealternative', '$stuecklistezachse', '$stuecklistexposition', '$stuecklisteyposition', '$stuecklisteart')");
+
+ if(!$this->app->DB->error()){
+ $this->app->DB->Update("UPDATE artikel SET stueckliste = 1 WHERE id = '$artikelvorhanden'");
+ $mineininserterfolgreich = true;
+ }
+
+ }else{
+ $this->XMLResponse(4);
+ }
+ }
+ }else{
+ $this->XMLResponse(4);
+ }
+ }
+ }
+
+ if($mineininserterfolgreich == true){
+ foreach($altestueckliste as $key2=>$value2){
+ $this->app->DB->Delete("DELETE FROM stueckliste WHERE id = '".$value2['id']."'");
+ }
+ $this->XMLResponse(1);
+ $this->app->ExitXentral();
+ }
+ }
+ }
+ }else{
+ $this->XMLResponse(4);
+ }
+ }else{
+ $this->XMLResponse(4);
+ }
+ }
+
+
+ public function ApiAdresseAccountsGet()
+ {
+ $xmldata = $this->XMLPost();
+ $id = $this->app->Secure->GetGET("id");
+ $art = $this->app->Secure->GetGET("art");
+ if($xmldata['id']!=''){
+ $id = $xmldata['id'];
+ }
+ if($xmldata['art']!=''){
+ $art = $xmldata['art'];} else{$art = '%%';
+ }
+ $filter['art']=$art;
+ $filter['id']=$id;
+ if($id > 0 ) {
+ $this->XMLResponse(1, $this->app->erp->XMLAdresseAccounts($filter, $this->usecdata));
+ } else {
+ $this->XMLResponse(5);
+ }
+ $this->app->ExitXentral();
+ }
+
+ public function ApiAdresseAccountCreate()
+ {
+ $xmldata = $this->XMLPost();
+
+ if($xmldata['adresse'] == '' || is_array($xmldata['adresse']) || $xmldata['bezeichnung'] == '' || is_array($xmldata['bezeichnung'])){
+ $this->XMLResponse(5, "Adress-ID und/oder Bezeichnung fehlt");
+ $this->app->ExitXentral();
+ }
+
+ $newId = $this->app->erp->CreateAccount($xmldata['adresse'],$xmldata);
+ $this->XMLResponse(1,"$newId");
+ $this->app->ExitXentral();
+ }
+
+ public function ApiAdresseAccountEdit(){
+
+ $id = $this->app->Secure->GetGET("id");
+ if($id==''){
+ $xmldata = $this->XMLPost();
+ $id = $xmldata['id'];
+ }
+ $id = $this->app->DB->Select("SELECT id FROM adresse_accounts WHERE id='$id' LIMIT 1");
+
+ // Key gibt es nicht
+ if($id <= 0){
+ $this->XMLResponse(5);
+ }
+
+ $xmldata = $this->XMLPost();
+
+ foreach($xmldata as $key=>$value)
+ {
+ if(is_array($value))
+ {
+ $value='';
+ }
+ if($key!=="id"){
+ if($key === "gueltig_ab" || $key === "gueltig_bis"){
+ if($value == "" || $value == "0000-00-00" || $value === "00.00.0000"){
+ $value = '0000-00-00';
+ }else{
+ $value = date('Y-m-d',strtotime($value));
+ }
+ }
+ $this->app->DB->Update("UPDATE adresse_accounts SET $key='$value' WHERE id='$id' LIMIT 1");
+ }
+ }
+
+ $this->XMLResponse(1);
+ $this->app->ExitXentral();
+ }
+
+ public function ApiArtikelkontingenteGet()
+ {
+ $xmldata = $this->XMLPost();
+ if(is_array($xmldata) && !empty($xmldata)){
+ $filter = $xmldata;
+ }else{
+ $filter['id'] = $this->app->Secure->GetGET("id");
+ $filter['projekt'] = $this->app->Secure->GetGET("projekt");
+ $filter['nummer'] = $this->app->Secure->GetGET("nummer");
+ $filter['von'] = $this->app->Secure->GetGET("von");
+ $filter['bis'] = $this->app->Secure->GetGET("bis");
+ }
+
+ if($filter['nummer']!="" || $filter['id']!=""){
+ $this->XMLResponse(1, $this->app->erp->XMLArtikelkontingente($filter, $this->usecdata));
+ }
+ else{
+ $this->XMLResponse(5);
+ }
+ $this->app->ExitXentral();
+ }
+
+ protected function getApiAccount(){
+ if(!$this->apiAccount){
+ $this->apiAccount = $this->apiAccountService->getApiAccountById($this->api_id);
+ }
+
+ return $this->apiAccount;
+ }
+
+ public function EventAPIAdd($eventname,$parameter,$module,$action,$kommentar='', $api = 0)
+ {
+ $module_call_from = isset($this->app->Secure)?$this->app->Secure->GetGET('module'):'';
+
+ try {
+ $apiaktiv = $this->getApiAccount()->isActive();
+ } catch (ApiAccountNotFoundException $e){
+ $apiaktiv = false;
+ }
+
+
+ if($module_call_from !=='api')
+ {
+ $uebertragungen = $this->app->DB->SelectArr("select a.id FROM api_account a INNER JOIN uebertragungen_account u ON a.id = u.api AND a.aktiv=1 AND u.aktiv = 1 INNER JOIN uebertragungen_event_einstellungen e ON u.id = e.uebertragung_account AND e.aktiv = 1 WHERE e.eventname = '$eventname' group by a.id");
+
+ if($uebertragungen)
+ {
+ foreach($uebertragungen as $uebertragung)
+ {
+ $aacount = $uebertragung['id'];
+ if($aacount){
+ $this->app->DB->Insert("INSERT INTO event_api (id,cachetime,eventname,parameter,retries,module,action,kommentar,api)
+ VALUES ('',NOW(),'$eventname','$parameter','0','$module','$action','$kommentar','$aacount')");
+ $tmpid = $this->app->DB->GetInsertID();
+ $this->EventCall($tmpid);
+ }
+ }
+ }
+ }
+
+ if($apiaktiv === true && $module_call_from !== 'api')
+ {
+ $this->app->DB->Insert("INSERT INTO event_api (cachetime,eventname,parameter,retries,module,action,kommentar,api)
+ VALUES (NOW(),'$eventname','$parameter','0','$module','$action','$kommentar','$api')");
+ $tmpid = $this->app->DB->GetInsertID();
+ $this->EventCall($tmpid);
+ } else {
+ return false;
+ }
+
+ return null;
+ }
+
+ /**
+ * @param int $id
+ *
+ * @return bool
+ */
+ public function EventCall($id)
+ {
+ $eventApiArr = $id <= 0?null:$this->app->DB->SelectRow(
+ sprintf(
+ 'SELECT * FROM `event_api` WHERE `id` = %d LIMIT 1',
+ $id
+ )
+ );
+
+ if(empty($eventApiArr)) {
+ return false;
+ }
+
+ $eventname = $eventApiArr['eventname'];
+ $parameter = $eventApiArr['parameter'];
+ $module = $eventApiArr['module'];
+ $action = $eventApiArr['action'];
+ $api = $eventApiArr['api'];
+
+ switch($module)
+ {
+ case "adresse":
+ $xml = $this->app->erp->XMLAdresse($parameter);
+ break;
+
+ case "artikel":
+ $xml = $this->app->erp->XMLArtikel($parameter, $api);
+ break;
+
+ case "auftrag":
+ $xml = $this->app->erp->XMLAuftrag($parameter);
+ break;
+
+ case "gruppe":
+ $xml = $this->app->erp->XMLGruppe($parameter);
+ break;
+
+ case "adresse_kontakt":
+ $xml = $this->app->erp->XMLAdresseKontakt($parameter);
+ break;
+
+ default:
+ $this->app->DB->Delete("DELETE FROM event_api WHERE id='$id' LIMIT 1");
+ return false;
+ }
+
+ $hash = $this->generateHashFromApi($api);
+ //$result = $this->EventSendRequest($eventname,$xml,$hash,"&id=".$parameter);
+ //Hack
+ $result_body = null;
+ $result = $this->EventSendRequest($eventname,$xml,$hash,"&id=".$parameter,$result_body, $api);
+ switch($eventname) {
+ case "EventArtikelCreate":
+ if($api && $parameter)
+ {
+ if(isset($result_body['xml']['id']) && $result_body['xml']['id']!="")
+ {
+ $this->app->DB->Insert("INSERT INTO api_mapping (tabelle, id_int, id_ext, api, zeitstempel) VALUES ('artikel','$parameter','".$this->app->DB->real_escape_string($result_body['xml']['id'])."','$api',now())");
+ }
+ }
+ break;
+ case "EventAuftragEdit":
+ //print_r($result_body);
+ if(isset($result_body['xml']['belegnr']) && $result_body['xml']['belegnr']!="")
+ {
+ $this->app->DB->Update("UPDATE auftrag SET belegnr='".$result_body['xml']['belegnr']."' WHERE id='".$parameter."' AND id > 0 LIMIT 1");
+ $this->app->DB->Delete("DELETE FROM event_api WHERE id='$id' LIMIT 1");
+ }
+ break;
+ default:
+ $result = true;
+ }
+
+ if($result===false) {
+ $this->app->DB->Update("UPDATE event_api SET retries=retries+1 WHERE id='$id' LIMIT 1");
+ return false;
+ }
+ $this->app->DB->Delete("DELETE FROM event_api WHERE id='$id' LIMIT 1");
+
+ return true;
+ }
+
+ public function EventSendRequest($methodname,$xml,$hash,$parameter='',&$result_body='', $api = 0)
+ {
+ try {
+ $url = $this->getApiAccount()->getEventUrl();
+ } catch (ApiAccountNotFoundException $e){
+ return false;
+ }
+
+ if($url == ''){
+ return false;
+ }
+
+ $xml ='
+
+
+ '.$methodname.'
+
+ '.$xml.'
+ ';
+
+ if(strpos($url,'?') === false){
+ $url = $url.'?hash='.$hash.$parameter;
+ } else{
+ $url = $url.'&hash='.$hash.$parameter;
+ }
+ if(strpos($url,'module=api') === false){
+ $url .= '&module=api';
+ }
+ $url .= '&action='.substr($methodname,5);
+ $data = array('xml' => $xml);
+
+ // use key 'http' even if you send the request to https://...
+ $options = array(
+ 'http' => array(
+ 'header' => "Content-type: application/x-www-form-urlencoded\r\n",
+ 'method' => 'POST',
+ 'content' => http_build_query($data),
+ ),
+ );
+ $context = stream_context_create($options);
+ $result = file_get_contents($url, false, $context);
+
+ if($result===false) {
+ return false;
+ }
+
+ $deXml = simplexml_load_string($result);
+ $deJson = json_encode($deXml);
+ $xml_array = json_decode($deJson,TRUE);
+
+ $result_body = $xml_array;
+ if(isset($xml_array['xml']['status']['messageCode'])){
+ $xml_array['xml']['status']['messageCode'] = strtolower($xml_array['xml']['status']['messageCode']);
+ return $xml_array['xml']['status']['messageCode'] == 0;
+ }
+
+ return false;
+ }
+
+ /**
+ * @param string $initKey
+ * @param string $remoteDomain
+ *
+ * @return string
+ */
+ public function generateHashFromDomainAndKey($initKey, $remoteDomain)
+ {
+ $date = gmdate('dmY');
+
+ $hash = '';
+
+ for($i = 0; $i <= 200; $i++) {
+ $hash = sha1($hash . $initKey . $remoteDomain . $date);
+ }
+
+ return $hash;
+ }
+
+ /**
+ * @param int $id
+ *
+ * @return string
+ */
+ public function generateHashFromApi($id = 0)
+ {
+ try {
+ $initKey = $this->getApiAccount()->getInitKey();
+ $remoteDomain = $this->getApiAccount()->getRemoteDomain();
+ } catch (ApiAccountNotFoundException $e){
+ $initKey = '';
+ $remoteDomain = '';
+ }
+
+ return $this->generateHashFromDomainAndKey($initKey, $remoteDomain);
+ }
+
+ public function GetPlainText($string)
+ {
+ $string = str_replace('NONBLOCKINGZERO','',$string);
+ return htmlspecialchars(trim(html_entity_decode($string, ENT_QUOTES, 'UTF-8')));
+ }
+
+
+ public function XMLGruppe($id, $cdata = false)
+ {
+ if($id > 0){
+ $arr = $this->app->DB->SelectRow(sprintf('SELECT * FROM gruppen WHERE id=%d LIMIT 1',$id));
+ }
+ if(empty($arr)){
+ return '';
+ }
+ $result = '';
+ foreach($arr as $key=>$value) {
+ if(is_array($value)){
+ $value='';
+ }
+ if($cdata && $value != '' && !is_numeric($value)) {
+ $result .= "<" . $key . ">" . $key . ">";
+ }else{
+ $result .= "<" . $key . ">" . $this->GetPlainText($value) . "" . $key . ">";
+ }
+ }
+ return $result;
+ }
+
+ public function XMLAdresseKontakt($id, $cdata = false)
+ {
+ if($id > 0){
+ $address_arr = $this->app->DB->SelectRow(sprintf('SELECT * FROM adresse_kontakte WHERE id=%d LIMIT 1', $id));
+ }
+ if(empty($address_arr)){
+ return '';
+ }
+ $result = '';
+ foreach($address_arr as $key=>$value)
+ {
+ if(is_array($value)){
+ $value='';
+ }
+ if($cdata && $value != '' && !is_numeric($value)) {
+ $result .= "<" . $key . ">" . $key . ">";
+ }else{
+ $result .= "<" . $key . ">" . $this->GetPlainText($value) . "" . $key . ">";
+ }
+ }
+ return $result;
+ }
+
+
+ public function XMLAdresse($id, $cdata = false)
+ {
+ if($id > 0){
+ $address_arr = $this->app->DB->SelectRow(sprintf('SELECT * FROM adresse WHERE id=%d LIMIT 1',$id));
+ }
+ if(empty($address_arr)){
+ return '';
+ }
+ $result = '';
+ foreach($address_arr as $key=>$value) {
+ if(is_array($value)){
+ $value='';
+ }
+ if($cdata && $value != '' && !is_numeric($value)) {
+ $result .= "<" . $key . ">" . $key . ">";
+ }else{
+ $result .= "<" . $key . ">" . $this->GetPlainText($value) . "" . $key . ">";
+ }
+ }
+ return $result;
+ }
+
+ public function XMLAuftrag($id, $doctype = 'auftrag', $cdata = false)
+ {
+ if($id > 0 && !empty($doctype)){
+ $order_arr = $this->app->DB->SelectRow(sprintf('SELECT * FROM `%s` WHERE id=%d LIMIT 1',$doctype,$id));
+ }
+ if(empty($order_arr)){
+ return '';
+ }
+ $result = '';
+
+ foreach($order_arr as $key=>$value)
+ {
+ if(is_array($value)){
+ $value='';
+ }
+ if($cdata && $value != '' && !is_numeric($value)) {
+ $result .= "<" . $key . ">" . $key . ">";
+ }else{
+ $result .= "<" . $key . ">" . $this->GetPlainText($value) . "" . $key . ">";
+ }
+ }
+
+ if (in_array($doctype, array('gutschrift', 'rechnung'))) {
+ $sqlExplodiertParent = 'AND ap.explodiert_parent_artikel<=0';
+ }
+ else if ($doctype==="bestellung")
+ {
+ $sqlExplodiertParent ='';
+ }
+ else {
+ $sqlExplodiertParent = 'AND ap.explodiert_parent<=0';
+ }
+ $order_arr = $this->app->DB->SelectArr("SELECT ap.*, art.ean FROM $doctype"."_position ap LEFT JOIN artikel art ON ap.artikel = art.id WHERE ap.$doctype='$id' {$sqlExplodiertParent} ORDER by ap.sort");
+
+ $result .='';
+ $corder_arr = !empty($order_arr)?count($order_arr):0;
+ for($i=0;$i<$corder_arr;$i++)
+ {
+ $result .='';
+ foreach($order_arr[$i] as $key=>$value)
+ {
+ if(is_array($value)){
+ $value='';
+ }
+ if($cdata && $value != '' && !is_numeric($value)) {
+ $result .= "<" . $key . ">" . $key . ">";
+ }else{
+ $result .= "<" . $key . ">" . $this->GetPlainText($value) . "" . $key . ">";
+ }
+
+ }
+ $result .='';
+ }
+ $result .='';
+ return $result;
+ }
+
+ public function XMLBenutzer($id, $cdata = false)
+ {
+ if($id > 0){
+ $address_arr = $this->app->DB->SelectRow(sprintf('SELECT * FROM user WHERE id=%d LIMIT 1',$id));
+ }
+ if(empty($address_arr))
+ {
+ return '';
+ }
+ $result = '';
+ foreach($address_arr as $key=>$value)
+ {
+ if(is_array($value))$value='';
+ if($key==='startseite')
+ $result .='<'.$key.'>'.$this->app->erp->base64_url_encode($value).''.$key.'>';
+ else {
+ if($cdata && $value != '' && !is_numeric($value)) {
+ $result .= '<' . $key . '>' . $key . '>';
+ }else {
+ $result .= '<' . $key . '>' . $this->GetPlainText($value) . '' . $key . '>';
+ }
+ }
+ }
+ return $result;
+ }
+
+ public function XMLAdresseAccounts($filter=array(), $cdata = false)
+ {
+ if(!empty($filter['id'])){
+ $sql = "SELECT * FROM adresse_accounts WHERE adresse='" . $filter['id'] . "' AND art LIKE '" . $filter['art'] . "' AND aktiv=1";
+ $result = $this->app->DB->SelectArr($sql);
+ }
+ if(empty($result))
+ {
+ return '';
+ }
+ $output ='';
+ foreach($result as $account)
+ {
+ $output .='';
+ foreach($account as $key=>$value)
+ {
+ if($cdata && $value != '' && !is_numeric($value))
+ {
+ $output .= sprintf('<%1$s>%1$s>', $key, $value);
+ }else
+ $output .= sprintf('<%1$s>%2$s%1$s>', $key, $value);
+ }
+ $output .='';
+ }
+ $output .='';
+ return $output;
+ }
+
+ public function XMLBerichte($id, $cdata = false){
+ if($id > 0){
+ $result = $this->app->DB->SelectRow(sprintf('SELECT * FROM berichte WHERE id = %d LIMIT 1', $id));
+ }
+ if(empty($result) || empty($result['struktur']))
+ {
+ return '';
+ }
+
+ $rows = $this->app->DB->SelectArr($result['struktur']);
+ $output ='';
+ if(!empty($rows)) {
+ foreach($rows as $row) {
+ $output .='- ';
+ foreach($row as $key=>$value)
+ {
+ if($cdata && $value != '' && !is_numeric($value)) {
+ $output .= "<" . $key . ">" . $key . ">";
+ }else{
+ $output .= "<" . $key . ">" . $this->GetPlainText($value) . "" . $key . ">";
+ }
+ }
+ $output .='
';
+ }
+ }
+ $output .='';
+ return $output;
+ }
+
+ public function XMLArtikelkontingente($filter=array(), $cdata = false)
+ {
+ if($filter['id']=='')
+ {
+ if($filter['projekt']!='')
+ {
+ $projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='".$filter['projekt']."' AND abkuerzung!=''");
+ if($projekt > 0){
+ $artikel = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='" . $filter['nummer'] . "' AND projekt = $projekt AND nummer!='' LIMIT 1");
+ }else{
+ $artikel = 0;
+ }
+ } else {
+ $artikel = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='".$filter['nummer']."' AND nummer!='' LIMIT 1");
+ }
+ } else {
+ $artikel = $filter['id'];
+ }
+ if($artikel > 0){
+ $artikel = $this->app->DB->Select(sprintf('SELECT id FROM artikel WHERE id = %d LIMIT 1', $artikel));
+ }
+ if($artikel <= 0)
+ {
+ return '';
+ }
+
+ if($filter['von']!='')
+ {
+ $fall = 1;
+ $result = $this->app->DB->SelectArr("SELECT SUM(ap.menge) as gebucht,
+ if(ak.menge IS NULL,(SELECT ak2.menge FROM artikelkontingente ak2 WHERE (ak2.datum='1970-01-01' OR ak2.datum='0000-00-00' OR ak2.datum IS NULL) AND ak2.artikel=ap.artikel),ak.menge)
+ as menge,
+ if(a.lieferdatum ='0000-00-00' OR a.lieferdatum is NULL, a.datum, a.lieferdatum) as datum
+ FROM auftrag_position ap
+ LEFT JOIN auftrag a ON a.id=ap.auftrag
+ LEFT JOIN artikelkontingente ak ON ak.artikel=ap.artikel AND if(a.lieferdatum ='0000-00-00' OR a.lieferdatum is NULL, a.datum, a.lieferdatum)=ak.datum
+ WHERE
+ if(a.lieferdatum ='0000-00-00' OR a.lieferdatum is NULL,
+ (a.datum >='".$filter['von']."' AND a.datum <='".$filter['bis']."'),(a.lieferdatum >='".$filter['von']."' AND a.lieferdatum <='".$filter['bis']."'))
+ AND a.status='freigegeben'
+ AND ap.artikel='$artikel' GROUP by 3 ORDER by 3");
+ }
+ else {
+ $fall = 2;
+ $result = $this->app->DB->SelectArr("SELECT * FROM artikelkontingente ak WHERE ak.artikel='$artikel' AND (datum >= DATE_FORMAT(NOW(),'%Y-%m-%d') OR datum='0000-00-00' OR datum='1970-01-01')");
+ }
+
+ if(empty($result))
+ {
+ return '';
+ }
+
+ $output = '';
+ foreach($result as $artikelkontigent) {
+ $output .='';
+ foreach($artikelkontigent as $key=>$value)
+ {
+ if($key==='datum') {
+ $value=str_replace('1970-01-01','0000-00-00',$value);
+ }
+
+ if($key!=='id' && $key!=='artikel')
+ {
+ if($cdata && $value != '' && !is_numeric($value)) {
+ $output .= '<' . $key . '>' . $key . '>';
+ }else{
+ $output .= '<' . $key . '>' . $this->GetPlainText($value) . '' . $key . '>';
+ }
+ }
+ if($key==='datum' && $fall==2)
+ {
+ $gebucht = $this->app->DB->Select(sprintf('SELECT SUM(ap.menge)
+ FROM auftrag_position AS ap
+ INNER JOIN auftrag a ON a.id=ap.auftrag
+ WHERE a.lieferdatum=\'%s\' AND a.status=\'freigegeben\' AND ap.artikel= %d ',$value, $artikel));
+ if($gebucht <=0) {
+ $gebucht = 0;
+ }
+ $output .=''.$gebucht.'';
+ }
+ }
+ $output .='';
+ }
+ $output .='';
+
+ return $output;
+ }
+
+ public function XMLExportVorlage($id,$filter=array(), $cdata = false)
+ {
+ /** @var Exportvorlage $tmp */
+ $tmp = $this->app->erp->LoadModul('exportvorlage');
+ $csv = $tmp->ExportvorlageExport(true,$id,$filter);
+
+ $csv_array = preg_split ('/$\R?^/m', $csv);
+
+ if($id > 0){
+ $vorlageArr = $this->app->DB->SelectRow(sprintf('SELECT exporttrennzeichen, exporterstezeilenummer,exportdatenmaskierung FROM exportvorlage WHERE id= %d LIMIT 1', $id));
+ }
+ if(!empty($vorlageArr))
+ {
+ $exporttrennzeichen = $vorlageArr['exporttrennzeichen'];
+ $exportdatenmaskierung = $vorlageArr['exportdatenmaskierung'];
+ $exporterstezeilenummer = $vorlageArr['exporterstezeilenummer'];
+ }else{
+ $exporttrennzeichen = '';
+ $exportdatenmaskierung = '';
+ $exporterstezeilenummer = '';
+ }
+
+ if($exporttrennzeichen==='semikolon') {
+ $exporttrennzeichen=';';
+ }
+ else if($exporttrennzeichen==='komma') {
+ $exporttrennzeichen=',';
+ }
+ else if($exporttrennzeichen==='tab') {
+ $exporttrennzeichen="\t";
+ }
+ else {
+ $exporttrennzeichen=';';
+ }
+
+ if($exportdatenmaskierung==='gaensefuesschen') {
+ $exportdatenmaskierung='"';
+ } else {
+ $exportdatenmaskierung='';
+ }
+
+ $output = '';
+ $field_name = [];
+ $counter = 0;
+ if(!empty($csv_array)){
+ foreach ($csv_array as $row) {
+ $fields = explode($exporttrennzeichen, $row);
+ if($counter == 0){
+ foreach ($fields as $value) {
+ if($exportdatenmaskierung != ''){
+ $value = str_replace($exportdatenmaskierung, '', $value);
+ }
+ $field_name[] = $value;
+ }
+ }else{
+ $output .= '- ';
+ foreach($field_name as $field_index => $fieldValue) {
+ $value = str_replace('"', '', $fields[$field_index]);
+ if($cdata && $value != '' && !is_numeric($value)){
+ $output .= '<' . $field_name[$field_index] . '>' . $field_name[$field_index] . ">\r\n";
+ }else{
+ $output .= '<' . $field_name[$field_index] . '>' . $value . '' . $field_name[$field_index] . ">\r\n";
+ }
+ }
+ $output .= '
';
+ }
+ $counter++;
+ }
+ }
+ return ''.$output.'';
+ }
+
+ public function XMLArtikel($id, $api = 0)
+ {
+ if($id > 0){
+ $artikel_arr = $this->app->DB->SelectRow(sprintf('SELECT * FROM artikel WHERE id=%d LIMIT 1',$id));
+ }
+ $result = '';
+ if(!empty($artikel_arr)){
+ foreach ($artikel_arr as $key => $value) {
+ if($key !== 'usereditid' && $key !== 'useredittimestamp'){
+ if(is_array($value)){
+ $value = '';
+ }
+ if($key === 'id' && $api){
+ $extid = $this->app->DB->Select("SELECT id_ext FROM api_mapping WHERE tabelle = 'artikel' AND id_int = '$id' AND api = '$api' LIMIT 1");
+ if($extid){
+ $result .= '' . $this->GetPlainText($extid) . '';
+ }
+ }
+ if($key === 'projekt') $value = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$value' LIMIT 1");
+ $result .= '<' . $key . '>' . $this->GetPlainText($value) . "" . $key . ">";
+ if($key === 'typ'){
+ if(strpos($value, '_kat') !== false){
+ $kategorie = (int)str_replace('_kat', '', $value);
+ $bezeichnung = $this->app->DB->Select("SELECT bezeichnung FROM artikelkategorien WHERE id = '" . $kategorie . "' LIMIT 1");
+ if($bezeichnung){
+ $result .= '' . $this->GetPlainText($bezeichnung) . '';
+ $extid = $this->app->DB->Select("SELECT id_ext FROM api_mapping WHERE tabelle = 'artikelkategorien' AND id_int = '$kategorie' AND api = '$api' LIMIT 1");
+ if($extid){
+ $result .= '' . $this->GetPlainText($extid) . '';
+ }
+ }
+ }
+ }
+
+ }
+ }
+ }
+ // Lagerbestand
+ $summe = $this->app->DB->Select("SELECT SUM(lpi.menge) FROM lager_platz_inhalt lpi LEFT JOIN lager_platz lp ON lp.id=lpi.lager_platz WHERE lpi.artikel='$id' AND lp.sperrlager!=1");
+ $reserviert = $this->app->DB->Select("SELECT SUM(menge) FROM lager_reserviert WHERE artikel='$id'");// AND datum >= NOW()");
+ $auftraege = $this->app->DB->Select("SELECT SUM(ap.menge) as menge,ap.bezeichnung FROM auftrag_position ap LEFT JOIN artikel a ON a.id=ap.artikel LEFT JOIN auftrag auf ON auf.id=ap.auftrag WHERE a.id='$id' AND a.lagerartikel=1 AND auf.status='freigegeben'");
+ $liefern= $this->app->DB->Select("SELECT SUM(ap.menge) as menge,ap.bezeichnung FROM auftrag_position ap, auftrag aa, artikel a WHERE a.id=ap.artikel AND aa.id = ap.auftrag AND a.id='$id' AND a.lagerartikel=1 AND aa.status='freigegeben'");
+ $reserviert_im_versand = $this->app->DB->Select("SELECT SUM(menge) FROM lager_reserviert WHERE artikel='$id' AND objekt='lieferschein'");
+ $berechnet = $summe - $auftraege - $reserviert_im_versand;
+ $verkaufte = $auftraege + $reserviert_im_versand;
+
+ $rest = $summe - $liefern;
+ if($reserviert=='') {
+ $reserviert =0;
+ }
+ if($liefern <=0) {
+ $liefern=0;
+ }
+
+ if($rest > 0) {
+ $verfuegbar = (string)$rest;
+ } else {
+ $verfuegbar = '0';
+ }
+
+ $verkaufbare = $this->app->erp->ArtikelAnzahlVerkaufbar($id);
+ $summe = round($summe, $this->app->erp->GetLagerNachkommastellen());
+ $reserviert = round($reserviert ,$this->app->erp->GetLagerNachkommastellen());
+ $liefern = round($liefern ,$this->app->erp->GetLagerNachkommastellen());
+ $verkaufte = round($verkaufte ,$this->app->erp->GetLagerNachkommastellen());
+ $berechnet = round($berechnet ,$this->app->erp->GetLagerNachkommastellen());
+ $verkaufbare = round($verkaufbare ,$this->app->erp->GetLagerNachkommastellen());
+
+ $result .= "$summe";
+ $result .= "$reserviert";
+ $result .= "$liefern";
+ $result .= "$verkaufte";
+ $result .= "$berechnet";
+ $result .= "$verkaufbare";
+
+ // stueckliste
+ if($artikel_arr['stueckliste']=='1'){
+ $arr_stueckliste = $this->app->DB->SelectArr(sprintf('SELECT * FROM stueckliste WHERE stuecklistevonartikel=%d',$id));
+ if(!empty($arr_stueckliste)){
+ $result .= '';
+ foreach($arr_stueckliste as $stuecklisteKey => $stuecklisteRow) {
+ $artikelArr = $this->app->DB->SelectRow(sprintf('SELECT nummer, projekt
+ FROM artikel WHERE id = %d LIMIT 1', $stuecklisteRow['artikel']));
+ if(!empty($artikelArr))
+ {
+ $arr_stueckliste[$stuecklisteKey]['nummer'] = $artikelArr['nummer'];
+ $projekt = $artikelArr['projekt'];
+ if($projekt > 0)
+ {
+ $arr_stueckliste[$stuecklisteKey]['projekt'] = $this->app->DB->Select(
+ sprintf('SELECT abkuerzung
+ FROM projekt
+ WHERE id = %d LIMIT 1', $projekt));
+ }else{
+ $arr_stueckliste[$stuecklisteKey]['projekt'] = '';
+ }
+ }else{
+ $arr_stueckliste[$stuecklisteKey]['nummer'] = '';
+ $arr_stueckliste[$stuecklisteKey]['projekt'] = '';
+ }
+ $result .= '';
+ $result .= '' . $arr_stueckliste[$stuecklisteKey]['menge'] . '';
+ $result .= '' . $arr_stueckliste[$stuecklisteKey]['nummer'] . '';
+ $result .= '' . $arr_stueckliste[$stuecklisteKey]['artikel'] . '';
+ $result .= '' . $arr_stueckliste[$stuecklisteKey]['projekt'] . '';
+ $result .= "";
+ }
+ $result .= '';
+ }
+ }
+ // einkaufspreise
+ $arr_einkauf = $this->app->DB->SelectArr("SELECT * FROM einkaufspreise WHERE artikel='$id' AND (gueltig_bis >= NOW() OR gueltig_bis='0000-00-00')");
+ if(!empty($arr_einkauf))
+ {
+ $result .='';
+ foreach($arr_einkauf as $einkaufKey => $einkaufValue) {
+ if($einkaufValue['adresse'] > 0){
+ $adresseArr = $this->app->DB->SelectRow(sprintf(
+ 'SELECT projekt, lieferantennummer FROM adresse WHERE id = %d ', $einkaufValue['adresse']
+ ));
+ }else{
+ $adresseArr = null;
+ }
+ if(!empty($adresseArr))
+ {
+ $einkaufValue['lieferantennummer'] = $adresseArr['lieferantennummer'];
+ $einkaufValue['projekt'] = $adresseArr['projekt'];
+ }else{
+ $einkaufValue['lieferantennummer'] = '';
+ $einkaufValue['projekt'] = 0;
+ }
+ if($einkaufValue['projekt'] > 0)
+ {
+ $einkaufValue['projekt'] = $this->app->DB->SelectRow(sprintf('SELECT projekt FROM adresse WHERE id= %d LIMIT 1', $einkaufValue['projekt']));
+ }else{
+ $einkaufValue['projekt'] = '';
+ }
+
+ $result .='';
+ $result .=''.$einkaufValue['ab_menge'].'';
+ $result .=''.$einkaufValue['preis'].'';
+ $result .=''.$einkaufValue['waehrung'].'';
+ $result .=''.$einkaufValue['lieferantennummer'].'';
+ $result .=''.$einkaufValue['projekt'].'';
+ $result .=''.$this->GetPlainText($einkaufValue['bestellnummer']).'';
+ $result .=''.$this->GetPlainText($einkaufValue['bezeichnunglieferant']).'';
+ $result .='';
+ }
+ $result .='';
+ }
+
+ // verkaufspreise
+ $arr_verkauf = $this->app->DB->SelectArr("SELECT * FROM verkaufspreise WHERE artikel='$id' AND (gueltig_bis >= NOW() OR gueltig_bis='0000-00-00' ) AND geloescht!='1'");
+ if(!empty($arr_verkauf))
+ {
+ $result .='';
+ foreach($arr_verkauf as $verkaufValue) {
+ if($einkaufValue['adresse'] > 0){
+ $adresseArr = $this->app->DB->SelectRow(sprintf(
+ 'SELECT projekt, lieferantennummer FROM adresse WHERE id = %d ', $verkaufValue['adresse']
+ ));
+ }else{
+ $adresseArr = null;
+ }
+ if(!empty($adresseArr))
+ {
+ $verkaufValue['lieferantennummer'] = $adresseArr['lieferantennummer'];
+ $verkaufValue['projekt'] = $adresseArr['projekt'];
+ }else{
+ $verkaufValue['lieferantennummer'] = '';
+ $verkaufValue['projekt'] = 0;
+ }
+ if($verkaufValue['projekt'] > 0)
+ {
+ $verkaufValue['projekt'] = $this->app->DB->SelectRow(sprintf('SELECT projekt FROM adresse WHERE id= %d LIMIT 1', $einkaufValue['projekt']));
+ }else{
+ $verkaufValue['projekt'] = '';
+ }
+ $arr_verkauf[$i]['kundennummer'] = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE id='".$arr_verkauf[$i]['adresse']."' LIMIT 1");
+ $arr_verkauf[$i]['projekt'] = $this->app->DB->Select("SELECT projekt FROM adresse WHERE id='".$arr_verkauf[$i]['adresse']."' LIMIT 1");
+ $arr_verkauf[$i]['projekt'] = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='".$arr_verkauf[$i]['projekt']."' LIMIT 1");
+
+ $result .='';
+ $result .=''.$verkaufValue['ab_menge'].'';
+ $result .=''.$verkaufValue['preis'].'';
+ $result .=''.$verkaufValue['vpe'].'';
+ if($verkaufValue['vpe_menge'] > 0){
+ $result .= '' . $verkaufValue['vpe_menge'] . '';
+ }
+
+ $result .=''.$verkaufValue['waehrung'].'';
+
+ if($verkaufValue['kundennummer']!='')
+ {
+ $result .=''.$verkaufValue['kundennummer'].'';
+ $result .=''.$verkaufValue['projekt'].'';
+ if($verkaufValue['kundenartikelnummer']!=''){
+ $result .= '' . $verkaufValue['kundenartikelnummer'] . '';
+ }
+ }
+ $result .='';
+ }
+ $result .='';
+ }
+ return $result;
+ }
+
+
+ public function BelegeimportAusfuehren($idliste = null, $uebertragungen = false)
+ {
+ $ret = null;
+ $erlaubtebelege = array(
+ 'auftrag',
+ 'lieferschein',
+ 'rechnung',
+ 'gutschrift',
+ 'angebot',
+ 'preisanfrage',
+ 'bestellung',
+ 'produktion',
+ 'proformarechnung',
+ 'retoure'
+ );
+ $belege = $this->app->DB->SelectArr('SELECT *
+ FROM belegeimport
+ WHERE '.($idliste?' id in ('.implode(', ',$idliste).') ':"userid='".$this->app->User->GetID()."'").'
+ ORDER BY art, beleg_hauptbelegnr, beleg_belegnr,artikel_sort, id');
+ if($belege) {
+ if($uebertragungen) {
+ $transferData = $this->app->DB->SelectRow(
+ sprintf(
+ 'SELECT `api`, `projekt`,`auftrageingang`,`bestellungeingang`, `createproduction`, `ownaddress`,
+ `createarticleifnotexists`, `createarticleasstoragearticle`
+ FROM `uebertragungen_account`
+ WHERE `id` = %d
+ LIMIT 1',
+ $uebertragungen
+ )
+ );
+ $this->uebertragung_account = $uebertragungen;
+ $this->api_id = $transferData['api'];
+ $projekt = $transferData['projekt'];
+ $ret = null;
+ if(empty($transferData['alldoctypes'])) {
+ $erlaubtebelege = array();
+ if($transferData['auftrageingang']) {
+ $erlaubtebelege[] = 'auftrag';
+ $erlaubtebelege[] = 'angebot';
+ }
+ if($transferData['bestellungeingang']) {
+ $erlaubtebelege[] = 'bestellung';
+ $erlaubtebelege[] = 'produktion';
+ }
+ }
+ }
+ $aktbelegart = false;
+ $aktbelegnr = false;
+ $aktbelegid = false;
+ $hauptbelegnr = false;
+ //Für Belegstatus "angelegt", um die Belegnr entfernen zu können
+ $erstelltebelegeids = array();
+ $erstelltebelegeNichtAngelegtids = [];
+ foreach($belege as $beleg) {
+ if(!empty($beleg['art'])) {
+ $beleg['art'] = trim(strtolower($beleg['art']));
+ }
+ if($beleg['art'] && $beleg['beleg_belegnr'] && in_array($beleg['art'],$erlaubtebelege)) {
+ if($beleg['art'] != $aktbelegart || $beleg['beleg_belegnr'] != $aktbelegnr)
+ {
+ $projekt = !empty($beleg['projekt'])?$beleg['projekt']:0;
+ if(empty($projekt)) {
+ $projekt = !empty($beleg['beleg_projekt'])?$beleg['beleg_projekt']:0;
+ }
+ $aktbelegnr = $beleg['beleg_belegnr'];
+ $hauptbelegnr = $beleg['beleg_hauptbelegnr'];
+ $aktbelegart = $beleg['art'];
+ $aktbelegid = false;
+ $alteadresse = $beleg['adresse'];
+ if($beleg['adresse'] && $uebertragungen) {
+ $beleg['adresse'] = $this->GetFromExtID('adresse', $beleg['adresse']);
+ }
+ if(!$beleg['adresse'] && $uebertragungen && $beleg['beleg_lieferantennummer'] != '' && ($beleg['art'] === 'bestellung' || $beleg['art'] === 'produktion')) {
+ $beleg['adresse'] = $this->app->DB->Select(
+ sprintf(
+ 'SELECT id
+ FROM adresse
+ WHERE lieferantennummer <> \'\' AND lieferantennummer = \'%s\' AND IFNULL(geloescht,0) = 0
+ ORDER BY projekt = %d DESC
+ LIMIT 1',
+ $this->app->DB->real_escape_string($beleg['beleg_lieferantennummer']), (int)$beleg['projekt']
+ )
+ );
+ }
+
+ if($uebertragungen && !empty($beleg['adresse']) && $beleg['art'] === 'bestellung'
+ && !empty($transferData['createproduction']) && $beleg['adresse'] == $transferData['ownaddress']
+ ) {
+ $beleg['art'] = 'produktion';
+ }
+
+ if($uebertragungen) {
+ $hauptbelegnr = $this->GetFromExtID($beleg['art'], $hauptbelegnr);
+ if($hauptbelegnr != '')$hauptbelegnr = $this->app->DB->Select("SELECT belegnr
+ FROM '".$beleg['art']."' WHERE id = '$hauptbelegnr' LIMIT 1");
+ if(!$beleg['beleg_projekt']) {
+ $beleg['beleg_projekt'] = $projekt;
+ }
+ }
+
+ if($uebertragungen && !$beleg['adresse'] && $beleg['art'] === 'produktion' && !empty($beleg['beleg_auftragid'])){
+ $beleg['adresse'] = $this->app->DB->Select(
+ sprintf(
+ 'SELECT adresse FROM auftrag WHERE id = %d LIMIT 1', $beleg['beleg_auftragid']
+ )
+ );
+ }
+
+ if(!$beleg['adresse'] && $uebertragungen) {
+ $adresseprojekt = '';
+ if($projekt) {
+ $adresseprojekt = " AND projekt = '$projekt' ";
+ }
+ if(in_array($beleg['art'],
+ array('auftrag','lieferschein','rechnung','gutschrift','angebot','produktion','retoure')
+ )) {
+ $beleg['adresse'] = $this->app->DB->Select("SELECT id FROM adresse
+ WHERE name='".$this->app->DB->real_escape_string($beleg['beleg_name'])."'
+ AND email='".$this->app->DB->real_escape_string($beleg['beleg_email'])."'
+ AND strasse='".$this->app->DB->real_escape_string((string)$beleg['beleg_strasse'])."'
+ AND plz='".$this->app->DB->real_escape_string((string)$beleg['beleg_plz'])."'
+ AND ort='".$this->app->DB->real_escape_string((string)$beleg['beleg_ort'])."'
+ AND kundennummer <> '' AND geloescht!=1 $adresseprojekt LIMIT 1");
+ }
+ else {
+ $beleg['adresse'] = $this->app->DB->Select("SELECT id FROM adresse
+ WHERE name='".
+ $this->app->DB->real_escape_string($beleg['beleg_name'])."'
+ AND email='".$this->app->DB->real_escape_string($beleg['beleg_email'])."'
+ AND strasse='".$this->app->DB->real_escape_string((string)$beleg['beleg_strasse'])."'
+ AND plz='".$this->app->DB->real_escape_string((string)$beleg['beleg_plz'])."'
+ AND ort='".$this->app->DB->real_escape_string((string)$beleg['beleg_ort'])."'
+ AND lieferantennummer <> '' AND geloescht!=1 $adresseprojekt LIMIT 1");
+ }
+ if($beleg['beleg_kundennummer'] == '' && $beleg['adresse']) {
+ $beleg['beleg_kundennummer'] = $this->app->DB->Select("SELECT kundennummer
+ FROM adresse WHERE id = '".$beleg['adresse']."' LIMIT 1");
+ }
+ }
+ $belegKundennummer = !empty($beleg['beleg_kundennummer'])?$beleg['beleg_kundennummer']:'';
+ if(empty($belegKundennummer)) {
+ $belegKundennummer = !empty($beleg['kundennummer'])?$beleg['kundennummer']:'';
+ }
+ if(strtoupper((string)$belegKundennummer) === 'NEU' || strtoupper($belegKundennummer) === 'NEW') {
+ $beleg['adresse'] = 0;
+ }
+
+ if(!$beleg['adresse']) {
+ if(in_array($beleg['art'],array('auftrag','lieferschein','rechnung','gutschrift','angebot', 'produktion'))) {
+ $adr['kundennummer'] = $beleg['beleg_kundennummer'];
+ if((string)$adr['kundennummer'] === '' || strtoupper((string)$adr['kundennummer']) === 'NEU' ||
+ strtoupper($adr['kundennummer']) === 'NEW') {
+ $adr['kundennummer'] = $this->app->erp->GetNextKundennummer($beleg['beleg_projekt']);
+ }
+ }else{
+ $adr['lieferantennummer'] = $this->app->erp->GetNextLieferantennummer($beleg['beleg_projekt']);
+ }
+ if(!$beleg['beleg_projekt'])$beleg['beleg_projekt'] = $this->app->erp->Firmendaten('projekt');
+ $adr['name'] = $beleg['beleg_name'];
+ $adr['abteilung'] = $beleg['beleg_abteilung'];
+ $adr['unterabteilung'] = $beleg['beleg_unterabteilung'];
+ $adr['adresszusatz'] = $beleg['beleg_adresszusatz'];
+ $adr['ansprechpartner'] = $beleg['beleg_ansprechpartner'];
+ $adr['telefon'] = $beleg['beleg_telefon'];
+ $adr['adresszusatz'] = $beleg['beleg_adresszusatz'];
+ $adr['email'] = $beleg['beleg_email'];
+ $adr['land'] = $beleg['beleg_land'];
+ if($adr['land']=="") {
+ $adr['land'] = $this->app->erp->Firmendaten("land");
+ $beleg['beleg_land'] = $adr['land'];
+ }
+ $adr['strasse'] = $beleg['beleg_strasse'];
+ $adr['plz'] = $beleg['beleg_plz'];
+ $adr['ort'] = $beleg['beleg_ort'];
+ $adr['lieferbedingung'] = $beleg['beleg_lieferbedingung'];
+ $adr['projekt'] = $beleg['beleg_projekt'];
+
+ $beleg['adresse'] = $this->app->erp->InsertUpdateAdresse($adr);
+ if($alteadresse && $alteadresse != $beleg['adresse'])
+ {
+ $this->SetExtIDMapping('adresse', $beleg['adresse'], $alteadresse);
+ }
+ unset($adr);
+ }
+ if($beleg['adresse'])
+ {
+ if($uebertragungen)
+ {
+ $check = $this->GetFromExtID($beleg['art'], $beleg['beleg_belegnr']);
+ }else{
+ $check = $this->app->DB->Select("SELECT id FROM ".$beleg['art']."
+ WHERE belegnr = '".$this->app->DB->real_escape_string($beleg['beleg_belegnr'])."' LIMIT 1");
+ }
+ if(!$check)
+ {
+ $methode = 'Create'.ucfirst($beleg['art']);
+ $methodeLoad = 'Load'.ucfirst($beleg['art']).'Standardwerte';
+ if(method_exists($this->app->erp, $methode))
+ {
+ $check = $this->app->erp->$methode($beleg['adresse']);
+ if($uebertragungen)
+ {
+ $beleg['id'] = $check;
+ $ret[] = $beleg;
+ }
+ if(method_exists($this->app->erp, $methodeLoad)){
+ $this->app->erp->$methodeLoad($check, $beleg['adresse']);
+ }
+
+ if($beleg['status'] !== 'angelegt')
+ {
+ if($beleg['beleg_belegnr']==='NEU' || $beleg['beleg_belegnr']==='NEW' || $beleg['beleg_belegnr']=='' ||
+ $beleg['beleg_belegnr']==='ENTWURF' || !isset($beleg['beleg_belegnr']) || $uebertragungen) {
+ $beleg['beleg_belegnr'] = $this->app->erp->GetNextNummer($beleg['art'],$beleg['beleg_projekt'],$check);
+ }
+ }else {
+ $beleg['beleg_belegnr'] = '';
+ }
+
+ if($check)
+ {
+ $adressArr = $this->app->DB->SelectRow(
+ sprintf(
+ 'SELECT * FROM adresse WHERE id = %d LIMIT 1',
+ $beleg['adrese']
+ )
+ );
+
+ if(!$beleg['beleg_projekt']) {
+ $beleg['beleg_projekt'] = $this->app->DB->Select("SELECT projekt
+ FROM adresse
+ WHERE id = '".$beleg['adresse']."'
+ LIMIT 1");
+ }
+
+ if($beleg['beleg_projekt'] &&
+ $beleg['beleg_projekt'] != $this->app->DB->Select("SELECT projekt
+ FROM ".$beleg['art']."
+ WHERE id = '$check' LIMIT 1"))
+ {
+ $this->app->DB->Update("UPDATE ".$beleg['art']." SET projekt = '".$beleg['beleg_projekt']."'
+ WHERE id = '$check' LIMIT 1");
+ if($beleg['art'] === 'auftrag')
+ {
+ $standardlager = $this->app->DB->Select("SELECT standardlager FROM projekt WHERE id = '".$beleg['beleg_projekt']."' LIMIT 1");
+ if($standardlager)$this->app->DB->Update("UPDATE auftrag SET standardlager = '$standardlager'
+ WHERE id = '$check' LIMIT 1");
+ if($this->app->erp->StandardZahlungsweise($beleg['beleg_projekt'])==="rechnung")
+ {
+ $this->app->DB->Update("UPDATE auftrag
+ set zahlungsweise = '".$this->app->erp->StandardZahlungsweise($beleg['beleg_projekt'])."',
+ zahlungszieltage = '".$this->app->erp->ZahlungsZielTage($beleg['beleg_projekt'])."',
+ zahlungszieltageskonto = '".$this->app->erp->ZahlungsZielTageSkonto($beleg['beleg_projekt'])."',
+ zahlungszielskonto = '".$this->app->erp->ZahlungsZielSkonto($beleg['beleg_projekt'])."'
+ WHERE id = '$check' LIMIT 1");
+ }else{
+ $this->app->DB->Update("UPDATE auftrag
+ set zahlungsweise = '".$this->app->erp->StandardZahlungsweise($beleg['beleg_projekt'])."',
+ zahlungszieltage = '0', zahlungszieltageskonto = '0', zahlungszielskonto = '0'
+ WHERE id = '".$check."' LIMIT 1");
+ }
+ }
+ $this->app->erp->LoadSteuersaetzeWaehrung($check,$beleg['art'],$beleg['beleg_projekt']);
+ }
+
+ $teillieferungvon = false;
+ if($hauptbelegnr)
+ {
+ $teillieferungvon = $this->app->DB->Select("SELECT id
+ FROM auftrag
+ WHERE belegnr = '".$this->app->DB->real_escape_string($hauptbelegnr)."'
+ LIMIT 1");
+ if($teillieferungvon)
+ {
+ $teillieferungnummer= $this->app->DB->Select("SELECT MAX(teillieferungnummer) FROM auftrag WHERE teillieferungvon='$teillieferungvon'");
+ $teillieferungnummer++;
+ $this->app->DB->Update("UPDATE ".$beleg['art']."
+ SET teillieferungvon = '".$teillieferungvon."',teillieferungnummer='$teillieferungnummer'
+ WHERE id = '$check' LIMIT 1");
+ }
+ }
+
+ $fields_fromdb = array('name','strasse','ort','land','plz');
+ foreach($fields_fromdb as $fieldname)
+ {
+ if($beleg['beleg_'.$fieldname]=='') {
+ $beleg['beleg_'.$fieldname] = $this->app->DB->Select("SELECT ".$fieldname."
+ FROM adresse
+ WHERE id='".$beleg['adresse']."'
+ LIMIT 1");
+ }
+ }
+
+ $belegArt = $beleg['art'];
+
+ if($beleg['beleg_status']) {
+ $this->app->DB->Update("UPDATE ".$belegArt."
+ SET status = '".$this->app->DB->real_escape_string($beleg['beleg_status'])."' WHERE id = '$check' LIMIT 1");
+ }else{
+ $this->app->DB->Update("UPDATE ".$belegArt."
+ SET status = '".$this->app->DB->real_escape_string($beleg['status'])."' WHERE id = '$check' LIMIT 1");
+ }
+ if($beleg['beleg_datum'])
+ {
+ $this->app->DB->Update("UPDATE ".$belegArt."
+ SET datum = '".$this->app->DB->real_escape_string($beleg['beleg_datum'])."' WHERE id = '$check' LIMIT 1");
+ }else{
+ $this->app->DB->Update("UPDATE ".$belegArt."
+ SET datum = now() WHERE id = '$check' AND datum = '0000-00-00' LIMIT 1");
+ }
+ if($beleg['beleg_lieferdatum'])
+ {
+ if($belegArt === 'bestellung') {
+ $this->app->DB->Update("UPDATE bestellung
+ SET gewuenschteslieferdatum = '" . $this->app->DB->real_escape_string($beleg['beleg_lieferdatum']) . "' WHERE id = '$check' LIMIT 1");
+ }else{
+ $this->app->DB->Update("UPDATE " . $belegArt . "
+ SET lieferdatum = '" . $this->app->DB->real_escape_string($beleg['beleg_lieferdatum']) . "' WHERE id = '$check' LIMIT 1");
+ }
+ }
+ if($beleg['beleg_tatsaechlicheslieferdatum'])
+ {
+ $this->app->DB->Update("UPDATE ".$belegArt."
+ SET tatsaechlicheslieferdatum = '".$this->app->DB->real_escape_string($beleg['beleg_tatsaechlicheslieferdatum'])."' WHERE id = '$check' LIMIT 1");
+ }
+ if($beleg['beleg_art'])
+ {
+ $this->app->DB->Update("UPDATE ".$belegArt."
+ SET art = '".$this->app->DB->real_escape_string($beleg['beleg_art'])."' WHERE id = '$check' LIMIT 1");
+ }
+
+ if($beleg['beleg_versandart'])
+ {
+ $this->app->DB->Update("UPDATE ".$belegArt." SET versandart = '".$this->app->DB->real_escape_string($beleg['beleg_versandart'])."' WHERE id = '$check' LIMIT 1");
+ }
+ if($beleg['beleg_zahlungsweise'])
+ {
+ $this->app->DB->Update("UPDATE ".$belegArt." SET zahlungsweise = '".$this->app->DB->real_escape_string($beleg['beleg_zahlungsweise'])."' WHERE id = '$check' LIMIT 1");
+ }
+ $this->app->DB->Update("UPDATE ".$belegArt." SET belegnr = '".$this->app->DB->real_escape_string($beleg['beleg_belegnr'])."' WHERE id = '$check' LIMIT 1");
+ if(empty($beleg['kundennummer']) && $beleg['art'] !== 'bestellung') {
+ $beleg['kundennummer'] = $adressArr['kundennummer'];
+ }
+ if(empty($beleg['beleg_name'])) {
+ $beleg['beleg_name'] = $adressArr['name'];
+ $beleg['beleg_plz'] = $adressArr['plz'];
+ $beleg['beleg_ort'] = $adressArr['ort'];
+ $beleg['beleg_land'] = $adressArr['land'];
+ $beleg['beleg_abteilung'] = $adressArr['abteilung'];
+ $beleg['beleg_unterabteilung'] = $adressArr['unterabteilung'];
+ $beleg['beleg_adresszusatz'] = $adressArr['adresszusatz'];
+ }
+ $this->app->DB->Update("UPDATE ".$belegArt." SET name = '".$this->app->DB->real_escape_string($beleg['beleg_name'])."' WHERE id = '$check' LIMIT 1");
+ $this->app->DB->Update("UPDATE ".$belegArt." SET abteilung = '".$this->app->DB->real_escape_string($beleg['beleg_abteilung'])."' WHERE id = '$check' LIMIT 1");
+ $this->app->DB->Update("UPDATE ".$belegArt." SET unterabteilung = '".$this->app->DB->real_escape_string($beleg['beleg_unterabteilung'])."' WHERE id = '$check' LIMIT 1");
+ $this->app->DB->Update("UPDATE ".$belegArt." SET strasse = '".$this->app->DB->real_escape_string($beleg['beleg_strasse'])."' WHERE id = '$check' LIMIT 1");
+ $this->app->DB->Update("UPDATE ".$belegArt." SET plz = '".$this->app->DB->real_escape_string($beleg['beleg_plz'])."' WHERE id = '$check' LIMIT 1");
+ $this->app->DB->Update("UPDATE ".$belegArt." SET ort = '".$this->app->DB->real_escape_string($beleg['beleg_ort'])."' WHERE id = '$check' LIMIT 1");
+ $this->app->DB->Update("UPDATE ".$belegArt." SET land = '".$this->app->DB->real_escape_string($beleg['beleg_land'])."' WHERE id = '$check' LIMIT 1");
+ $this->app->DB->Update("UPDATE ".$belegArt." SET email = '".$this->app->DB->real_escape_string($beleg['beleg_email'])."' WHERE id = '$check' LIMIT 1");
+ $this->app->DB->Update("UPDATE ".$belegArt." SET telefon = '".$this->app->DB->real_escape_string($beleg['beleg_telefon'])."' WHERE id = '$check' LIMIT 1");
+ $this->app->DB->Update("UPDATE ".$belegArt." SET adresszusatz = '".$this->app->DB->real_escape_string($beleg['beleg_adresszusatz'])."' WHERE id = '$check' LIMIT 1");
+ $this->app->DB->Update("UPDATE ".$belegArt." SET kundennummer = '".$this->app->DB->real_escape_string($beleg['beleg_kundennummer'])."' WHERE id = '$check' LIMIT 1");
+ $this->app->DB->Update("UPDATE ".$belegArt." SET adresse = '".$this->app->DB->real_escape_string($beleg['adresse'])."' WHERE id = '$check' LIMIT 1");
+
+ $this->app->DB->Update("UPDATE ".$belegArt." SET internebemerkung = '".$this->app->DB->real_escape_string($beleg['beleg_internebemerkung'])."' WHERE id = '$check' LIMIT 1");
+ $this->app->DB->Update("UPDATE ".$belegArt." SET internebezeichnung = '".$this->app->DB->real_escape_string($beleg['beleg_internebezeichnung'])."' WHERE id = '$check' LIMIT 1");
+ if($belegArt !== 'bestellung') {
+ $this->app->DB->Update("UPDATE " . $belegArt . " SET aktion = '" . $this->app->DB->real_escape_string($beleg['beleg_aktion']) . "' WHERE id = '$check' LIMIT 1");
+ }
+ if($belegArt === 'bestellung') {
+ $this->app->DB->Update("UPDATE ".$belegArt." SET lieferantennummer = '".$this->app->DB->real_escape_string($beleg['beleg_lieferantennummer'])."' WHERE id = '$check' LIMIT 1");
+ }
+ $this->app->DB->Update("UPDATE ".$belegArt." SET freitext = '".$this->app->DB->real_escape_string($beleg['beleg_freitext'])."' WHERE id = '$check' LIMIT 1");
+ if($belegArt !== 'bestellung'){
+ $this->app->DB->Update("UPDATE " . $belegArt . " SET ihrebestellnummer = '" . $this->app->DB->real_escape_string($beleg['beleg_ihrebestellnummer']) . "' WHERE id = '$check' LIMIT 1");
+ }
+ $this->app->DB->Update("UPDATE ".$belegArt." SET lieferbedingung = '".$this->app->DB->real_escape_string($beleg['beleg_lieferbedingung'])."' WHERE id = '$check' LIMIT 1");
+ if($belegArt === 'produktion') {
+ $this->app->DB->Update(
+ sprintf(
+ 'UPDATE produktion SET unterlistenexplodieren = %d WHERE id = %d LIMIT 1',
+ $beleg['beleg_unterlistenexplodieren'], $check
+ )
+ );
+ if(!empty($beleg['beleg_auftragid'])) {
+ $this->app->DB->Update(
+ sprintf(
+ 'UPDATE produktion SET auftragid = %d WHERE id = %d LIMIT 1',
+ $beleg['beleg_auftragid'], $check
+ )
+ );
+ $datumauslieferung = $this->app->DB->Select(
+ sprintf(
+ 'SELECT datumauslieferung FROM produktion WHERE id = %d', $check
+ )
+ );
+ IF($datumauslieferung == '' || $datumauslieferung === '0000-00-00') {
+ $datumauslieferung = $this->app->DB->Select(
+ sprintf(
+ 'SELECT lieferdatum FROM auftrag WHERE id = %d', $beleg['beleg_auftragid']
+ )
+ );
+ IF($datumauslieferung == '' || $datumauslieferung === '0000-00-00') {
+ $datumauslieferung = $this->app->DB->Select(
+ sprintf(
+ 'SELECT datum FROM auftrag WHERE id = %d', $beleg['beleg_auftragid']
+ )
+ );
+ }
+ if($datumauslieferung != '' && $datumauslieferung !== '0000-00-00') {
+ $this->app->DB->Update(
+ sprintf(
+ "UPDATE produktion SET datumauslieferung = '%s' WHERE id = %d",
+ $datumauslieferung, $check
+ )
+ );
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if($check)
+ {
+ $aktbelegid = $check;
+ if($beleg['status'] === 'angelegt'){
+ //Merken der Belegids für nachträgliches löschen der Belegnummern aus der Angebotstabelle
+ $erstelltebelegeids[$check] = $beleg['art'];
+ } else {
+ $erstelltebelegeNichtAngelegtids[$check] = $beleg['art'];
+ }
+ }
+ }
+ }
+ if($aktbelegid && ($beleg['artikel'] || $beleg['artikel_nummer'])) {
+ if(!$beleg['artikel']) {
+ $beleg['artikel'] = $this->app->DB->Select("SELECT id
+ FROM artikel
+ WHERE nummer = '".$this->app->DB->real_escape_string($beleg['artikel_nummer'])."' and geloescht <> 1
+ ORDER BY projekt = '".$beleg['beleg_projekt']."' DESC
+ LIMIT 1");
+ if(!$beleg['artikel'] && isset($beleg['artikel_ean']) && $beleg['artikel_ean'] != '') {
+ $beleg['artikel'] = $this->app->DB->Select("SELECT id
+ FROM artikel
+ WHERE ean = '".$this->app->DB->real_escape_string($beleg['artikel_ean'])."' AND ean <> '' and geloescht <> 1
+ ORDER BY projekt = '".$beleg['beleg_projekt']."' DESC
+ LIMIT 1");
+ }
+ }
+ if(!$beleg['artikel']) {
+ $art['nummer'] = $beleg['artikel_nummer'];
+ if(isset($beleg['artikel_ean']) && $beleg['artikel_ean'] != '') {
+ $art['ean'] = $beleg['artikel_ean'];
+ }
+ $art['projekt'] = $beleg['beleg_projekt'];
+ $art['name_de'] = $beleg['artikel_bezeichnung'];
+ $art['anabregs_text'] = $beleg['artikel_bezeichnung'];
+ if($beleg['artikel_umsatzsteuer'] === 'ermaessigt') {
+ $art['umsatzsteuer'] = $beleg['artikel_umsatzsteuer'];
+ }
+ $art['einheit'] = $beleg['artikel_einheit'];
+ $art['zolltarifnummer'] = $beleg['artikel_zolltarifnummer'];
+ $art['herkunftsland'] = $beleg['artikel_herkunftsland'];
+ if(!empty($uebertragungen)
+ && !empty($transferData['createarticleifnotexists'])
+ && !empty($transferData['createarticleasstoragearticle'])
+ ) {
+ $art['lagerartikel'] = 1;
+ }
+ $beleg['artikel'] = $this->app->erp->InsertUpdateArtikel($art);
+ unset($art);
+ }
+ if($beleg['artikel'])
+ {
+ if(empty($beleg['artikel_nummer'])) {
+ $beleg['artikel_nummer'] = $this->app->DB->Select(
+ sprintf(
+ 'SELECT nummer FROM artikel WHERE id = %d LIMIT 1',
+ $beleg['artikel']
+ )
+ );
+ }
+
+ if(empty($beleg['artikel_bezeichnung'])) {
+ $article = $this->app->DB->SelectRow(
+ sprintf(
+ 'SELECT art.name_de, art.name_en, art.`anabregs_text_en`, art.anabregs_text
+ FROM `artikel` AS `art` WHERE art.id = %d',
+ $beleg['artikel']
+ )
+ );
+ $sprache = $this->app->DB->Select(
+ sprintf(
+ 'SELECT `sprache` FROM `%s` WHERE `id` = %d LIMIT 1',
+ $aktbelegart, $aktbelegid
+ )
+ );
+ if(empty($sprache)) {
+ $sprache = $this->app->DB->Select(
+ sprintf(
+ 'SELECT `sprache` FROM `adresse` WHERE `id` = %d LIMIT 1',
+ $beleg['adresse']
+ )
+ );
+ }
+ if($sprache !== 'deutsch' && $sprache != '' && strtolower($sprache) !== 'de') {
+ if(!empty($article['name_en'])) {
+ $beleg['artikel_bezeichnung'] = $article['name_en'];
+ if(!empty($aricle['anabregs_text_en'])) {
+ $beleg['artikel_beschreibung'] = $aricle['anabregs_text_en'];
+ }
+ }
+ }
+ if(empty($beleg['artikel_bezeichnung'])){
+ $beleg['artikel_bezeichnung'] = $aricle['name_de'];
+ }
+ }
+ elseif($uebertragungen > 0) {
+ $article = $this->app->DB->SelectRow(
+ sprintf(
+ 'SELECT art.name_de, art.name_en, art.`anabregs_text_en`, art.anabregs_text
+ FROM `artikel` AS `art` WHERE art.id = %d',
+ $beleg['artikel']
+ )
+ );
+ if(!empty($article['name_en']) && $beleg['artikel_bezeichnung'] !== $article['name_en']) {
+ $sprache = $this->app->DB->Select(
+ sprintf(
+ 'SELECT `sprache` FROM `%s` WHERE `id` = %d LIMIT 1',
+ $aktbelegart, $aktbelegid
+ )
+ );
+ if(empty($sprache)) {
+ $sprache = $this->app->DB->Select(
+ sprintf(
+ 'SELECT `sprache` FROM `adresse` WHERE `id` = %d LIMIT 1',
+ $beleg['adresse']
+ )
+ );
+ }
+ if($sprache !== 'deutsch' && $sprache != '' && strtolower($sprache) !== 'de') {
+ $beleg['artikel_bezeichnung'] = $article['name_en'];
+ if(!empty($article['anabregs_text_en'])) {
+ $beleg['artikel_beschreibung'] = $article['anabregs_text_en'];
+ }
+ }
+ }
+ }
+ $belegpos = false;
+ switch($aktbelegart)
+ {
+ case 'auftrag':
+ $belegpos = $this->app->erp->AddAuftragPositionManuell($aktbelegid, $beleg['artikel'],
+ ($beleg['artikel_preis']/$beleg['artikel_preisfuermenge']), $beleg['artikel_menge'],
+ $beleg['artikel_bezeichnung'],$beleg['artikel_beschreibung']);
+ if(!$belegpos) {
+ $belegpos = $this->app->DB->GetInsertID();
+ }
+
+ if($teillieferungvon)
+ {
+ if(!$this->app->DB->Select("SELECT porto FROM artikel WHERE id = '".$beleg['artikel']."' LIMIT 1"))
+ {
+ $checkhauptartikel = $this->app->DB->SelectArr("SELECT id, menge, sort
+ FROM auftrag_position
+ WHERE artikel = '".$beleg['artikel']."' AND auftrag = '$teillieferungvon'
+ ORDER BY sort, menge = '".$beleg['menge']."' DESC, menge > '".$beleg['menge']."' DESC");
+ if($checkhauptartikel)
+ {
+ foreach($checkhauptartikel as $k => $v)
+ {
+ if($beleg['artikel_menge'] > 0)
+ {
+ if($v['menge'] > $beleg['artikel_menge'])
+ {
+ $this->app->DB->Update("UPDATE auftrag_position SET menge = menge - ".$beleg['artikel_menge']."
+ WHERE id = '".$v['id']."' LIMIT 1");
+ $beleg['artikel_menge'] = 0;
+ }else{
+ $this->app->DB->Delete("DELETE FROM auftrag_position WHERE id = '".$v['id']."' LIMIT 1");
+ $this->app->DB->Update("UPDATE auftrag_position SET sort = sort - 1
+ WHERE auftrag = '$teillieferungvon' AND sort > '".$v['sort']."'");
+ $beleg['artikel_menge'] -= $v['menge'];
+ }
+ }
+ }
+ $checkmengen = $this->app->DB->Select("SELECT ap.id FROM auftrag_position ap.left
+ join artikel a on ap.artikel = a.id WHERE ap.auftrag = '$teillieferungvon' AND a.porto <> 1 LIMIT 1");
+ if(!$checkmengen) {
+ $this->app->DB->Update("UPDATE auftrag SET status = 'abgeschlossen'
+ WHERE id = '$teillieferungvon' LIMIT 1");
+ }
+ $this->app->erp->ANABREGSNeuberechnen($teillieferungvon,$aktbelegart);
+ }
+ }
+ }
+ if($beleg['artikel_rabatt']) {
+ $this->app->DB->Update("UPDATE auftrag_position SET rabatt = '".$beleg['artikel_rabatt']."'
+ WHERE id = '$belegpos' LIMIT 1");
+ }
+ if($beleg['artikel_waehrung']) {
+ $this->app->DB->Update("UPDATE auftrag_position
+ SET waehrung = '".$this->app->DB->real_escape_string($beleg['artikel_waehrung'])."'
+ WHERE id = '$belegpos' LIMIT 1");
+ }
+
+ break;
+ case 'rechnung':
+ $belegpos = $this->app->erp->AddRechnungPositionManuell($aktbelegid, $beleg['artikel'],
+ ($beleg['artikel_preis']/$beleg['artikel_preisfuermenge']),$beleg['artikel_menge'],$beleg['artikel_bezeichnung'],
+ $beleg['artikel_bezeichnung'],$beleg['artikel_waehrung']);
+ if(!$belegpos) {
+ $belegpos = $this->app->DB->GetInsertID();
+ }
+
+ if($beleg['artikel_rabatt'])$this->app->DB->Update("UPDATE rechnung_position
+ SET rabatt = '".$beleg['artikel_rabatt']."' WHERE id = '$belegpos' LIMIT 1");
+
+ break;
+ case 'gutschrift':
+ $sort = 1+(int)$this->app->DB->Select("SELECT max(sort) FROM gutschrift_position WHERE gutschrift = '$aktbelegid'");
+
+ $this->app->DB->Insert("INSERT INTO gutschrift_position (gutschrift, artikel, sort,
+ preis, menge, waehrung, rabatt, bezeichnung,beschreibung)
+ values ('".$aktbelegid."','".$beleg['artikel']."','".$sort."',
+ '".($beleg['artikel_preis']/$beleg['artikel_preisfuermenge'])."','".$beleg['artikel_menge']."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_waehrung'])."','".$beleg['artikel_rabatt']."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_bezeichnung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_beschreibung'])."')");
+
+ $belegpos = $this->app->DB->GetInsertID();
+ break;
+ case 'bestellung':
+ $sort = 1+(int)$this->app->DB->Select("SELECT max(sort) FROM bestellung_position WHERE bestellung = '$aktbelegid'");
+
+ $umsatzsteuer = $beleg['artikel_umsatzsteuer'] === 'ermaessigt'?'ermaessigt':'';
+ $datum = $this->app->DB->Select("SELECT datum FROM bestellung WHERE id = '$aktbelegid' LIMIT 1");
+
+ $einkauf = $this->app->erp->Einkaufspreis($beleg['artikel'],$beleg['artikel_menge'],$beleg['adresse']);
+
+ if(!empty($einkauf)){
+ $bestellnummer = $this->app->DB->Select(
+ sprintf(
+ 'SELECT e.bestellnummer FROM `einkaufspreise` AS `e` WHERE e.id = %d',
+ $einkauf
+ )
+ );
+ $bestellnummer = $this->app->DB->real_escape_string($bestellnummer);
+ }
+
+ if(empty($bestellnummer)){
+ $bestellnummer = $this->app->DB->real_escape_string($beleg['artikel_nummer']);
+ }
+
+ $this->app->DB->Insert(
+ sprintf(
+ "INSERT INTO bestellung_position (bestellung,artikel,bezeichnunglieferant,bestellnummer,menge,preis,
+ waehrung, sort,lieferdatum, umsatzsteuer, status,projekt, beschreibung)
+ VALUES (%d,%d,'%s','%s',%f,%f,
+ '%s',%d,'%s','%s',
+ 'angelegt','%s','%s')",
+ (int)$aktbelegid,
+ (int)$beleg['artikel'],
+ $this->app->DB->real_escape_string($beleg['artikel_bezeichnung']),
+ $bestellnummer,
+ (float)$beleg['artikel_menge'],
+ (float)($beleg['artikel_preis']/$beleg['artikel_preisfuermenge']),
+ $this->app->DB->real_escape_string($beleg['artikel_waehrung']),
+ $sort,$datum,$umsatzsteuer,
+ $this->app->DB->real_escape_string($beleg['artikel_bezeichnung']),
+ $this->app->DB->real_escape_string($beleg['artikel_beschreibung'])
+ )
+ );
+
+ $belegpos = $this->app->DB->GetInsertID();
+ break;
+ case 'angebot':
+ $sort = 1+(int)$this->app->DB->Select("SELECT max(sort) FROM angebot_position WHERE angebot = '$aktbelegid'");
+
+ $umsatzsteuer = $beleg['artikel_umsatzsteuer'] === 'ermaessigt'?'ermaessigt':'';
+ $datum = $this->app->DB->Select("SELECT datum FROM angebot WHERE id = '$aktbelegid' LIMIT 1");
+
+ $this->app->DB->Insert("INSERT INTO angebot_position (angebot,artikel,beschreibung,bezeichnung,nummer,menge,preis,
+ waehrung, sort,lieferdatum, umsatzsteuer, status,projekt,vpe)
+ VALUES ($aktbelegid','".$beleg['artikel']."','".$this->app->DB->real_escape_string($beleg['artikel_beschreibung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_bezeichnung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_nummer'])."',
+ '".$beleg['artikel_menge']."','".($beleg['artikel_preis']/$beleg['artikel_preisfuermenge'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_waehrung'])."','$sort','$datum','$umsatzsteuer','angelegt',
+ '$projekt','')");
+
+ $belegpos = $this->app->DB->GetInsertID();
+ break;
+ case 'lieferschein':
+ $datum = '0000-00-00';
+ $sort = 1+(int)$this->app->DB->Select("SELECT max(sort) FROM lieferschein_position WHERE lieferschein = '$aktbelegid'");
+
+ $this->app->DB->Insert("INSERT INTO lieferschein_position (lieferschein,artikel,beschreibung,bezeichnung,nummer,menge,
+ sort,lieferdatum, status,projekt)
+ VALUES ('$aktbelegid','".$beleg['artikel']."','".$this->app->DB->real_escape_string($beleg['artikel_beschreibung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_bezeichnung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_nummer'])."','".$beleg['artikel_menge']."',
+ '$sort','$datum','angelegt','$projekt')");
+
+ $belegpos = $this->app->DB->GetInsertID();
+ break;
+ case 'retoure':
+ $datum = '0000-00-00';
+ $sort = 1+(int)$this->app->DB->Select("SELECT max(sort) FROM retoure_position WHERE retoure = '$aktbelegid'");
+
+ $this->app->DB->Insert("INSERT INTO retoure_position (retoure,artikel,beschreibung,bezeichnung,nummer,menge,
+ sort,lieferdatum, projekt)
+ VALUES ('$aktbelegid','".$beleg['artikel']."','".$this->app->DB->real_escape_string($beleg['artikel_beschreibung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_bezeichnung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_nummer'])."','".$beleg['artikel_menge']."',
+ '$sort','$datum','$projekt')");
+
+ $belegpos = $this->app->DB->GetInsertID();
+ break;
+ case 'preisanfrage':
+ $sort = 1+(int)$this->app->DB->Select("SELECT max(sort) FROM preisanfrage_position WHERE preisanfrage= '$aktbelegid'");
+ $datum = $this->app->DB->Select("SELECT datum FROM preisanfrage WHERE id = '$aktbelegid' LIMIT 1");
+ $this->app->DB->Insert("INSERT INTO preisanfrage_position (preisanfrage,artikel,beschreibung,bezeichnung,nummer,menge,
+ sort,lieferdatum, status,projekt)
+ VALUES ('$aktbelegid','".$beleg['artikel']."','".$this->app->DB->real_escape_string($beleg['artikel_beschreibung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_bezeichnung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_nummer'])."','".$beleg['artikel_menge']."',
+ '$sort','$datum','angelegt','$projekt')");
+
+ $belegpos = $this->app->DB->GetInsertID();
+
+ break;
+ case 'proformarechnung':
+ $sort = 1+(int)$this->app->DB->Select("SELECT max(sort) FROM proformarechnung_position WHERE proformarechnung = '$aktbelegid'");
+ $datum = $this->app->DB->Select("SELECT datum FROM proformarechnung WHERE id = '$aktbelegid' LIMIT 1");
+ $umsatzsteuer = $beleg['artikel_umsatzsteuer'] === 'ermaessigt'?'ermaessigt':'';
+ $this->app->DB->Insert("INSERT INTO proformarechnung_position (proformarechnung,artikel,beschreibung,bezeichnung,
+ nummer,menge, sort,lieferdatum, status,projekt,umsatzsteuer)
+ VALUES ($aktbelegid','".$beleg['artikel']."','".$this->app->DB->real_escape_string($beleg['artikel_beschreibung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_bezeichnung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_nummer'])."','".$beleg['artikel_menge']."','$sort',
+ '$datum','angelegt','$projekt','$umsatzsteuer')");
+
+ $belegpos = $this->app->DB->GetInsertID();
+ break;
+ case 'produktion':
+ $sort = 1+(int)$this->app->DB->Select("SELECT max(sort) FROM produktion_position WHERE produktion= '$aktbelegid'");
+ $datum = $this->app->DB->Select("SELECT datum FROM produktion WHERE id = '$aktbelegid' LIMIT 1");
+ $this->app->DB->Insert("INSERT INTO produktion_position (produktion,artikel,beschreibung,bezeichnung,nummer,menge,
+ sort,lieferdatum, status,projekt)
+ VALUES ('$aktbelegid','".$beleg['artikel']."','".$this->app->DB->real_escape_string($beleg['artikel_beschreibung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_bezeichnung'])."',
+ '".$this->app->DB->real_escape_string($beleg['artikel_nummer'])."','".$beleg['artikel_menge']."','$sort',
+ '$datum','angelegt','$projekt')");
+
+ $belegpos = $this->app->DB->GetInsertID();
+ $already_new_item_is_bom = $this->app->DB->Select(
+ sprintf('SELECT stueckliste FROM artikel WHERE id=%d AND produktion=1',
+ $beleg['artikel']
+ )
+ );
+ $already = $this->app->DB->Select(
+ sprintf(
+ 'SELECT id FROM produktion_position WHERE produktion=%d AND explodiert=1 LIMIT 1',
+ $aktbelegid
+ )
+ );
+
+ if(!$already || !$already_new_item_is_bom) {
+ /** @var Produktion $objProduction */
+ $objProduction = $this->app->erp->LoadModul('produktion');
+ if(!empty($objProduction) && method_exists($objProduction, 'addArbeitsanweisungenFunktionsprotokoll')) {
+ $objProduction->addArbeitsanweisungenFunktionsprotokoll($aktbelegid,$belegpos, $beleg['artikel']);
+ }
+ }
+ if(!empty($objProduction)){
+ $this->app->erp->AuftragExplodieren($aktbelegid, 'produktion');
+ $objProduction->ProduktionEinzelnBerechnen($aktbelegid);
+ $objProduction->ProduktionNeuberechnen($aktbelegid);
+ }
+ break;
+ default:
+ break;
+ }
+ if($belegpos)
+ {
+ $artikelnummerkunde = $this->app->DB->real_escape_string(
+ $this->app->DB->Select(
+ "SELECT kundenartikelnummer
+ FROM verkaufspreise
+ WHERE adresse='".$beleg['beleg_adresse']."' AND artikel='".$beleg['artikel']."'
+ AND kundenartikelnummer!='' AND ab_menge <=".
+ (float)$beleg['artikel_menge']."
+ AND (gueltig_bis>=NOW() OR gueltig_bis='0000-00-00')
+ ORDER by ab_menge DESC
+ LIMIT 1"
+ ));
+
+ if($artikelnummerkunde == ''){
+ // Anzeige Artikel Nummer von Gruppe aus Verkaufspreis
+ $returnwaehrung = null;
+ $gruppevkresult = $this->app->erp->GetVerkaufspreis(
+ $beleg['artikel'],
+ (float)$beleg['artikel_menge'],
+ $beleg['adresse'],
+ !empty($beleg['artikel_waehrung'])?$beleg['artikel_waehrung']:'EUR',
+ $returnwaehrung,
+ true
+ );
+ if($gruppevkresult['kundenartikelnummer'] != ''){
+ $artikelnummerkunde = $gruppevkresult['kundenartikelnummer'];
+ }
+ }
+
+ if(!empty($artikelnummerkunde)) {
+ $this->app->DB->Update(
+ sprintf(
+ "UPDATE `%s` SET artikelnummerkunde = '%s' WHERE id = %d ",
+ $aktbelegart.'_position',
+ $this->app->DB->real_escape_string($artikelnummerkunde),
+ $belegpos
+ )
+ );
+ }
+
+
+ $felder = array('artikelnummerkunde','herkunftsland','zolltarifnummer','einheit','lieferdatum');
+ for($i = 1; $i <= 20; $i++) {
+ $felder[] = 'freifeld'.$i;
+ }
+ foreach($felder as $feld)
+ {
+ $this->app->DB->Update("UPDATE ".$aktbelegart."_position
+ SET $feld = '".$this->app->DB->real_escape_string($beleg['artikel_'.$feld])."'
+ WHERE id = '$belegpos' LIMIT 1");
+ }
+ $this->app->erp->ANABREGSNeuberechnen($aktbelegid,$aktbelegart);
+ $this->app->DB->Delete("DELETE FROM belegeimport WHERE id = '".$beleg['id']."' LIMIT 1");
+ }
+ }
+ }
+ }
+ }
+ foreach ($erstelltebelegeids as $belegid => $belegart) {
+ //Nachträgliches löschen aller Belegnummern aus den Angeboten wenn Status == angelegt
+ $this->app->DB->Update("UPDATE " . $belegart . " SET belegnr = '' WHERE id = '$belegid' LIMIT 1");
+ }
+ foreach ($erstelltebelegeNichtAngelegtids as $belegid => $belegart) {
+ if($this->app->DB->Select(
+ sprintf('
+ SELECT id
+ FROM `%s`
+ WHERE id = %d AND (status = \'freigegeben\' OR status = \'abgeschlossen\' OR status = \'versendet\') AND belegnr = \'\'
+ ', $belegart, $belegid
+ )
+ )
+ ){
+ $this->app->erp->BelegFreigabe($belegart, $belegid);
+ }
+ }
+ $msg = $this->app->erp->base64_url_encode("Die Belege wurden importiert!
");
+ }else{
+ $msg = $this->app->erp->base64_url_encode("Keine Belege zum Importieren gefunden!
");
+ }
+ if($uebertragungen) {
+ return $ret;
+ }
+ if($idliste) {
+ return !empty($belege)?count($belege):0;
+ }
+ return $msg;
+ }
+
+ public function BelegeimportDatei($_datei = null, $uebertragungen = false)
+ {
+ $ret = null;
+ $_projekt = 0;
+ if($uebertragungen) {
+ $_projekt = $this->app->DB->Select("SELECT projekt FROM uebertragungen_account WHERE id = '$uebertragungen' LIMIT 1");
+ }
+ if($_datei === null)
+ {
+ //$this->app->erp->BelegeimportMenu();
+ //$this->app->YUI->TableSearch('TAB1','belegeimport_list', 'show','','',basename(__FILE__), __CLASS__);
+
+ $art = $this->app->Secure->GetPOST("art");
+ $status = $this->app->Secure->GetPOST("status");
+ $datei = (int)$this->app->Secure->GetGET('datei');
+ }else{
+ $ret = null;
+ $art = '';
+ $datei = $_datei;
+ $status = 'angelegt';
+ }
+ if($uebertragungen) {
+ $api = $this->app->DB->Select("SELECT api FROM uebertragungen_account WHERE id = '$uebertragungen' LIMIT 1");
+ }
+ $row = 1;
+ if($_datei === null)
+ {
+ $art = $this->app->Secure->GetPOST("art");
+ $status = $this->app->Secure->GetPOST("status");
+ $datei = (int)$this->app->Secure->GetGET('datei');
+ }else{
+ $ret = null;
+ $art = '';
+ $datei = $_datei;
+ $status = 'angelegt';
+ }
+
+ if($datei || (!empty($_FILES['datei']) && !empty($_FILES['datei']['tmp_name'])))
+ {
+ if (
+ ($handle = fopen(
+ $_datei === null?(isset($_FILES['datei'])?$_FILES['datei']['tmp_name']:$this->app->erp->GetDateiPfad($datei)):$datei,
+ 'r')
+ ) !== FALSE
+ ) {
+ $vkpreisex = false;
+ $artikel_bezeichnung = false;
+ $beleg_datum = false;
+ $menge = false;
+ $beleg_art = false;
+ $beleg_nr_parent = 0;
+ $oldbeleg_belegnr = '';
+ $fields = [];
+ $csvseparator = $this->app->DB->Select(
+ sprintf(
+ 'SELECT csvseparator FROM uebertragungen_account WHERE id = %d',
+ $uebertragungen
+ )
+ );
+ if(empty($csvseparator)) {
+ $csvseparator = ';';
+ }
+ while (($data = fgetcsv($handle, 0, $csvseparator,'"')) !== FALSE) {
+ $num = (!empty($data)?count($data):0);
+ //echo " $num Felder in Zeile $row:
\n";
+
+ if($row > 1){
+ if($_datei !== null) {
+ $status = 'angelegt';
+ }
+ for ($c=0; $c < $num; $c++){
+ if($fields[$c] === 'art' && $data[$c]) {
+ $art = trim(strtolower($data[$c]));
+ }
+ }
+ $this->app->DB->Insert("INSERT INTO belegeimport (userid,status,art) VALUES ('".($_datei === null?$this->app->User->GetID():0)."','$status','$art')");
+ $rowid = $this->app->DB->GetInsertID();
+ if($uebertragungen) {
+ $this->app->DB->Update("UPDATE belegeimport SET beleg_projekt = '$_projekt' WHERE id = '$rowid' LIMIT 1");
+ }
+ $ret[] = $rowid;
+ }
+ $preis = 0;
+ $preisfuermenge = 1;
+ $projekt = $_projekt;
+ $tmpartikelid = 0;
+ $tmpadresseid = 0;
+ for ($c=0; $c < $num; $c++){
+ if($row==1){
+ $fields[$c]=$this->app->DB->real_escape_string($data[$c]);
+ if($fields[$c] === 'artikel_preis')$vkpreisex = str_replace(',','.',$c);
+ if($fields[$c] === 'artikel_menge')$menge = str_replace(',','.',$c);
+ if($fields[$c] === 'artikel_bezeichnung')$artikel_bezeichnung = $c;
+ if($fields[$c] === 'beleg_datum')$beleg_datum = $c;
+ if($fields[$c] === 'beleg_art')$beleg_art = $c;
+ }else{
+ switch($fields[$c])
+ {
+ case 'beleg_status':
+ if(in_array($data[$c],['angelegt','freigegeben','storniert','abgeschlossen','gestartet','versendet'])) {
+ $status = $data[$c];
+
+ }
+
+ break;
+ case 'beleg_belegnr':
+
+ if($uebertragungen && ($data[$c] != '' && $data[$c] == $oldbeleg_belegnr))
+ {
+ $data[$c] = 'PARENT';
+ }elseif($uebertragungen && $oldbeleg_belegnr != $data[$c] && $data[$c] !== 'NEW' && $data[$c] !== 'PARENT')
+ {
+ $oldbeleg_belegnr = $data[$c];
+ }
+
+ if(($data[$c] !== 'PARENT' && $status === 'angelegt') || $data[$c] == ''){
+ $data[$c] = "NEW";
+ }
+
+ if($data[$c] === 'PARENT'){
+ if($beleg_nr_parent){
+ //Übernimm Belegnummer der vorherigen Zeile
+ $data[$c] = $beleg_nr_parent;
+ }else{
+ //Falls vor dieser PARENT Zeile kein Eintrag vorhanden ist soll sie als NEW betrachtet werden
+ $data[$c] = 'NEW';
+ }
+ }
+
+
+ if($data[$c] === 'NEW'){
+ if($status === 'angelegt'){
+ //Neue Entwurfsbelegnummer
+ $data[$c] = 'ENTWURF_'.$rowid.'_';
+ }else{
+ //suche nächste freie Belegnummer falls NEW oder leere Belegnummer
+ $data[$c] = $this->app->erp->GetNextNummer($art);
+ }
+ $oldbeleg_belegnr = $data[$c];
+ }
+ //Merke die aktuelle Belegnummer falls der nächste Eintrag PARENT ist
+ $beleg_nr_parent = $data[$c];
+ break;
+
+ case 'beleg_projekt':
+ if((!is_numeric($data[$c]) || strpos($data[$c],'.') !== false) && $data[$c])
+ {
+ $data[$c] = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung = '".$this->app->DB->real_escape_string($data[$c])."' LIMIT 1");
+ if($data[$c]) {
+ $projekt = $data[$c];
+ }
+ }
+ break;
+
+ case 'artikel':
+ if($uebertragungen && $api)
+ {
+ if(!$tmpartikelid)
+ {
+ $tmpartikelid = $this->app->DB->Select(
+ "SELECT id_int
+ FROM api_mapping
+ WHERE id_ext = '%s' AND id_ext != '' AND id_int <> 0 AND tabelle = 'artikel' AND api = %d
+ LIMIT 1",
+ $data[$c], (int)$api
+ );
+ if($tmpartikelid > 0) {
+ $this->app->DB->Update("UPDATE belegeimport SET artikel='$tmpartikelid' WHERE id='".$rowid."' LIMIT 1");
+ }
+ }
+ }
+ break;
+
+ case 'artikel_nummer':
+ if(!$tmpartikelid) {
+ $tmpartikelid = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='".$this->app->DB->real_escape_string($data[$c])."' AND nummer!='' AND geloescht!=1 ORDER BY projekt = '$projekt' DESC LIMIT 1");
+ }
+ if($tmpartikelid > 0) {
+ $this->app->DB->Update("UPDATE belegeimport SET artikel='$tmpartikelid' WHERE id='".$rowid."' LIMIT 1");
+ }
+ break;
+
+ case 'artikel_ean':
+ if(!$tmpartikelid)$tmpartikelid = $this->app->DB->Select("SELECT id FROM artikel WHERE ean='".$this->app->DB->real_escape_string($data[$c])."' AND ean != '' AND nummer!='' AND geloescht!=1 ORDER BY projekt = '$projekt' DESC LIMIT 1");
+ if($tmpartikelid > 0) {
+ $this->app->DB->Update("UPDATE belegeimport SET artikel='$tmpartikelid' WHERE id='".$rowid."' LIMIT 1");
+ }
+ break;
+
+ case 'adresse':
+ if($uebertragungen && $api)
+ {
+ $tmpadresseid = (int)$data[$c];
+ }
+ break;
+
+ case 'beleg_kundennummer':
+ if(!$tmpadresseid)
+ {
+ $tmpadresseid = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer='".$this->app->DB->real_escape_string($data[$c])."' AND kundennummer!='' AND geloescht!=1 ORDER BY projekt = '$projekt' DESC LIMIT 1");
+ if($tmpadresseid > 0) {
+ $this->app->DB->Update("UPDATE belegeimport SET adresse='$tmpadresseid' WHERE id='".$rowid."' LIMIT 1");
+ }
+ else $tmpadresseid = 0;
+ }
+ if($data[$c]=='') {
+ $data[$c] = 'NEW';
+ }
+ break;
+ case 'beleg_lieferantennummer':
+ if(!$tmpadresseid)
+ {
+ $tmpadresseid = $this->app->DB->Select("SELECT id FROM adresse WHERE lieferantennummer='".$this->app->DB->real_escape_string($data[$c])."' AND lieferantennummer!='' AND geloescht!=1 ORDER BY projekt = '$projekt' DESC LIMIT 1");
+ if($tmpadresseid > 0) {
+ $this->app->DB->Update("UPDATE belegeimport SET adresse='$tmpadresseid' WHERE id='".$rowid."' LIMIT 1");
+ }
+ else $tmpadresseid = 0;
+ }
+ if($data[$c]=='') {
+ $data[$c] = 'NEW';
+ }
+ break;
+
+ case 'beleg_datum':
+ if(strpos($data[$c],'.') !== false)
+ {
+ $datuma = explode('.',$data[$c]);
+ if((!empty($datuma)?count($datuma):0) == 3)
+ {
+ if(strlen($datuma[2]) == 2)
+ {
+ $curryear = date("Y")-2000;
+ if((int)$datuma[2] <= $curryear)
+ {
+ $data[$c] = $datuma[0].'.'.$datuma[1].'.20'.$datuma[2];
+ }else{
+ $data[$c] = $datuma[0].'.'.$datuma[1].'.19'.$datuma[2];
+ }
+ }
+ }
+ $data[$c] = date('Y-m-d',strtotime($data[$c]));
+ }
+ break;
+
+ case 'beleg_lieferdatum':
+ if(strpos($data[$c],'.') !== false)
+ {
+ $datuma = explode('.',$data[$c]);
+ if((!empty($datuma)?count($datuma):0) == 3)
+ {
+ if(strlen($datuma[2]) == 2)
+ {
+ $curryear = date("Y")-2000;
+ if((int)$datuma[2] <= $curryear)
+ {
+ $data[$c] = $datuma[0].'.'.$datuma[1].'.20'.$datuma[2];
+ }else{
+ $data[$c] = $datuma[0].'.'.$datuma[1].'.19'.$datuma[2];
+ }
+ }
+ }
+ $data[$c] = date('Y-m-d',strtotime($data[$c]));
+ }
+ break;
+
+ case 'beleg_tatsaechlicheslieferdatum':
+ if(strpos($data[$c],'.') !== false)
+ {
+ $datuma = explode('.',$data[$c]);
+ if((!empty($datuma)?count($datuma):0) == 3)
+ {
+ if(strlen($datuma[2]) == 2)
+ {
+ $curryear = date("Y")-2000;
+ if((int)$datuma[2] <= $curryear)
+ {
+ $data[$c] = $datuma[0].'.'.$datuma[1].'.20'.$datuma[2];
+ }else{
+ $data[$c] = $datuma[0].'.'.$datuma[1].'.19'.$datuma[2];
+ }
+ }
+ }
+ $data[$c] = date('Y-m-d',strtotime($data[$c]));
+ }
+ break;
+
+ case 'artikel_lieferdatum':
+ if(strpos($data[$c],'.') !== false)
+ {
+ $datuma = explode('.',$data[$c]);
+ if((!empty($datuma)?count($datuma):0) == 3)
+ {
+ if(strlen($datuma[2]) == 2)
+ {
+ $curryear = date("Y")-2000;
+ if((int)$datuma[2] <= $curryear)
+ {
+ $data[$c] = $datuma[0].'.'.$datuma[1].'.20'.$datuma[2];
+ }else{
+ $data[$c] = $datuma[0].'.'.$datuma[1].'.19'.$datuma[2];
+ }
+ }
+ }
+ $data[$c] = date('Y-m-d',strtotime($data[$c]));
+ }
+ break;
+
+ case 'artikel_preis':
+ $preis = str_replace(',','.',$data[$c]);
+ if ($preisfuermenge == 0) {
+ $preisfuermenge =1;
+ }
+ $data[$c] = $preis / $preisfuermenge;
+ break;
+ case 'artikel_preisfuermenge':
+ $preisfuermenge = str_replace(',','.',$data[$c]);
+ if ($preisfuermenge == 0) {
+ $preisfuermenge =1;
+ }
+ $data['artikel_preis'] = $preis / $preisfuermenge;
+ break;
+ case 'artikel_rabatt':
+ case 'artikel_menge':
+ $data[$c] = str_replace(',','.',$data[$c]);
+ break;
+
+ }
+ if(isset($fields[$c]) && $fields[$c])
+ {
+ $this->app->DB->Update("UPDATE belegeimport SET ".$fields[$c]." = '".$this->app->DB->real_escape_string($data[$c])."' WHERE id='".$rowid."' LIMIT 1");
+ }
+ if(!empty($status)) {
+ $this->app->DB->Update(
+ sprintf(
+ "UPDATE belegeimport SET status = '%s' WHERE id = %d",
+ $this->app->DB->real_escape_string($status), $rowid
+ )
+ );
+ }
+
+ }
+ //echo $data[$c] . "
\n";
+ }
+
+ if($row > 1){
+ if($menge === false)
+ {
+ $this->app->DB->Update("UPDATE belegeimport SET artikel_menge = 1 WHERE id='".$rowid."' LIMIT 1");
+ }
+ if($beleg_datum === false)
+ {
+ $this->app->DB->Update("UPDATE belegeimport SET beleg_datum = now() WHERE id = '".$rowid."' LIMIT 1");
+ }
+ if($tmpadresseid && $beleg_art === false)
+ {
+ $arttmp = $this->app->DB->Select("SELECT art FROM adresse WHERE id = '$tmpadresseid' LIMIT 1");
+ if($arttmp) {
+ $this->app->DB->Update("UPDATE belegeimport SET beleg_art = '".$this->app->DB->real_escape_string($arttmp)."' WHERE id = '".$rowid."' LIMIT 1");
+ }
+ }
+ if( $tmpartikelid)
+ {
+ if($vkpreisex === false)
+ {
+ $this->app->DB->Update("UPDATE belegeimport SET artikel_preis = '".$this->app->erp->GetVerkaufspreis($tmpartikelid,($menge === false?1: ($data[$menge]>0?$data[$menge]:1)),$tmpadresseid )."' WHERE id = '".$rowid."' LIMIT 1");
+ }
+ if($artikel_bezeichnung === false)
+ {
+ $this->app->DB->Update("UPDATE belegeimport SET artikel_bezeichnung = '".$this->app->DB->real_escape_string($this->app->DB->Select("SELECT name_de FROM artikel WHERE id = '$tmpartikelid' LIMIT 1" ))."' WHERE id = '".$rowid."' LIMIT 1");
+ }
+ }
+ if(!$data[$menge]){
+ //Artikel mit Menge 0 entfernen
+ $this->app->DB->Update("DELETE FROM belegeimport WHERE id='".$rowid."'");
+ }
+ }
+
+ $row++;
+ }
+ fclose($handle);
+ }
+ }
+ return $ret;
+ }
+ }
diff --git a/www/pages/api_account.php b/www/pages/api_account.php
index 81cbdb87..f8ef94bd 100644
--- a/www/pages/api_account.php
+++ b/www/pages/api_account.php
@@ -1,298 +1,304 @@
-Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> |
";
-
- $sql = "SELECT aa.id, aa.id, aa.bezeichnung,
- if(aa.aktiv = 1, 'ja','nein') as aktiv,
- aa.id
- FROM `api_account` AS `aa`
- ";
- $fastcount = "SELECT COUNT(`aa`.`id`) FROM `api_account` AS `aa`";
-
- break;
-
- }
-
- $erg = [];
- foreach($erlaubtevars as $k => $v) {
- if(isset($$v)) {
- $erg[$v] = $$v;
- }
- }
- return $erg;
- }
-
- /**
- * Api_account constructor.
- *
- * @param Application $app
- * @param bool $intern
- */
- public function __construct($app, $intern = false)
- {
- $this->app=$app;
- if($intern) {
- return;
- }
- $this->app->ActionHandlerInit($this);
-
- $this->app->ActionHandler("create","Api_AccountCreate");
- $this->app->ActionHandler("edit","Api_AccountEdit");
- $this->app->ActionHandler("list","Api_AccountList");
- $this->app->ActionHandler("delete","Api_AccountDelete");
-
- $this->app->DefaultActionHandler('list');
- $this->app->ActionHandlerListen($app);
- }
-
- function Api_AccountCreate(){
-
- }
-
- function Api_AccountEdit(){
-
- }
-
- public function Api_AccountDelete(){
- $id = $this->app->Secure->GetGET('id');
- $this->app->DB->Delete(sprintf('DELETE FROM `api_account` WHERE `id` = %d', $id));
- $this->app->Location->execute('index.php?module=api_account&action=list');
- }
-
-
- /**
- * @return JsonResponse
- */
- public function HandleGetAjaxAction()
- {
- $id = (int)$this->app->Secure->GetPOST('id');
- if($id === 0) {
- $data = [
- 'aktiv' => 0,
- 'id' => '',
- 'bezeichnung' => '',
- 'projekt' => '',
- 'remotedomain' => '',
- 'initkey' => '',
- 'importwarteschlange' => 0,
- 'importwarteschlange_name' => '',
- 'event_url' => '',
- 'cleanutf8' => 0,
- 'apitempkey' => '',
- 'ishtmltransformation' => 0,
- ];
-
- return new JsonResponse($data);
- }
- if($id > 0) {
- $data = $this->app->DB->SelectRow(
- sprintf(
- "SELECT a.id, a.bezeichnung, a.aktiv, p.abkuerzung AS `projekt`, a.remotedomain, a.initkey,
- a.importwarteschlange, a.importwarteschlange_name, a.cleanutf8, a.event_url, a.permissions, a.ishtmltransformation
- FROM `api_account` AS `a`
- LEFT JOIN `projekt` AS `p` ON a.projekt = p.id
- WHERE a.id = %d",
- $id
- )
- );
- /** @var Api $api */
- $api = $this->app->loadModule('api');
- $data['apitempkey'] = $api->generateHashFromDomainAndKey($data['initkey'], $data['remotedomain']);
- if(!empty($data)) {
- return new JsonResponse($data);
- }
- }
-
- return new JsonResponse(['error'=>'Account nicht gefunden'], JsonResponse::HTTP_BAD_REQUEST);
- }
-
- /**
- * @return JsonResponse
- */
- public function HandleSaveAjaxAction()
- {
- if(!$this->app->erp->RechteVorhanden('api_account', 'edit')) {
- return new JsonResponse(['error'=>'Fehlende Rechte'], JsonResponse::HTTP_BAD_REQUEST);
- }
-
- $id = (int)$this->app->Secure->GetPOST('id');
- $bezeichnung = $this->app->Secure->GetPOST('bezeichnung');
- if(empty($bezeichnung)) {
- return new JsonResponse(['error'=>'Bitte füllen Sie die Bezeichnung aus'], JsonResponse::HTTP_BAD_REQUEST);
- }
- $projekt = (string)$this->app->Secure->GetPOST('projekt');
- if($projekt !== ''){
- $projekt = (int)$this->app->erp->ReplaceProjekt(1, $projekt, 1);
- }
- else {
- $projekt = 0;
- }
- $aktiv = (int)(bool)$this->app->Secure->GetPOST('aktiv');
- $importwarteschlange = (int)(bool)$this->app->Secure->GetPOST('importwarteschlange');
- $cleanutf8 = (int)(bool)$this->app->Secure->GetPOST('cleanutf8');
- $remotedomain = $this->app->Secure->GetPOST('remotedomain');
- $initkey = $this->app->Secure->GetPOST('initkey');
- $importwarteschlange_name = $this->app->Secure->GetPOST('importwarteschlange_name');
- $event_url = $this->app->Secure->GetPOST('event_url');
- $isHtmlTransformation = (int)(bool)$this->app->Secure->GetPOST('ishtmltransformation');
- $api_permissions = $this->prepareApiPermissions($this->app->Secure->GetPOST('api_permissions'));
- if($id <= 0) {
- $this->app->DB->Insert(
- sprintf(
- "INSERT INTO `api_account`
- (`bezeichnung`, `initkey`, `importwarteschlange_name`, `event_url`, `remotedomain`, `aktiv`,
- `importwarteschlange`, `cleanutf8`, `uebertragung_account`, `projekt`, `permissions`, `ishtmltransformation`)
- VALUES ('%s', '%s', '%s', '%s', '%s', %d,
- %d, %d, 0, %d, '%s', %d) ",
- $bezeichnung, $initkey, $importwarteschlange_name, $event_url, $remotedomain, $aktiv,
- $importwarteschlange, $cleanutf8, $projekt, $api_permissions, $isHtmlTransformation
- )
- );
- $id = (int)$this->app->DB->GetInsertID();
- if($id){
- $data = ['success' => true, 'id' => $id];
- return new JsonResponse($data);
- }
- return new JsonResponse(['error'=>'Account konnte nicht erstellt werden'], JsonResponse::HTTP_BAD_REQUEST);
- }
-
- $data = $this->app->DB->SelectRow(
- sprintf(
- "SELECT a.id, a.bezeichnung, a.aktiv, p.abkuerzung AS `projekt`, a.remotedomain, a.initkey,
- a.importwarteschlange, a.importwarteschlange_name, a.cleanutf8, a.event_url, a.permissions, a.ishtmltransformation
- FROM `api_account` AS `a`
- LEFT JOIN `projekt` AS `p` ON a.projekt = p.id
- WHERE a.id = %d",
- $id
- )
- );
- if(empty($data)) {
- return new JsonResponse(['error'=>'Account nicht gefunden'], JsonResponse::HTTP_BAD_REQUEST);
- }
- $this->app->DB->Update(
- sprintf(
- "UPDATE `api_account`
- SET `bezeichnung` = '%s',
- `initkey` = '%s',
- `importwarteschlange_name` = '%s',
- `event_url` = '%s',
- `remotedomain` = '%s',
- `aktiv` = %d,
- `importwarteschlange` = %d,
- `cleanutf8` = %d,
- `uebertragung_account` = 0,
- `projekt` = %d ,
- `permissions` = '%s',
- `ishtmltransformation` = %d
- WHERE `id` = %d",
- $bezeichnung, $initkey, $importwarteschlange_name, $event_url, $remotedomain, $aktiv,
- $importwarteschlange, $cleanutf8, $projekt, $api_permissions, $isHtmlTransformation, $id
- )
- );
- if(empty($this->app->DB->error())) {
- $data = ['success' => true, 'id' => $id];
- return new JsonResponse($data);
- }
- return new JsonResponse(['error'=>'Account konnte nicht geändert werden'], JsonResponse::HTTP_BAD_REQUEST);
- }
-
- private function prepareApiPermissions(array $apiPermissions){
- $cleanedPermissions = [];
- foreach ($apiPermissions as $permission => $value){
- if($value === 'true'){
- $cleanedPermissions[] = $permission;
- }
- }
-
- return json_encode($cleanedPermissions);
- }
-
- public function Api_AccountList(){
- $cmd = $this->app->Secure->GetGET('cmd');
- if($cmd === 'get') {
- return $this->HandleGetAjaxAction();
- }
- if($cmd === 'save') {
- return $this->HandleSaveAjaxAction();
- }
-
- $apiPermissions = $this->app->DB->SelectArr("SELECT * FROM `api_permission`");
-
- $groupedApiPermissions = [];
- foreach ($apiPermissions as $apiPermission){
- $groupedApiPermissions[$apiPermission['group']][] =$apiPermission;
- }
-
- $apiPermissionsHtml = '';
- foreach ($groupedApiPermissions as $group => $permissions) {
- $apiPermissionsHtml .= '';
- $apiPermissionsHtml .= "{$group} | ";
- $apiPermissionsHtml .= "";
- foreach ($permissions as $permission){
- $apiPermissionsHtml .= "";
- $apiPermissionsHtml .= " ";
- }
- $apiPermissionsHtml .= " | ";
- $apiPermissionsHtml .= '
';
- }
-
- $this->app->YUI->TableSearch('TAB1','api_account_list', 'show','','',basename(__FILE__), __CLASS__);
- $this->app->erp->MenuEintrag('#', 'Neu');
- $this->app->erp->MenuEintrag('index.php?module=api_account&action=list', 'Übersicht');
- $this->app->erp->Headlines('API Account');
- $this->app->Tpl->Set('API_PERMISSIONS_HTML', $apiPermissionsHtml);
- $this->app->YUI->Autocomplete('projekt', 'projektname', 1);
- $this->app->Tpl->Parse('PAGE','api_account_list.tpl');
- }
-}
+Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> |
";
+
+ $sql = "SELECT aa.id, aa.id, aa.bezeichnung,
+ if(aa.aktiv = 1, 'ja','nein') as aktiv,
+ aa.id
+ FROM `api_account` AS `aa`
+ ";
+ $fastcount = "SELECT COUNT(`aa`.`id`) FROM `api_account` AS `aa`";
+
+ break;
+
+ }
+
+ $erg = [];
+ foreach($erlaubtevars as $k => $v) {
+ if(isset($$v)) {
+ $erg[$v] = $$v;
+ }
+ }
+ return $erg;
+ }
+
+ /**
+ * Api_account constructor.
+ *
+ * @param Application $app
+ * @param bool $intern
+ */
+ public function __construct($app, $intern = false)
+ {
+ $this->app=$app;
+ if($intern) {
+ return;
+ }
+ $this->app->ActionHandlerInit($this);
+
+ $this->app->ActionHandler("create","Api_AccountCreate");
+ $this->app->ActionHandler("edit","Api_AccountEdit");
+ $this->app->ActionHandler("list","Api_AccountList");
+ $this->app->ActionHandler("delete","Api_AccountDelete");
+
+ $this->app->DefaultActionHandler('list');
+ $this->app->ActionHandlerListen($app);
+ }
+
+ function Api_AccountCreate(){
+
+ }
+
+ function Api_AccountEdit(){
+
+ }
+
+ public function Api_AccountDelete(){
+ $id = $this->app->Secure->GetGET('id');
+ $this->app->DB->Delete(sprintf('DELETE FROM `api_account` WHERE `id` = %d', $id));
+ $this->app->Location->execute('index.php?module=api_account&action=list');
+ }
+
+
+ /**
+ * @return JsonResponse
+ */
+ public function HandleGetAjaxAction()
+ {
+ $id = (int)$this->app->Secure->GetPOST('id');
+ if($id === 0) {
+ $data = [
+ 'aktiv' => 0,
+ 'id' => '',
+ 'bezeichnung' => '',
+ 'projekt' => '',
+ 'remotedomain' => '',
+ 'initkey' => '',
+ 'importwarteschlange' => 0,
+ 'importwarteschlange_name' => '',
+ 'event_url' => '',
+ 'cleanutf8' => 0,
+ 'apitempkey' => '',
+ 'ishtmltransformation' => 0,
+ ];
+
+ return new JsonResponse($data);
+ }
+ if($id > 0) {
+ $data = $this->app->DB->SelectRow(
+ sprintf(
+ "SELECT a.id, a.bezeichnung, a.aktiv, p.abkuerzung AS `projekt`, a.remotedomain, a.initkey,
+ a.importwarteschlange, a.importwarteschlange_name, a.cleanutf8, a.event_url, a.permissions, a.ishtmltransformation
+ FROM `api_account` AS `a`
+ LEFT JOIN `projekt` AS `p` ON a.projekt = p.id
+ WHERE a.id = %d",
+ $id
+ )
+ );
+ /** @var Api $api */
+ $api = $this->app->loadModule('api');
+ $data['apitempkey'] = $api->generateHashFromDomainAndKey($data['initkey'], $data['remotedomain']);
+ if(!empty($data)) {
+ return new JsonResponse($data);
+ }
+ }
+
+ return new JsonResponse(['error'=>'Account nicht gefunden'], JsonResponse::HTTP_BAD_REQUEST);
+ }
+
+ /**
+ * @return JsonResponse
+ */
+ public function HandleSaveAjaxAction()
+ {
+ if(!$this->app->erp->RechteVorhanden('api_account', 'edit')) {
+ return new JsonResponse(['error'=>'Fehlende Rechte'], JsonResponse::HTTP_BAD_REQUEST);
+ }
+
+ $id = (int)$this->app->Secure->GetPOST('id');
+ $bezeichnung = $this->app->Secure->GetPOST('bezeichnung');
+ if(empty($bezeichnung)) {
+ return new JsonResponse(['error'=>'Bitte füllen Sie die Bezeichnung aus'], JsonResponse::HTTP_BAD_REQUEST);
+ }
+ $projekt = (string)$this->app->Secure->GetPOST('projekt');
+ if($projekt !== ''){
+ $projekt = (int)$this->app->erp->ReplaceProjekt(1, $projekt, 1);
+ }
+ else {
+ $projekt = 0;
+ }
+ $aktiv = (int)(bool)$this->app->Secure->GetPOST('aktiv');
+ $importwarteschlange = (int)(bool)$this->app->Secure->GetPOST('importwarteschlange');
+ $cleanutf8 = (int)(bool)$this->app->Secure->GetPOST('cleanutf8');
+ $remotedomain = $this->app->Secure->GetPOST('remotedomain');
+ $initkey = $this->app->Secure->GetPOST('initkey');
+ $importwarteschlange_name = $this->app->Secure->GetPOST('importwarteschlange_name');
+ $event_url = $this->app->Secure->GetPOST('event_url');
+ $isHtmlTransformation = (int)(bool)$this->app->Secure->GetPOST('ishtmltransformation');
+ $api_permissions = $this->prepareApiPermissions($this->app->Secure->GetPOST('api_permissions'));
+ if($id <= 0) {
+ $this->app->DB->Insert(
+ sprintf(
+ "INSERT INTO `api_account`
+ (`bezeichnung`, `initkey`, `importwarteschlange_name`, `event_url`, `remotedomain`, `aktiv`,
+ `importwarteschlange`, `cleanutf8`, `uebertragung_account`, `projekt`, `permissions`, `ishtmltransformation`)
+ VALUES ('%s', '%s', '%s', '%s', '%s', %d,
+ %d, %d, 0, %d, '%s', %d) ",
+ $bezeichnung, $initkey, $importwarteschlange_name, $event_url, $remotedomain, $aktiv,
+ $importwarteschlange, $cleanutf8, $projekt, $api_permissions, $isHtmlTransformation
+ )
+ );
+ $id = (int)$this->app->DB->GetInsertID();
+ if($id){
+ $data = ['success' => true, 'id' => $id];
+ return new JsonResponse($data);
+ }
+ return new JsonResponse(['error'=>'Account konnte nicht erstellt werden'], JsonResponse::HTTP_BAD_REQUEST);
+ }
+
+ $data = $this->app->DB->SelectRow(
+ sprintf(
+ "SELECT a.id, a.bezeichnung, a.aktiv, p.abkuerzung AS `projekt`, a.remotedomain, a.initkey,
+ a.importwarteschlange, a.importwarteschlange_name, a.cleanutf8, a.event_url, a.permissions, a.ishtmltransformation
+ FROM `api_account` AS `a`
+ LEFT JOIN `projekt` AS `p` ON a.projekt = p.id
+ WHERE a.id = %d",
+ $id
+ )
+ );
+ if(empty($data)) {
+ return new JsonResponse(['error'=>'Account nicht gefunden'], JsonResponse::HTTP_BAD_REQUEST);
+ }
+ $this->app->DB->Update(
+ sprintf(
+ "UPDATE `api_account`
+ SET `bezeichnung` = '%s',
+ `initkey` = '%s',
+ `importwarteschlange_name` = '%s',
+ `event_url` = '%s',
+ `remotedomain` = '%s',
+ `aktiv` = %d,
+ `importwarteschlange` = %d,
+ `cleanutf8` = %d,
+ `uebertragung_account` = 0,
+ `projekt` = %d ,
+ `permissions` = '%s',
+ `ishtmltransformation` = %d
+ WHERE `id` = %d",
+ $bezeichnung, $initkey, $importwarteschlange_name, $event_url, $remotedomain, $aktiv,
+ $importwarteschlange, $cleanutf8, $projekt, $api_permissions, $isHtmlTransformation, $id
+ )
+ );
+ if(empty($this->app->DB->error())) {
+ $data = ['success' => true, 'id' => $id];
+ return new JsonResponse($data);
+ }
+ return new JsonResponse(['error'=>'Account konnte nicht geändert werden'], JsonResponse::HTTP_BAD_REQUEST);
+ }
+
+ private function prepareApiPermissions(array $apiPermissions){
+ $cleanedPermissions = [];
+ foreach ($apiPermissions as $permission => $value){
+ if($value === 'true'){
+ $cleanedPermissions[] = $permission;
+ }
+ }
+
+ return json_encode($cleanedPermissions);
+ }
+
+ public function Api_AccountList(){
+ $cmd = $this->app->Secure->GetGET('cmd');
+ if($cmd === 'get') {
+ return $this->HandleGetAjaxAction();
+ }
+ if($cmd === 'save') {
+ return $this->HandleSaveAjaxAction();
+ }
+
+ $apiPermissions = $this->app->DB->SelectArr("SELECT * FROM `api_permission`");
+
+ if (empty($apiPermissions)) {
+ $api = $this->app->loadModule('api');
+ $api->fillApiPermissions();
+ $apiPermissions = $this->app->DB->SelectArr("SELECT * FROM `api_permission`");
+ }
+
+ $groupedApiPermissions = [];
+ foreach ($apiPermissions as $apiPermission){
+ $groupedApiPermissions[$apiPermission['group']][] =$apiPermission;
+ }
+
+ $apiPermissionsHtml = '';
+ foreach ($groupedApiPermissions as $group => $permissions) {
+ $apiPermissionsHtml .= '';
+ $apiPermissionsHtml .= "{$group} | ";
+ $apiPermissionsHtml .= "";
+ foreach ($permissions as $permission){
+ $apiPermissionsHtml .= "";
+ $apiPermissionsHtml .= " ";
+ }
+ $apiPermissionsHtml .= " | ";
+ $apiPermissionsHtml .= '
';
+ }
+
+ $this->app->YUI->TableSearch('TAB1','api_account_list', 'show','','',basename(__FILE__), __CLASS__);
+ $this->app->erp->MenuEintrag('#', 'Neu');
+ $this->app->erp->MenuEintrag('index.php?module=api_account&action=list', 'Übersicht');
+ $this->app->erp->Headlines('API Account');
+ $this->app->Tpl->Set('API_PERMISSIONS_HTML', $apiPermissionsHtml);
+ $this->app->YUI->Autocomplete('projekt', 'projektname', 1);
+ $this->app->Tpl->Parse('PAGE','api_account_list.tpl');
+ }
+}