<?php
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
* 
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
*
* This file is licensed under the Embedded Projects General Public License *Version 3.1. 
*
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis 
* to obtain the text of the corresponding license version.  
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*/
?>
<?php
include '_gen/adresse.php';

class Adresse extends GenAdresse {
  /** @var Application $app */
  var $app;
  const MODULE_NAME = 'Address';

  /**
   * @param Application $app
   * @param string      $name
   * @param array       $erlaubtevars
   *
   * @return array
   */
  public static function TableSearch($app, $name, $erlaubtevars)
  {
    $id = $app->Secure->GetGET('id');
    switch($name)
    {
      case 'lieferantartikel':
        $allowed['adresse'] = array('lieferantartikel');

        // START EXTRA checkboxen
        $app->Tpl->Add('JQUERYREADY', "$('#offen').on('click', function() { fnFilterColumn1( 0 ); } );");
        for ($r = 1;$r < 2;$r++) {
          $app->Tpl->Add('JAVASCRIPT', '
                  function fnFilterColumn' . $r . ' ( i )
                  {
                  if(oMoreData' . $r . $name . '==1)
                  oMoreData' . $r . $name . ' = 0;
                  else
                  oMoreData' . $r . $name . ' = 1;

                  $(\'#' . $name . '\').dataTable().fnFilter( 
                    \'\',
                    i, 
                    0,0
                    );
                  }
                  ');
        }

        // headings
        $heading = array('Nummer', 'Artikel', 'Verkauf', 'LA', 'AB', 'BE', 'Reserv.', 'Fehlende', 'Gesamt', 'aktueller Monate', 'letzter Monat', 'Status', 'Men&uuml;');
        $width = array('5%', '40%', '5%', '5%', '5%', '5%', '5%', '5%', '5%', '5%', '5%', '5%', '15%');

        $findcols = array('nummer', 'name_de', 'verkauf', 'CAST(`lager` as SIGNED)', 'CAST(`offen` as SIGNED)', 'CAST(`bestellung` as SIGNED)', 'CAST(`res` as SIGNED)', 'CAST(`fehlende` as SIGNED)', 'CAST(`gesamt` as SIGNED)', 'CAST(`monat` as SIGNED)', 'CAST(`monat_last` as SIGNED)', 'status', 'id');

        $searchsql = array('a.name_de', "IFNULL((SELECT e.bestellnummer FROM einkaufspreise e WHERE e.artikel=a.id AND e.adresse='$id' AND e.geloescht!=1 AND e.bestellnummer!='' LIMIT 1),'')", 'a.nummer');
        $menu = "<a href=\"index.php?module=artikel&action=edit&id=%value%\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a>" . "&nbsp;<a href=\"#\" onclick=DeleteDialog(\"index.php?module=artikel&action=delete&id=%value%\");><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "&nbsp;<a href=\"#\" onclick=CopyDialog(\"index.php?module=artikel&action=copy&id=%value%\");><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\"></a>";
        $aktuellermonat = $app->DB->Select("SELECT CONCAT(YEAR(NOW()),'-',MONTH(NOW()))");
        $letztermonat = $app->DB->Select("SELECT CONCAT(YEAR( DATE_SUB( NOW() , INTERVAL 1 MONTH )),'-',DATE_FORMAT( DATE_SUB( NOW() , INTERVAL 1 MONTH ) ,'%m'))");
        $alignright = array(4,5,6,7,8,9,10,11);
        // SQL statement
        $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.nummer as nummer, 

              CONCAT(if( (SELECT SUM(ap.menge) FROM auftrag_position ap LEFT JOIN auftrag auf ON auf.id=ap.auftrag WHERE ap.artikel=a.id AND auf.status='freigegeben') > IFNULL((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id),0) + IFNULL((SELECT SUM(bp.menge-bp.geliefert) FROM bestellung_position bp LEFT JOIN bestellung b ON b.id=bp.bestellung WHERE bp.artikel=a.id AND b.status='versendet'),0)

                    , CONCAT('<font color=red><b>',a.name_de,'</b></font>'),a.name_de),'<br>Best-Nr.:',IFNULL((SELECT e.bestellnummer FROM einkaufspreise e WHERE e.artikel=a.id AND e.adresse='$id' AND e.geloescht!=1 AND e.bestellnummer!='' ORDER by e.id DESC LIMIT 1),'-'),'<br>Letzter EK-Preis: ',IFNULL((SELECT ".$app->erp->FormatPreis("e.preis",2)." FROM einkaufspreise e WHERE e.artikel=a.id AND (e.gueltig_bis > NOW() OR e.gueltig_bis='0000-00-00') AND e.geloescht!=1 AND e.preis >= 0 ORDER by e.id DESC LIMIT 1),''),' ab Menge ',IFNULL((SELECT ".$app->erp->FormatMenge("e.ab_menge")." FROM einkaufspreise e WHERE e.artikel=a.id AND (e.gueltig_bis > NOW() OR e.gueltig_bis='0000-00-00') AND e.geloescht!=1 AND e.preis >= 0 ORDER by e.id DESC LIMIT 1),'')) as name, 


              ifnull((SELECT DATE_FORMAT(MAX(auftrag.datum), '%d.%m.%Y') FROM auftrag LEFT JOIN
                    auftrag_position ON auftrag.id=auftrag_position.auftrag WHERE auftrag_position.artikel=a.id
                    ),0) as verkauf,



              ifnull(if( (SELECT SUM(ap.menge) FROM auftrag_position ap LEFT JOIN auftrag auf ON auf.id=ap.auftrag WHERE ap.artikel=a.id AND auf.status='freigegeben') > IFNULL((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id),0) + IFNULL((SELECT SUM(bp.menge-bp.geliefert) FROM bestellung_position bp LEFT JOIN bestellung b ON b.id=bp.bestellung WHERE bp.artikel=a.id AND b.status='versendet'),0)
                    ,
                    CONCAT('<font color=red>',if((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id) > 0,(SELECT ".$app->erp->FormatMenge("SUM(l.menge)")." FROM lager_platz_inhalt l WHERE l.artikel=a.id),'-'),'</font>'),

                    if((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id) > 0,(SELECT ".$app->erp->FormatMenge("SUM(l.menge)")." FROM lager_platz_inhalt l WHERE l.artikel=a.id),'-')),0)
                as lager,

              ifnull((SELECT ".$app->erp->FormatMenge("SUM(ap.menge)")." FROM auftrag_position ap LEFT JOIN auftrag auf ON auf.id=ap.auftrag WHERE ap.artikel=a.id AND auf.status='freigegeben'),0) as offen,

              ifnull((SELECT ".$app->erp->FormatMenge("SUM(bp.menge-bp.geliefert)")." FROM bestellung_position bp LEFT JOIN bestellung b ON b.id=bp.bestellung WHERE bp.artikel=a.id AND b.status='versendet'),0) as bestellung,

              ifnull((if((SELECT SUM(l.menge) FROM lager_reserviert l WHERE l.artikel=a.id) > 0,(SELECT ".$app->erp->FormatMenge("SUM(l.menge)")." FROM lager_reserviert l WHERE l.artikel=a.id),'-')),0) as res,

              ifnull(IF((SELECT SUM(ap.menge) FROM auftrag_position ap LEFT JOIN auftrag auf ON auf.id=ap.auftrag WHERE ap.artikel=a.id AND auf.status='freigegeben') - ( IFNULL((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id),0) + IFNULL((SELECT SUM(bp.menge-bp.geliefert) FROM bestellung_position bp LEFT JOIN bestellung b ON b.id=bp.bestellung WHERE bp.artikel=a.id AND b.status='versendet'),0)) > 0,".$app->erp->FormatMenge("(SELECT SUM(ap.menge) FROM auftrag_position ap LEFT JOIN auftrag auf ON auf.id=ap.auftrag WHERE ap.artikel=a.id AND auf.status='freigegeben') - ( IFNULL((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id),0) + IFNULL((SELECT SUM(bp.menge-bp.geliefert) FROM bestellung_position bp LEFT JOIN bestellung b ON b.id=bp.bestellung WHERE bp.artikel=a.id AND b.status='versendet'),0))").",'-'),0) as fehlende,



              ifnull(if((SELECT SUM(ap.menge) FROM auftrag_position ap WHERE ap.artikel=a.id) > 0, (SELECT ".$app->erp->FormatMenge("SUM(ap.menge)")." FROM auftrag_position ap WHERE ap.artikel=a.id),'-'),0) as gesamt,
              ifnull((SELECT ".$app->erp->FormatMenge("SUM(ap.menge)")." FROM auftrag_position ap LEFT JOIN auftrag auf ON auf.id=ap.auftrag WHERE ap.artikel=a.id AND DATE_FORMAT(auf.datum,'%Y-%m')='$aktuellermonat'),0) as monat,
              ifnull((SELECT ".$app->erp->FormatMenge("SUM(ap.menge)")." FROM auftrag_position ap LEFT JOIN auftrag auf ON auf.id=ap.auftrag WHERE ap.artikel=a.id AND DATE_FORMAT(auf.datum,'%Y-%m')='$letztermonat'),0) as monat_last,

              ifnull(if( (SELECT SUM(ap.menge) FROM auftrag_position ap LEFT JOIN auftrag auf ON auf.id=ap.auftrag WHERE ap.artikel=a.id AND auf.status='freigegeben') > IFNULL((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id),0)+IFNULL((SELECT SUM(bp.menge-bp.geliefert) FROM bestellung_position bp LEFT JOIN bestellung b ON b.id=bp.bestellung WHERE bp.artikel=a.id AND b.status='versendet'),0), 'fehlt','ok'),'') as status, 
              a.id as menu
                FROM artikel a ";

        // START EXTRA more
        $more_data1 = $app->Secure->GetGET("more_data1");

        if ($more_data1 == 1) $subwhere[] = " (((SELECT MAX(auftrag.datum) FROM auftrag LEFT JOIN
              auftrag_position ON auftrag.id=auftrag_position.auftrag WHERE auftrag_position.artikel=a.id
                ) < DATE_SUB(NOW(),INTERVAL 6 MONTH)) AND (SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id) > 0 )";
        $csubwhere = isset($subwhere)?count($subwhere):0;
        $tmp = '';
        for ($j = 0;$j < $csubwhere;$j++) {
          $tmp.= " AND " . $subwhere[$j];
        }

        // fester filter
        $where = " (a.adresse='$id' OR a.id IN(SELECT artikel FROM einkaufspreise WHERE adresse='$id' AND (gueltig_bis>CURRENT_DATE() OR gueltig_bis='0000-00-00'))) AND a.geloescht!=1 $tmp";
        $count = "SELECT COUNT(a.id) FROM artikel a WHERE $where";

        break;
      case 'adressealleabos':
        $allowed['adresse'] = array('artikel');
        $heading = array('Bezeichnung', 'Nummer', 'Start am', 'Abgerechnet bis', 'Enddatum', 'Preis','Rabatt', 'Währung', 'Menge', 'Art', 'Dokument','Gruppe / Reihenfolge', 'Men&uuml;');
        $width = array('10%', '6%', '10%', '10%', '10%', '6%','3%', '4%', '2%', '5%', '5%','15%', '8%');

        $findcols = array('aa.bezeichnung', 'ar.nummer', "if(aa.startdatum!='0000-00-00',DATE_FORMAT(aa.startdatum,'%d.%m.%Y') ,if(aa.angelegtam='0000-00-00','-',DATE_FORMAT(aa.angelegtam,'%d.%m.%Y')))", "if(aa.abgerechnetbis='0000-00-00','-',aa.abgerechnetbis)", "if(aa.enddatum='0000-00-00','-',aa.enddatum)", 'aa.preis','aa.rabatt', 'aa.waehrung', 'aa.menge',
          "if(aa.wiederholend=1 OR aa.preisart='monat' OR aa.preisart='jahr' OR aa.preisart='monatx' OR aa.preisart='wochen',aa.preisart,
          if(aa.preisart = '30tage', 
          '30 Tage',
          if(aa.preisart = '360tage', '360 Tage', 'einmalig')
        )
          )",
          'aa.dokument',"CONCAT(IFNULL(ag.beschreibung,''),aa.sort)", 'id');
        $searchsql = array('aa.bezeichnung', 'ar.nummer', "if(aa.startdatum!='0000-00-00',DATE_FORMAT(aa.startdatum,'%d.%m.%Y') ,if(aa.angelegtam='0000-00-00','-',DATE_FORMAT(aa.angelegtam,'%d.%m.%Y')))", "if(aa.abgerechnetbis='0000-00-00','-',DATE_FORMAT(aa.abgerechnetbis,'%d.%m.%Y'))", "if(aa.enddatum='0000-00-00','-',DATE_FORMAT(aa.enddatum,'%d.%m.%Y'))", $app->erp->FormatPreis("aa.preis"),'aa.rabatt', 'aa.waehrung', $app->erp->FormatMenge("aa.menge"),
          "if(aa.wiederholend=1 OR aa.preisart='monat' OR aa.preisart='jahr' OR aa.preisart='monatx' OR aa.preisart='wochen',aa.preisart,
          if(aa.preisart = '30tage', 
          '30 Tage',
          if(aa.preisart = '360tage', '360 Tage', 'einmalig')
        )
          )",
          'ag.beschreibung', 'aa.dokument');

        $numbercols = array(5,8);
        $datecols = array(3,4);
        $alignright = array(6,7,8,9);
        $defaultorder = 12;
        $defaultorderdesc = 0;

        $nurAktive = $app->YUI->TableSearchFilter($name, 5, 'nur_aktive_abos', '0', 0, 'checkbox');
        $subwhere = '';
        if($nurAktive){
          $subwhere = " AND (aa.enddatum = '0000-00-00' OR aa.enddatum >= CURDATE())";
        }

        $id = $app->Secure->GetGET('id');

        $menu = "<table>";
        $menu .= "<tr>";
        $menu .= "<td nowrap>";
        $menu .= "<a onclick=\"AboartikelEdit(%value%,$id)\" href=\"#\" title=\"Artikel &auml;ndern\"><img border=\"0\" src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\"></a>&nbsp;";
        $menu .= "<a onclick=DeleteDialog(\"index.php?module=adresse&action=delartikel&sid=%value%&id=$id\"); href=\"#\" ><img border=\"0\" src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\"></a>&nbsp;";
        $menu .= "</td>";
        $menu .= "</tr>";
        $menu .= "</table>";

        $where = " aa.adresse='$id'".$subwhere;

        $sql = "SELECT SQL_CALC_FOUND_ROWS aa.id, aa.bezeichnung, ar.nummer, if(aa.startdatum!='0000-00-00',DATE_FORMAT(aa.startdatum,'%d.%m.%Y') ,if(aa.angelegtam='0000-00-00','-',DATE_FORMAT(aa.angelegtam,'%d.%m.%Y'))) as 'angelegtam', if(aa.abgerechnetbis='0000-00-00','-',DATE_FORMAT(aa.abgerechnetbis,'%d.%m.%Y')) as 'abgerechnetbis', 
      if(aa.enddatum='0000-00-00','-',DATE_FORMAT(aa.enddatum,'%d.%m.%Y')) as enddatum,
      ".$app->erp->FormatPreis("aa.preis")." as preis, aa.rabatt, aa.waehrung, ".$app->erp->FormatMenge("aa.menge")." as menge, 
      if(
        aa.wiederholend=1 OR aa.preisart='monat' OR aa.preisart='jahr' OR aa.preisart='monatx' OR aa.preisart='wochen',
        aa.preisart,
        if(aa.preisart = '30tage', 
          '30 Tage',
          if(aa.preisart = '360tage', '360 Tage', 'einmalig')
        )
      ),
      aa.dokument,CONCAT(IFNULL(ag.beschreibung,'-'), ' / ', if(ag.id > 0,' ',''),aa.sort, ''), aa.id as id
      FROM abrechnungsartikel aa LEFT JOIN artikel ar ON ar.id=aa.artikel LEFT JOIN user u ON u.id=aa.angelegtvon LEFT JOIN adresse au ON au.id=u.adresse
      LEFT JOIN abrechnungsartikel_gruppe ag ON aa.gruppe=ag.id";
        $count = "SELECT COUNT(aa.id) FROM abrechnungsartikel aa LEFT JOIN artikel ar ON ar.id = aa.artikel LEFT JOIN user u ON u.id = aa.angelegtvon LEFT JOIN adresse au ON au.id = u.adresse WHERE $where";

        break;
      case 'adressealleabossort':
        $allowed['adresse'] = array('artikel');
        $heading = array('Bezeichnung', 'Nummer', 'Preis','Gruppe', 'Reihenfolge', 'Men&uuml;');
        $width = array('10%', '10%', '10%', '10%', '10%', '8%');

        $findcols = array('aa.bezeichnung', 'ar.nummer', 'preis','ag.beschreibung','aa.sort', 'id');
        $searchsql = array('aa.bezeichnung', 'ar.nummer', 'preis','ag.beschreibung');

        $alignright = array(6);
        $defaultorder = 4;
        $defaultorderdesc = 0;

        $id = $app->Secure->GetGET('id');

        $menu = "<table>";
        $menu .= "<tr>";
        $menu .= "<td nowrap>";
        $menu .= "<a onclick=\"AboartikelMove(%value%,1)\" href=\"#\"><img border=\"0\" src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/up.png\"></a>";
        $menu .= "<a onclick=\"AboartikelMove(%value%,0)\" href=\"#\"><img border=\"0\" src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/down.png\"></a>";
        $menu .= "</td>";
        $menu .= "</tr>";
        $menu .= "</table>";

        $where = " aa.adresse='$id'";

        $orderby = "ORDER BY aa.gruppe ASC, aa.sort ASC";

        $sql = "SELECT SQL_CALC_FOUND_ROWS aa.id, 
        aa.bezeichnung, 
        ar.nummer,
      ".$app->erp->FormatPreis("aa.preis")." as preis, 
      IFNULL(ag.beschreibung,'-') as gruppe, 
      aa.sort, 
      aa.id as id
      FROM abrechnungsartikel aa LEFT JOIN artikel ar ON ar.id=aa.artikel LEFT JOIN user u ON u.id=aa.angelegtvon LEFT JOIN adresse au ON au.id=u.adresse
      LEFT JOIN abrechnungsartikel_gruppe ag ON aa.gruppe=ag.id";
        $count = "SELECT COUNT(aa.id) FROM abrechnungsartikel aa LEFT JOIN artikel ar ON ar.id = aa.artikel LEFT JOIN user u ON u.id = aa.angelegtvon LEFT JOIN adresse au ON au.id = u.adresse WHERE $where";

        break;
      case 'abrechnungsartikel_gruppe':
        $allowed['adresse'] = array('artikel');
        $heading = array('Bezeichnung','Reihenfolge','Ansprechpartner','Rechnung','Ziel-Projekt', 'Men&uuml;');
        $width = array('30%','5%', '30%','10%','15%', '8%');

        $findcols = array('ag.beschreibung','ag.sort', 'ag.ansprechpartner', "if(ag.extrarechnung=0,'Gemeinsame Rechnung', if(ag.extrarechnung=1,'Eigene Rechnung', if(ag.extrarechnung=2, 'Sammelrechnung', '-')))",'p.abkuerzung', 'ag.id');
        $searchsql = array('ag.beschreibung','ag.sort', 'ag.ansprechpartner', "if(ag.extrarechnung=0,'Gemeinsame Rechnung', if(ag.extrarechnung=1,'Eigene Rechnung', if(ag.extrarechnung=2, 'Sammelrechnung', '-')))",'p.abkuerzung');

        $defaultorder = 1;
        $defaultorderdesc = 0;

        $id = $app->Secure->GetGET('id');

        $menu = "<table class=\"nopadding\" cellpadding=\"0\" cellspacing=\"0\">";
        $menu .= "<tr>";
        $menu .= "<td>";
        $menu .= "<a onclick=\"AbogruppeEdit(%value%)\" href=\"#\" title=\"Artikel &auml;ndern\">";
        $menu .= "<img border=\"0\" src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\">";
        $menu .= "</a>";
        $menu .= "</td>";
        $menu .= "<td>";
        $menu .= "<a onclick=AbogruppeDelete(%value%); href=\"#\" >";
        $menu .= "<img border=\"0\" src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\">";
        $menu .= "</a>";
        $menu .= "</td>";
        $menu .= "</tr>";
        $menu .= "</table>";

        $where = " ag.adresse='$id' ";

        $sql = "SELECT SQL_CALC_FOUND_ROWS ag.id, ag.beschreibung,if(ag.sort<=0,'-',ag.sort),ag.ansprechpartner,if(ag.extrarechnung=0,'Gemeinsame Rechnung', if(ag.extrarechnung=1,'Eigene Rechnung', if(ag.extrarechnung=2, 'Sammelrechnung', '-'))), p.abkuerzung, ag.id FROM abrechnungsartikel_gruppe ag
          LEFT JOIN projekt p ON p.id=ag.projekt";

        $count = "SELECT COUNT(ag.id) FROM abrechnungsartikel_gruppe ag WHERE $where";


        break;
      case 'abosammelrechnungen':
        $allowed['adresse'] = array('artikel');
        $heading = array('Bezeichnung', 'abweichende Rechnungsadresse', 'Ziel-Projekt', 'Men&uuml;');
        $width = array('30%', '30%', '30%', '1%');

        $findcols = array('abs.bezeichnung', 'a.name', 'p.abkuerzung', 'abs.id');
        $searchsql = array('abs.bezeichnung', 'a.name', 'p.abkuerzung');

        $defaultorder = 1;
        $defaultorderdesc = 0;

        $id = $app->Secure->GetGET('id');

        $menu = "<table cellpadding=0 cellspacing=0>";
        $menu .= "<tr>";
        $menu .= "<td nowrap>";
        $menu .= '<a href="javascript:;" onclick="AboSammelrechnungEdit(%value%);">';
        $menu .= "<img border=\"0\" src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\">";
        $menu .= "</a>&nbsp;";
        $menu .= '<a href="javascript:;" onclick="AboSammelrechnungDelete(%value%);">';
        $menu .= "<img border=\"0\" src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\">";
        $menu .= "</a>";
        $menu .= "</td>";
        $menu .= "</tr>";
        $menu .= "</table>";

        $where = " abs.adresse='$id' ";

        $sql = "SELECT SQL_CALC_FOUND_ROWS abs.id, abs.bezeichnung, a.name, p.abkuerzung, abs.id FROM adresse_abosammelrechnungen abs LEFT JOIN adresse a ON abs.abweichende_rechnungsadresse = a.id LEFT JOIN projekt p ON abs.projekt = p.id";

        $count = "SELECT COUNT(abs.id) FROM adresse_abosammelrechnungen abs WHERE $where";
        break;

      case 'abrechnungsartikel':
        $allowed['adresse'] = array('artikel');
        $heading = array('Artikel', 'Nummer', 'Ab', 'Preis','Waehrung', 'Projekt', 'Startdatum', 'Menge', 'Aktion');
        $width = array('20%', '10%', '2%', '8%', '5%','1%', '10%', '10%', '10%');
        $findcols = array('a.name_de', 'a.nummer', 'ab', 'v.preis','v.waehrung','projekt', 'lieferdatum', 'menge', 'v.id');
        $searchsql = array('a.name_de', 'a.nummer');
        $id = $app->Secure->GetGET('id');
        $alignright=array(4,5);
        $menu = '<center><input type="button" value="anlegen" onclick="anlegen(' . $id . ',%value%)"></center>';
        $sql = "SELECT SQL_CALC_FOUND_ROWS a.id,CONCAT(a.name_de,' ',if(v.adresse='$id','(Kundensp. Preis)',''), if(v.gruppe > 0,CONCAT('(Gruppenpreis ',g.name,' ',g.kennziffer,')'),'')), CONCAT('<a href=\"index.php?module=artikel&action=verkauf&id=',a.id,'\" target=\"_blank\">',a.nummer,'</a>'), ".$app->erp->FormatMenge("v.ab_menge")." AS ab, ".$app->erp->FormatPreis("v.preis").",v.waehrung, p.abkuerzung as projekt,
              CONCAT('<center><input type=\"text\" size=\"10\" value=\"',DATE_FORMAT(NOW(),'%d.%m.%Y'),'\" id=\"datum',v.id,'\"></center>') AS lieferdatum,
              CONCAT('<center><input type=\"text\" size=\"3\" value=\"\" id=\"menge',v.id,'\"><select name=\"art',v.id,'\" id=\"art',v.id,'\"><option value=\"abo\">Abo</option><option value=\"einmalig\">Einmalig</option></select></center>') AS menge,
              v.id 
                FROM artikel AS a 
                LEFT JOIN verkaufspreise AS v ON v.artikel=a.id
                LEFT JOIN projekt AS p ON p.id=v.projekt LEFT JOIN gruppen g ON g.id=v.gruppe";
        $where = " v.ab_menge>0 AND a.geloescht!=1 AND (v.gueltig_bis ='0000-00-00' OR v.gueltig_bis >= DATE_FORMAT(NOW(),'%Y-%m-%d'))  AND (v.adresse='$id' or v.adresse<=0) ";
        $count = "SELECT COUNT(a.id) FROM artikel AS a 
              LEFT JOIN verkaufspreise AS v ON v.artikel=a.id
              LEFT JOIN projekt AS p ON p.id=v.projekt
              WHERE $where";
        break;
      case 'adresse_ansprechpartnergruppen':
      //$doctype = str_replace('belegeinauslagern_bewegungen_','',$name);
      $id = $app->Secure->GetGET('id');
      $lid = $app->YUI->TableSearchFilter($name, 1, 'filterlid');
      $allowed['adresse'] = array('ansprechpartner');
      $heading = array('','Gruppe','Kategorie','');
      $width = array('1%','49%','49','1%');
      $findcols = array('ag.aktiv','gr.name','gk.bezeichnung','gr.id');
      $searchsql = array('gr.name','gk.bezeichnung');
      $defaultorder = 2;
      $defaultorderdesc = 0;
      $disabled = "";
      //if(!$lid)$disabled = "disabled ";
      $sql= "SELECT SQL_CALC_FOUND_ROWS gr.id ,
      concat('<input type=\"checkbox\" $disabled onchange=\"grchange(',gr.id,',this,$lid);\" id=\"gr_',gr.id,'\"  name=\"gr_',gr.id,'\" ',(if(ifnull(ag.aktiv,0) <> 0,' checked ','')),' />') as auswahl,
      gr.name, gk.bezeichnung, gr.id
      FROM gruppen gr 
      LEFT JOIN ansprechpartner_gruppen ag ON gr.id = ag.gruppe and ag.ansprechpartner = '$lid'  
      LEFT JOIN gruppen_kategorien gk ON gr.kategorie = gk.id
      ";
      $where = " gr.art != 'preisgruppe' ";
      $maxrows = 50;
      $disablebuttons = true;
      break;

      case 'adresse_ustprf':
        $allowed['adresse'] = array('ustprf');

        $heading = array('Datum', 'Firma', 'Stra&szlig;e', 'PLZ', 'Ort', 'Land', 'Brief', 'Status', 'Men&uuml;');
        $width = array('8%', '25%', '25%', '5%', '10%', '5%', '3%', '5%', '1%');

        $findcols = array('u.datum', 'u.name', 'u.strasse', 'u.plz', 'u.ort', 'u.land', "if(u.briefbestellt != '0000-00-00', 'ja', '-')", "IF(u.status = 'gueltigmarkieren', 'gültig markiert', status)", 'u.id');
        $searchsql = array("DATE_FORMAT(u.datum, '%d.%m.%Y')", 'u.name', 'u.strasse', 'u.plz', 'u.ort', 'u.land', 'u.briefbestellt', "IF(u.status = 'gueltigmarkieren', 'gültig markiert', status)");

        $defaultorder = 1;
        $defaultorderdesc = 0;

        $menu = '<table cellpadding=0 cellspacing=0>';
          $menu .= '<tr>';
            $menu .= '<td nowrap>';
              $menu .= '<a href="javascript:;" onclick="UstprfEdit(%value%);">';
                $menu .= "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">";
              $menu .= '</a>&nbsp;';
              $menu .= '<a href="javascript:;" onclick="UstprfDelete(%value%);">';
                $menu .= "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">";
              $menu .= '</a>';
            $menu .= '</td>';
          $menu .= '</tr>';
        $menu .= '</table>';

        $adressid = $app->Secure->GetGET('id');

        $where = " u.id > 0 AND u.adresse = '$adressid'";

        $sql = "SELECT SQL_CALC_FOUND_ROWS u.id, DATE_FORMAT(u.datum, '%d.%m.%Y'), u.name, u.strasse, u.plz, u.ort, u.land, if(u.briefbestellt != '0000-00-00', 'ja', '-'), IF(u.status = 'gueltigmarkieren', 'gültig markiert', IF(u.status = 'online', 'erfolgreich geprüft', u.status)), u.id FROM ustprf u";

        $count = "SELECT COUNT(u.id) FROM ustprf u WHERE $where";
        break;

      case 'adresse_ustprf_protokoll':
        $allowed['adresse'] = array('ustprf');

        $heading = array('Datum / Zeit', 'Bemerkung', 'Bearbeiter', '');
        $width = array('18%', '56%', '25%', '1%');

        $findcols = array('u.zeit', 'u.bemerkung', 'u.bearbeiter', 'u.id');
        $searchsql = array("DATE_FORMAT(u.zeit, '%d.%m.%Y %H:%i:%s')", 'u.bemerkung', 'u.bearbeiter');

        $defaultorder = 1;
        $defaultorderdesc = 1;

        //$ustprfid = 0;
        $ustprfid = $app->Secure->GetGET('more_data1');

        $where = " u.ustprf_id = '$ustprfid'";

        $sql = "SELECT SQL_CALC_FOUND_ROWS u.id, DATE_FORMAT(u.zeit, '%d.%m.%Y %H:%i:%s'), IF(u.daten != '', CONCAT(u.bemerkung, '<br /><i style=color:#999>', u.daten,'</i>'), u.bemerkung), u.bearbeiter, u.id FROM ustprf_protokoll u";

        $count = "SELECT COUNT(u.id) FROM ustprf_protokoll u WHERE $where";
    }

    $erg = [];
    foreach($erlaubtevars as $k => $v) {
      if(isset($$v)){
        $erg[$v] = $$v;
      }
    }
    return $erg;
  }

  /**
   * Adresse 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","AdresseCreate");
    $this->app->ActionHandler("edit","AdresseEdit");
    $this->app->ActionHandler("getid","AdresseGetid");
    $this->app->ActionHandler("open","AdresseOpen");
    $this->app->ActionHandler("list","AdresseList");
    $this->app->ActionHandler("suche","AdresseSuche");
    $this->app->ActionHandler("delete","AdresseDelete");
    $this->app->ActionHandler("ustprf","AdresseUstprf");
    $this->app->ActionHandler("lieferantvorlage","AdresseLieferantvorlage");
    $this->app->ActionHandler("kundevorlage","AdresseKundevorlage");
    $this->app->ActionHandler("zeiterfassung","AdresseZeiterfassung");
    $this->app->ActionHandler("abrechnungzeit","AdresseAbrechnungzeit");
    $this->app->ActionHandler("abrechnungzeitabgeschlossen","AdresseAbrechnungzeitabgeschlossen");
    $this->app->ActionHandler("abrechnungzeitdelete","AdresseAbrechnungzeitdelete");
    $this->app->ActionHandler("pdf","AdresseStammblatt");

    $this->app->ActionHandler("lieferadresse","AdresseLieferadresse");
    $this->app->ActionHandler("lieferadresseneditpopup","AdresseLieferadressenEditPopup");
    $this->app->ActionHandler("ansprechpartner","AdresseAnsprechpartner");
    $this->app->ActionHandler("ansprechpartnereditpopup","AdresseAnsprechpartnerEditPopup");
    $this->app->ActionHandler("ansprechpartnerpopup","AdresseAnsprechpartnerPopup");

    $this->app->ActionHandler("accounts","AdresseAccounts");


    $this->app->ActionHandler("adressestammdatenpopup","AdresseStammdatenLieferadressePopup");
    $this->app->ActionHandler("ansprechpartnerlieferadressepopup","AdresseAnsprechpartnerLieferadressePopup");
    $this->app->ActionHandler("lieferadressepopup","AdresseLieferadressePopup");
    $this->app->ActionHandler("ustpopup","AdresseUSTPopup");
    $this->app->ActionHandler("rollen","AdresseRollen");
    $this->app->ActionHandler("gruppen","AdresseGruppen");
    $this->app->ActionHandler("kontakthistorie","AdresseKontakthistorie");
    $this->app->ActionHandler("kontakthistorieeditpopup","AdresseKontakthistorieEditPopup");
    $this->app->ActionHandler("rolecreate","AdresseRolleAnlegen");
    $this->app->ActionHandler("rolledatum","AdresseRolleDatum");
    $this->app->ActionHandler("roledel","AdresseRolleLoeschen");
    $this->app->ActionHandler("addposition","AdresseAddPosition");
    $this->app->ActionHandler("suchmaske","AdresseSuchmaske");
    $this->app->ActionHandler("dateien","AdresseDateien");
    $this->app->ActionHandler("brief","AdresseBrief");
    $this->app->ActionHandler("briefdelete","AdresseBriefDelete");
    $this->app->ActionHandler("briefpdf","AdresseBriefPDF");
    $this->app->ActionHandler("briefeditpopup","AdresseBriefEditPopup");

    $this->app->ActionHandler("saverolle", "AdresserolleSave");

    $this->app->ActionHandler("brieferstellen","AdresseBriefErstellen");
    $this->app->ActionHandler("briefpreview","AdresseBriefPreview");
    $this->app->ActionHandler("briefbearbeiten","AdresseBriefBearbeiten");
    $this->app->ActionHandler("briefkorrpdf", "AdresseKorrBriefPdf");
    $this->app->ActionHandler("briefkorrdelete", "AdresseKorrBriefDelete");
    $this->app->ActionHandler("briefdrucken", "AdresseBriefDrucken");


    $this->app->ActionHandler("email","AdresseEmail");
    $this->app->ActionHandler("belege","AdresseBelege");
    $this->app->ActionHandler("positioneneditpopup","AdresseArtikelEditPopup");
    $this->app->ActionHandler("emaileditpopup","AdresseEmailEditPopup");
    $this->app->ActionHandler("artikel","AdresseArtikelPosition");
    $this->app->ActionHandler("lieferantartikel","AdresseLieferantArtikel");
    $this->app->ActionHandler("kundeartikel","AdresseKundeArtikel");
    $this->app->ActionHandler("delartikel","DelArtikel");
    $this->app->ActionHandler("upartikel","UpArtikel");
    $this->app->ActionHandler("downartikel","DownArtikel");

    $this->app->ActionHandler("rolledelete","AdresseRolleDelete");
    $this->app->ActionHandler("artikeleditpopup","AdresseArtikelEditPopup");
    $this->app->ActionHandler("kontakthistorie","AdresseKontaktHistorie");
    $this->app->ActionHandler("offenebestellungen","AdresseOffeneBestellungen");
    $this->app->ActionHandler("verbindlichkeiten","AdresseVerbindlichkeiten");
    $this->app->ActionHandler("adressebestellungmarkieren","AdresseBestellungMarkiert");
    $this->app->ActionHandler("autocomplete","AdresseAutoComplete");

    $this->app->ActionHandler("lohn","AdresseLohnStundensatzUebersicht");
    $this->app->ActionHandler("stundensatz","AdresseStundensatz");
    $this->app->ActionHandler("stundensatzedit","AdresseStundensatzEdit");
    $this->app->ActionHandler("stundensatzdelete","AdresseStundensatzDelete");
    $this->app->ActionHandler("createdokument","AdresseCreateDokument");
    $this->app->ActionHandler("newkontakt","AdresseNewKontakt");
    $this->app->ActionHandler("delkontakt","AdresseDelKontakt");
    $this->app->ActionHandler("minidetail","AdresseMiniDetailZeit");
    $this->app->ActionHandler("minidetailadr","AdresseMiniDetailAdr");
    $this->app->ActionHandler("minidetailbrief","AdresseMiniDetailBrief");
    $this->app->ActionHandler("korreseditpopup","AdresseKorressEditPopup");
    $this->app->ActionHandler("sepamandat","AdresseSEPAMandat");

    $this->app->ActionHandler("verein","AdresseVerein");
    
    $this->app->ActionHandler("removeemailanhang","Adresseremoveemailanhang");
    $this->app->ActionHandler("downloaddatei", "AdresseDownloadDatei");

    
    $this->app->ActionHandler("minidetaillieferadressen","AdresseMinidetailLieferadressen");
    $this->app->ActionHandler("minidetailansprechpartner","AdresseMinidetailAnsprechpartner");   
    
    $id = $this->app->Secure->GetGET('id');
    //$nummer = $this->app->Secure->GetPOST("nummer");

    //if($nummer=="")
    //$name = $this->app->DB->Select("SELECT CONCAT(name,'&nbsp;&nbsp;',
    if($id > 0){
      $nummer = $this->app->DB->Select("SELECT CONCAT(
        if(kundennummer!='',CONCAT('Kunde: ',kundennummer),''),
          if(lieferantennummer!='',CONCAT(' Lieferant: ',lieferantennummer),'')) FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
    }else{
      $nummer = '';
    }


    if(is_numeric($id)){
      $name = $this->app->DB->Select("SELECT name FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
    }

    // else
    //   $name = $nummer;

    if(!empty($name)){
      $this->app->Tpl->SetText('UEBERSCHRIFT', 'Adresse von: ' . $name);
    }
    else{
      $this->app->Tpl->SetText('UEBERSCHRIFT', 'Adressen');
    }

    $this->app->Tpl->SetText('KURZUEBERSCHRIFT','Adressen');
    if(isset($name) && isset($nummer) && $name!='' && $nummer!=''){
      $this->app->Tpl->SetText('KURZUEBERSCHRIFT2', "$name ($nummer)");
    }
    else{
      $this->app->Tpl->SetText('KURZUEBERSCHRIFT2', !empty($name) ? $name : '');
    }

    if(isset($name)){
      $this->app->Tpl->SetText('ANZEIGENUMMER',$name);
    }
    if(isset($nummer)){
      $this->app->Tpl->SetText('ANZEIGENAMEDE',' '.$nummer);
    }

    $this->app->Tpl->Set('FARBE','[FARBE1]');

    $this->app->erp->CheckColumn('email', 'varchar(255)', 'adresse_accounts', 'NOT NULL');
    $this->app->erp->CheckColumn('notiz', 'text', 'adresse_accounts', 'NOT NULL');

    $this->app->erp->Headlines('Adressen');

    $this->app->ActionHandlerListen($app);
  }

  public function Install()
  {
    $this->app->erp->RegisterHook('supersearch_detail', 'adresse', 'AdresseSupersearchDetail');
  }

  /**
   * @param \Xentral\Widgets\SuperSearch\Query\DetailQuery   $detailQuery
   * @param \Xentral\Widgets\SuperSearch\Result\ResultDetail $detailResult
   *
   * @return void
   */
  public function AdresseSupersearchDetail($detailQuery, $detailResult)
  {
    if ($detailQuery->getGroupKey() !== 'addresses') {
      return;
    }

    $adresseId = $detailQuery->getItemIdentifier();
    $sql = sprintf(
      "SELECT a.id, a.name, a.ansprechpartner, a.kundennummer, a.lieferantennummer FROM `adresse` AS `a` WHERE a.id = '%s' LIMIT 1",
      $this->app->DB->real_escape_string($adresseId)
    );
    $adresse = $this->app->DB->SelectRow($sql);
    if (empty($adresse)) {
      return;
    }

    $title = $adresse['name'];
    if (!empty($adresse['ansprechpartner'])) {
      $title .= ' ' . $adresse['ansprechpartner'];
    }
    if (!empty($adresse['kundennummer'])) {
      $title .= ' <small>Kunde ' . $adresse['kundennummer'] . '</small>';
    }
    if (!empty($adresse['lieferantennummer'])) {
      $title .= ' <small>Lieferant ' . $adresse['lieferantennummer'] . '</small>';
    }
    $detailResult->setTitle($title);
    $detailResult->addButton('Adresse Details', sprintf('index.php?module=adresse&action=edit&id=%s', $adresse['id']));
    $detailResult->setMiniDetailUrl(sprintf('index.php?module=adresse&action=minidetailadr&id=%s', $adresse['id']));
  }

  
  
  public function AdresseDownloadDatei()
  {
    $id = (int)$this->app->Secure->GetGET('id');
    if($this->app->DB->Select("SELECT id FROM datei_stichwoerter where datei = '$id' AND subjekt like 'anhang' and objekt like 'dokument' LIMIT 1"))
    {
      $this->app->erp->SendDatei($id);
    } else {
      header("Content-Disposition: attachment; filename=\"Fehler.txt\"");
    }
    $this->app->ExitXentral();
  }
  
  public function Adresseremoveemailanhang()
  {
    $res['status'] = false;
    $datei = (int)$this->app->Secure->GetGET('id');
    if($datei)
    {
      $checkstichwort = $this->app->DB->Select("SELECT datei FROM datei_stichwoerter WHERE datei = '$datei' AND subjekt like 'anhang' and objekt like 'dokument' LIMIT 1");
      if($checkstichwort)
      {
        $this->app->DB->Delete("DELETE FROM datei_version WHERE datei='$datei'");
        $this->app->DB->Delete("DELETE FROM datei_stichwoerter WHERE datei='$datei'");
        $this->app->DB->Update("UPDATE datei SET geloescht=1 WHERE id='$datei'");
        $res['status'] = true;      
      }
    }
    echo json_encode($res);
    $this->app->ExitXentral();
  }

  public function AdresseMiniDetailBrief($parsetarget = '', $menu = true)
  {
    $doppelteids = $this->app->Secure->GetGET('id');
    $ids = preg_split('/\-/',$doppelteids);
    if((!empty($ids)?count($ids):0) > 1)
    {
      $typ = (int)$ids[0];
      $id = (int)$ids[1];
      switch($typ)
      {
        case '1':
        
        $this->AdresseBriefPreview('dokumente',$id,false);
        break;
        case '2':
          $this->AdresseBriefPreview('dokumente_send',$id,false);
        break;
        case '4':
          $this->AdresseBriefPreview('ticket_nachricht',$id,false);
        break;
        
        case '5':
        
        $this->AdresseBriefPreview('wiedervorlage',$id,false);
        break;
        case '6':
        $this->AdresseBriefPreview('kalender',$id,false);
        break;

      }
      
    }
    $this->app->ExitXentral();
  }
  
  public function AdresseKorressEditPopup()
  {
    // nach page inhalt des dialogs ausgeben
    if (class_exists('WidgetDokumente')){
      $widget = new WidgetDokumente($this->app,'PAGE');
      //$sid = $this->app->DB->Select("SELECT adresse FROM abrechnungsartikel WHERE id='$id' LIMIT 1");
      //$widget->form->SpecialActionAfterExecute("close_refresh",
      //    "index.php?module=adresse&action=artikel&id=$sid");
      $widget->Edit();
      $this->app->BuildNavigation=false;
    }
  }
  
  public function AdresseMiniDetailAdr($parsetarget = '', $menu = true)
  {
    $id = (int)$this->app->Secure->GetGET('id');
    $adr = $this->app->DB->SelectRow("SELECT adr.*, DATE_FORMAT(adr.mandatsreferenzdatum, '%e.%m.%Y') AS mandatsreferenzdatumd FROM adresse AS adr WHERE adr.id = ".$id." limit 1");
    if(!empty($adr))
    {
      $this->app->Tpl->Set('EMAIL',$adr['email']);
      $this->app->Tpl->Set('MOBIL',$adr['mobil']);
      $this->app->Tpl->Set('MARKETINGSPERRE',($adr['marketingsperre']==1?"JA":"NEIN"));
      $this->app->Tpl->Set('TELEFAX',$adr['telefax']);
      $this->app->Tpl->Set('TELEFON',$adr['telefon']);
      $this->app->Tpl->Set('ORT',$adr['ort']);
      $this->app->Tpl->Set('LAND',$adr['land']);
      $this->app->Tpl->Set('PLZ',$adr['plz']);
      $this->app->Tpl->Set('STRASSE',$adr['strasse']);
      $this->app->Tpl->Set('ANSPRECHPARTNERNAME',$adr['ansprechpartner']);

      $this->app->Tpl->Set('ZAHLUNGSWEISE',$adr['zahlungsweise']);
      $this->app->Tpl->Set('ZAHLUNGSZIELTAGE',$adr['zahlungszieltage']);
      $this->app->Tpl->Set('ZAHLUNGSZIELTAGESKONTO',$adr['zahlungszieltage']);
      $this->app->Tpl->Set('ZAHLUNGSZIELTAGESKONTO',$adr['zahlungszieltageskonto']);
      $this->app->Tpl->Set('ZAHLUNGSZIELSKONTO',$adr['zahlungszielskonto']);
      $this->app->Tpl->Set('KUNDENNUMMERLIEFERANT',$adr['kundennummerlieferant']);
      $this->app->Tpl->Set('ZAHLUNGSWEISELIEFERANT',$adr['zahlungsweiselieferant']);
      $this->app->Tpl->Set('ZAHLUNGSZIELTAGELIEFERANT',$adr['zahlungszieltagelieferant']);
      $this->app->Tpl->Set('ZAHLUNGSZIELTAGESKONTOLIEFERANT',$adr['zahlungszieltagelieferant']);
      $this->app->Tpl->Set('ZAHLUNGSZIELTAGESKONTOLIEFERANT',$adr['zahlungszieltageskontolieferant']);
      $this->app->Tpl->Set('ZAHLUNGSZIELSKONTOLIEFERANT',$adr['zahlungszielskontolieferant']);
      $this->app->Tpl->Set('VERSANDARTLIEFERANT', $adr['versandartlieferant']);
      
      
      $this->app->Tpl->Set('INHABER',$adr['inhaber']);
      $this->app->Tpl->Set('BANK',$adr['bank']);
      $this->app->Tpl->Set('SWIFT',$adr['swift']);
      $this->app->Tpl->Set('IBAN',$adr['iban']);
      $this->app->Tpl->Set('MANDATREFERENZ',$adr['mandatsreferenz']);
      $this->app->Tpl->Set('ZAHLUNGSZIELSKONTOLIEFERANT',$adr['zahlungszielskontolieferant']);
      $this->app->Tpl->Set('MANDATREFERENZART',$adr['mandatsreferenzart']);
      $this->app->Tpl->Set('MANDATSREFERENZDHART',$adr['mandatsreferenzdhart']);
      $this->app->Tpl->Set('MANDATSREFERENZDATUM',$adr['mandatsreferenzdatumd']);
      $this->app->Tpl->Set('MANDATSREFERENZAENDERUNG',($adr['mandatsreferenzaenderung']?'ja':'nein'));
      $this->app->Tpl->Set('WAEHRUNG',$adr['waehrung']);
      
      $table = new EasyTable($this->app);
      $table->Query("SELECT a.name, a.bereich, a.email, a.telefon, a.telefax, a.mobil FROM ansprechpartner a WHERE adresse='$id'  AND a.name!='Neuer Datensatz' ORDER by id DESC",0,"");
      $table->DisplayNew('ANSPRECHPARTNER','Mobil','noAction');

      $table = new EasyTable($this->app);
      $table->Query("SELECT a.subjekt as Rolle,
        if(a.objekt='','ALLE',a.objekt) as Zuordnung,
        if(a.objekt='Projekt',if(a.parameter='','ALLE',p.abkuerzung),CONCAT(g.name,' ',g.kennziffer)) as auswahl,
        DATE_FORMAT(a.von,'%d.%m.%Y') as seit, if(a.bis='0000-00-00','aktuell',DATE_FORMAT(a.bis,'%d.%m.%Y')) as bis
        FROM adresse_rolle a  LEFT JOIN projekt p ON a.parameter=p.id
        LEFT JOIN gruppen g ON g.id=a.parameter
        WHERE a.adresse='$id'",0,"");
      $table->DisplayNew('ROLLEN','Bis','noAction');


      $table2 = new EasyTable($this->app);
      $table2->Query("SELECT  if(l.standardlieferadresse,CONCAT('<strong>',l.name,' (Standardlieferadresse)</strong>'),l.name) as name2, l.strasse, 
                                             l.land, l.plz, l.ort, l.telefon,l.email FROM lieferadressen l where  l.adresse='". $id . "' AND l.name!='Neuer Datensatz'",0,"");
      $table2->DisplayNew('LIEFERANTEN','Email','noAction');

      $table3 = new EasyTable($this->app);
      $table3->Query($this->GetAddressCrmSql($id, 15),0,"");
      $table3->DisplayNew('CRMDATEIEN','PDF','noAction');
    }
    if($parsetarget=='')
    {
      $this->app->Tpl->Output('adresse_minidetail.tpl');
      $this->app->ExitXentral();
    }
    $this->app->Tpl->Parse($parsetarget,'adresse_minidetail.tpl');
  }
  

  public function AdresseStammblatt()
  {
    $id = $this->app->Secure->GetGET('id');
    $projekt = '';
    if(class_exists('AdressstammblattPDFCustom'))
    {
      $Brief = new AdressstammblattPDFCustom($this->app,$projekt);
    }else{
      $Brief = new AdressstammblattPDF($this->app,$projekt);
    }

    $Brief->GetAdressstammblatt($id);
    $Brief->displayDocument();
    $this->app->ExitXentral();
  }



  function AdresseMiniDetailZeit() {

    $id = $this->app->Secure->GetGET('id');


    if(strpos($_SERVER['HTTP_REFERER'],'action=brief')!==false) {

      $data = explode('||', $id);
      /*
         echo '<pre>';
         print_r($data);
         echo '</pre>';
       */

      if (isset($data[1])) {

        $query = '';

        switch ($data[1]) {
          case 'dokumente':
            $query .= '
              SELECT
              von as personVon,
                  content as content,
                  DATE_FORMAT(datum, "%d.%m.%Y") as datum
                    FROM
                    dokumente
                    WHERE
                    id = ' . $data[0] . '
                    ';
            break;
          case 'dokumente_send':
            $query .= '
              SELECT
              bearbeiter as personVon,
                         text as content,
                         DATE_FORMAT(zeit, "%d.%m.%Y") as datum
                           FROM
                           dokumente_send
                           WHERE
                           id = ' . $data[0] . '
                           ';
            break;
          case 'ticket_nachricht':
            $query .= '
              SELECT
              verfasser as personVon,
                        text as content,
                        DATE_FORMAT(zeit, "%d.%m.%Y") as datum
                          FROM
                          ticket_nachricht
                          WHERE
                          id = ' . $data[0] . '
                          ';
            break;
          case 'emailbackup_mails':
            $query .= '
              SELECT
              sender as personVon,
                     if(action_html!="",action_html,action) as content,
                     DATE_FORMAT(empfang, "%d.%m.%Y") as datum
                       FROM
                       emailbackup_mails
                       WHERE
                       id = ' . $data[0] . '
                       ';
            break;
          default:
            $this->app->ExitXentral();
            break; 
        }

        $res = $this->app->DB->SelectRow($query);

        if ($res) {

          echo '<table cellpadding="0" cellspacing="0" width="100%" border=1>';

          echo '<tr>';
          echo '<td width="150">Datum:</td>';
          echo '<td>' . $res['datum'] . '</td>';
          echo '</tr>';

          echo '<tr>';
          echo '<td width="150">Von:</td>';
          echo '<td>' . $res['personVon'] . '</td>';
          echo '</tr>';

          echo '<tr>';
          echo '<td>Text:</td>';
          echo '<td>' . nl2br($res['content']) . '</td>';
          echo '</tr>';

          echo '</table>';

        }

        /*
           echo '<pre>';
           print_r($query);
           print_r($res);
           echo '</pre>';
         */


      }


      //echo $id;

    } else {


      $tmp = $this->app->DB->SelectArr("SELECT * FROM zeiterfassung WHERE id='$id'");
      $tmp = $tmp[0];
      $teilprojekt = $this->app->DB->Select("SELECT aufgabe FROM arbeitspaket WHERE id='".$tmp[arbeitspaket]."'");

      echo '<table width="710">';
      echo '<tr><td width="200"><b>Ort:</b></td><td>'.$tmp['ort'].'</td></tr>';
      echo '<tr><td><b>Tätigkeit:</b></td><td>'.$tmp['aufgabe'].'</td></tr>';
      echo '<tr valign="top"><td><b>Beschreibung:</b></td><td>'.nl2br($tmp['beschreibung']).'</td></tr>';
      echo '<tr><td><b>Teilprojekt:</b></td><td>'.$teilprojekt.'</td></tr>';
      echo '<tr><td><b>Kostenstelle:</b></td><td>'.$tmp['kostenstelle'].'</td></tr>';
      echo '<tr><td><b>Verrechnungsart:</b></td><td>'.$tmp['verrechnungsart'].'</td></tr>';
      echo '</table>';

    }

    $this->app->ExitXentral();
  }

  function AdresseAbrechnungzeitabgeschlossen()
  {
    $sid = $this->app->Secure->GetPOST('sid');
    $id = $this->app->Secure->GetGET('id');
    if($sid > 0){
      $this->app->DB->Update("UPDATE zeiterfassung SET ist_abgerechnet='1', abgerechnet='1' WHERE id='$sid' AND adresse_abrechnung='$id' LIMIT 1");
    }
    $this->AdresseAbrechnungzeit();
  }


  function AdresseAbrechnungzeitdelete()
  {
    $sid = $this->app->Secure->GetGET('sid');
    $id = $this->app->Secure->GetGET('id');
    if($sid > 0){
      $this->app->DB->Delete("DELETE FROM zeiterfassung WHERE id='$sid' AND adresse_abrechnung='$id' LIMIT 1");
    }
    $this->AdresseAbrechnungzeit();
  }



  function AdresseZeiterfassung()
  {
    $this->AdresseMenu();
    $this->app->Tpl->Add('OFFENE','<form action="" method="post">');
    $this->app->YUI->TableSearch('OFFENE','zeiterfassungmitarbeiter');

    $id = $this->app->Secure->GetGET('id');

    $back=$this->app->erp->base64_url_encode("index.php?module=adresse&action=abrechnungzeit&id=$id");

    $this->app->Tpl->Set('BACK',$back);
    $this->app->Tpl->Set('ID',$id);
  
    $this->app->Tpl->Parse('PAGE','adresse_zeiterfassung.tpl');
  }



  function AdresseAbrechnungzeit()
  {
    $this->AdresseMenu();
    $this->app->Tpl->Set('VERS','Professional');
    $this->app->Tpl->Set('MODUL','Professional');
    $this->app->Tpl->Parse('PAGE', 'only_version.tpl');
  }


  function AdresseCreateDokument()
  {
    $id = $this->app->Secure->GetGET('id');
    $cmd = $this->app->Secure->GetGET('cmd');

    $relocation = true;

    switch($cmd)
    {	
      case 'auftrag': $newid = $this->app->erp->CreateAuftrag($id); $this->app->erp->LoadAuftragStandardwerte($newid,$id); break;
      case 'angebot': $newid = $this->app->erp->CreateAngebot($id); $this->app->erp->LoadAngebotStandardwerte($newid,$id); break;
      case 'rechnung': $newid = $this->app->erp->CreateRechnung($id); $this->app->erp->LoadRechnungStandardwerte($newid,$id); break;
      case 'lieferschein': $newid = $this->app->erp->CreateLieferschein($id); $this->app->erp->LoadLieferscheinStandardwerte($newid,$id); break;
      case 'gutschrift': $newid = $this->app->erp->CreateGutschrift($id); $this->app->erp->LoadGutschriftStandardwerte($newid,$id); break;
      case 'bestellung': $newid = $this->app->erp->CreateBestellung($id); $this->app->erp->LoadBestellungStandardwerte($newid,$id);break;
      default: $relocation = false;
    }

    if($relocation)
    {
      $this->app->Location->execute("index.php?module=$cmd&action=edit&id=$newid");
    }

  }

  function AdresseLohnStundensatzUebersicht()
  {
    $this->AdresseMenu();	

    if(method_exists($this->app->erp,'GetTmpMessageOut'))
    {
      $this->app->Tpl->Set('MESSAGE',$this->app->erp->GetTmpMessageOut());
    }else{
      $msg = $this->app->erp->base64_url_decode($this->app->Secure->GetGET("msg"));
      if($msg!='') {
        $this->app->Tpl->Set('MESSAGE', $msg);
      }
    }
    $this->AdresseLohn();
    $this->AdresseStundensatz();

    $this->app->Tpl->Parse('PAGE','adresse_lohn.tpl');
  }

  function AdresseLohn()
  {
    $id = $this->app->Secure->GetGET('id');
    if(is_numeric($id))
    {
      $this->app->YUI->TableSearch('TAB1','adresselohn');
    }else{
      $this->app->Tpl->Set('MESSAGE', '<div class="error">Mitarbeiter-ID konnte nicht gefunden werden.</div>');
    }

  }

  function AdresseStundensatz($id)
  {
    $id = $this->app->Secure->GetGET('id');

    if(is_numeric($id))
    {
      $stundensatz = $this->app->Secure->GetPOST('Stundensatz_StandardStundensatz');
      $submit = $this->app->Secure->GetPOST('Stundensatz_Submit');

      // Speichere neuen Stundensatz
      if($submit!='')
      {
        $this->app->DB->Insert("INSERT INTO stundensatz (adresse, satz, typ, projekt, datum) VALUES ('$id', '$stundensatz', 'Standard', '0', NOW())");
        $this->app->Tpl->Set('MESSAGE', '<div class="success">Der neue Standard-Stundensatz wurde &uuml;bernommen.</div>');
      }

      // Hole neuesten Stundensatz
      $standard = $this->app->DB->Select("SELECT satz 
          FROM stundensatz 
          WHERE typ='standard'
          AND adresse='$id'
          ORDER BY datum DESC LIMIT 1");
      $this->app->Tpl->Set('STANDARDSTUNDENSATZ', $standard);

      // Fülle Projekt-Tabelle
      $this->app->YUI->TableSearch('TAB2',"adressestundensatz");
    }else
      $this->app->Tpl->Set('MESSAGE', "<div class=\"error\">Mitarbeiter-ID konnte nicht gefunden werden.</div>");
  }

  function AdresseStundensatzEdit()
  {
    $this->AdresseMenu();

    $user = $this->app->Secure->GetGET('user');
    $id = $this->app->Secure->GetGET('id');
    $projekt = $this->app->Secure->GetGET('projekt');

    $satz = $this->app->Secure->GetPOST('Stundensatz_Angepasst');
    $adapt = $this->app->Secure->GetPOST('Stundensatz_Adapt');
    $cancel = $this->app->Secure->GetPOST('Stundensatz_Angepasst_Cancel');
    $submit = $this->app->Secure->GetPOST('Stundensatz_Angepasst_Submit');


    if($cancel!='')
    {
      $this->app->Location->execute("index.php?module=adresse&action=lohn&id=$user");
    }


    // Hole neuesten Standard-Stundensatz
    $standard = $this->app->DB->Select("SELECT satz 
        FROM stundensatz 
        WHERE typ='standard'
        AND adresse='$user'
        ORDER BY datum DESC LIMIT 1");

    if(is_numeric($id))
    {
      // Stundensatz existiert bereits, hole Daten
      $stundensatz = $this->app->DB->SelectArr("SELECT * FROM stundensatz WHERE id='$id' LIMIT 1");
      $this->app->Tpl->Set('STUNDENSATZANGEPASST', $stundensatz[0][satz]);

      if($submit!='')
      {
        $projekt = $this->app->DB->Select("SELECT projekt FROM stundensatz WHERE id='$id' LIMIT 1");

        if($adapt!=''){
          $this->app->DB->Update("UPDATE stundensatz SET satz='$satz' WHERE adresse='$user' AND projekt='$projekt'");
        }

        $this->app->DB->Insert("INSERT INTO stundensatz (adresse, satz, typ, projekt, datum)
            VALUES ('$user', '$satz', 'Angepasst', '$projekt', NOW())");
        $this->app->Location->execute("index.php?module=adresse&action=lohn&id=$user&msg=$msg");
      }


      $this->app->Tpl->Set('MODE', 'Stundensatz editieren');
    }else
    {
      // Stundensatz existiert noch nicht
      $this->app->Tpl->Set('STUNDENSATZANGEPASST', $standard);
      $this->app->Tpl->Set('ADAPTDISABLED', 'DISABLED');

      if($submit!='')
      {
        // Schreibe neuen Satz
        $this->app->DB->Insert("INSERT INTO stundensatz (adresse, satz, typ, projekt, datum)
            VALUES ('$user', '$satz', 'Angepasst', '$projekt', NOW())");

        $msg = $this->app->erp->base64_url_encode('<div class="success">Der Stundensatz wurde erfolgreich gespeichert.</div>');
        $this->app->Location->execute("index.php?module=adresse&action=lohn&id=$user&msg=$msg");
      }	

      $this->app->Tpl->Set('MODE', 'Stundensatz erstellen');
    }

    $this->app->Tpl->Parse('PAGE', 'adresse_stundensatz_edit.tpl');
  }

  function AdresseStundensatzDelete()
  {
    $user = $this->app->Secure->GetGET('user');
    $id = $this->app->Secure->GetGET('id');

    if(is_numeric($id)){
      $this->app->DB->Delete("DELETE FROM stundensatz WHERE id='$id' LIMIT 1");
    }
    else{
      $msg = $this->app->erp->base64_url_encode('<div class="error">Stundensatz-ID konnte nicht gefunden werden. Standard-Stundens&auml;tze k&ouml;nnen nicht gel&ouml;scht werden.</div>');
    }

    $this->app->Location->execute("index.php?module=adresse&action=lohn&id=$user&msg=$msg");
  }



  function AdresseAutoComplete()
  {

    $table = $this->app->Secure->GetGET('table');
    $filter = $this->app->Secure->GetGET('filter');
    $name = $this->app->Secure->GetGET('name');
    $query = $this->app->Secure->GetGET('query');
    $colsstring = $this->app->erp->base64_url_decode($this->app->Secure->GetGET('colsstring'));
    $returncol= $this->app->erp->base64_url_decode($this->app->Secure->GetGET('returncol'));
    if($table==''){
      $table = $name;
    }

    if($filter==='kunde'){
      $filter = "LEFT JOIN adresse_rolle ON adresse_rolle.adresse=adresse.id WHERE adresse_rolle.subjekt='Kunde' AND adresse.kundennummer!=0 AND adresse.geloescht=0 AND adresse.name LIKE '%$query%'";
    }
    elseif($filter==='mitarbeiter'){
      $filter = "LEFT JOIN adresse_rolle ON adresse_rolle.adresse=adresse.id WHERE (adresse_rolle.subjekt='Mitarbeiter' OR adresse_rolle.subjekt='Externer Mitarbeiter') AND adresse.mitarbeiternummer!=0 AND adresse.geloescht=0 
        AND adresse.name LIKE '%$query%'";
    }
    elseif($filter==='lieferant'){
      $filter = "LEFT JOIN adresse_rolle ON adresse_rolle.adresse=adresse.id WHERE adresse_rolle.subjekt='Lieferant' AND adresse.geloescht=0 AND adresse.name LIKE '%$query%'";
    }elseif($filter==='kunde_auftrag'){
      $filter = "LEFT JOIN adresse_rolle ON adresse_rolle.adresse=adresse.id LEFT JOIN auftrag ON auftrag.adresse=adresse.id WHERE adresse_rolle.subjekt='Kunde' AND ((auftrag.status='freigegeben' OR auftrag.status='storniert') OR (auftrag.vorkasse_ok=0 AND (auftrag.zahlungsweise='paypal' OR auftrag.zahlungsweise='vorkasse' OR auftrag.zahlungsweise='kreditkarte'))) AND adresse.geloescht=0
        AND adresse.name LIKE '%$query%'";
    }elseif($filter==='kunde_rechnung'){
      $filter = "LEFT JOIN adresse_rolle ON adresse_rolle.adresse=adresse.id LEFT JOIN rechnung ON rechnung.adresse=adresse.id WHERE adresse_rolle.subjekt='Kunde' AND rechnung.ist < rechnung.soll AND adresse.geloescht=0 AND adresse.name LIKE '%$query%'";
    }elseif($filter==='kunde_gutschrift'){
      $filter = "LEFT JOIN adresse_rolle ON adresse_rolle.adresse=adresse.id LEFT JOIN gutschrift ON gutschrift.adresse=adresse.id WHERE adresse_rolle.subjekt='Kunde' AND adresse.geloescht=0 AND adresse.name LIKE '%$query%'";
    }elseif($table==='artikel'){
      $filter = "WHERE name_de LIKE '%$query%'";
    }elseif(($filter=='' || $filter==='adresse') && $name==='adresse'){
      $filter = "WHERE adresse.geloescht=0 AND adresse.name LIKE '%$query%'";
    }
    $arr = $this->app->DB->SelectArr("SELECT DISTINCT $colsstring, $returncol FROM $table $filter ORDER by 1 LIMIT 10");
    //      echo "SELECT DISTINCT $colsstring, $returncol FROM $table $filter ORDER by 1";

    $cols = explode(',',$colsstring);
    foreach($arr as $key=>$value){
      //$tpl_end .= '{id:"'.$value[$returncol].'", cola:"'.$value[$cols[0]].'", colb:"'.$value[$cols[1]].'", colc:"'.$value[$cols[2]].'"},';
      echo $value[$returncol].'!*!'.$value[$cols[0]].' '.$value[$cols[1]].' '.$value[$cols[2]]."\n";
      //echo $value[$cols[0]].' '.$value[$cols[1]].' '.$value[$cols[2]]."\n";
      //echo $value[$cols[0]]."\n";
    }

    $this->app->ExitXentral();
  }


  function AdresseDateien()
  {
    $id = $this->app->Secure->GetGET('id');
    $this->AdresseMenu();
    $this->app->Tpl->Add('UEBERSCHRIFT',' (Dateien)');
    $this->app->YUI->DateiUpload('PAGE','Adressen',$id);
  }


  function AdresseDelete()
  {
    $id = (int)$this->app->Secure->GetGET('id');
    
    $checkuser = $this->app->DB->Select("SELECT count(id) FROM user WHERE adresse='$id'");
    $checkkassierer = $this->app->DB->Select("SELECT count(id) FROM pos_kassierer WHERE adresse='$id'");
    $checkabo = $this->app->DB->Select("SELECT COUNT(id) FROM abrechnungsartikel WHERE adresse = '$id'");

    if($id > 0){
      $msg = '';
      if($checkuser > 0){
        $msg .= $this->app->erp->base64_url_encode("<div class=\"error\">Die Adresse ist noch mit einem Benutzer verlinkt und kann daher nicht gelöscht werden.</div>");
      }else if($checkkassierer){
        $msg .= $this->app->erp->base64_url_encode("<div class=\"error\">Die Adresse ist noch mit einem Kassierer verlinkt und kann daher nicht gelöscht werden.</div>");
      }else if($checkabo > 0){
        $msg .= $this->app->erp->base64_url_encode("<div class=\"error\">Die Adresse ist noch mit Abos verlinkt und kann daher nicht gelöscht werden.</div>");
      }else {
        $this->app->DB->Update("UPDATE adresse SET geloescht='1',kundennummer=CONCAT('DEL-',kundennummer), lieferantennummer=CONCAT('DEL-',lieferantennummer), 
          mitarbeiternummer=CONCAT('DEL-',mitarbeiternummer) WHERE id='$id' LIMIT 1");

        $this->app->DB->Update("DELETE FROM ansprechpartner WHERE adresse='$id'");
        $this->app->DB->Update("DELETE FROM lieferadressen WHERE adresse='$id'");
        $this->app->DB->Update("DELETE FROM adresse_rolle WHERE adresse='$id'");
        $this->app->DB->Update("DELETE FROM dokumente WHERE adresse='$id'");
        $this->app->DB->Update("DELETE FROM dokumente_send WHERE adresse='$id'");

        $this->app->erp->ObjektProtokoll("adresse",$id,"adresse_delete","Adresse geloescht: $id");
        $this->app->erp->RunHook('address_delete', 1, $id);

        $msg = $this->app->erp->base64_url_encode("<div class=\"info\">Die Adresse wurde gelöscht!</div>");
      }
    }
    $this->app->Location->execute('index.php?module=adresse&action=list&msg='.$msg);
  }


  function AdresseRolleDatum()
  {
    $id = $this->app->Secure->GetGET('id');
    $sid = $this->app->Secure->GetPOST('sid');
    $von = $this->app->Secure->GetGET('von');
    $bis = $this->app->Secure->GetGET('bis');
    $von = $this->app->String->Convert($von,'%1.%2.%3','%3-%2-%1');
    $bis = $this->app->String->Convert($bis,'%1.%2.%3','%3-%2-%1');

    $this->app->DB->Delete("UPDATE adresse_rolle SET von='$von', bis='$bis' WHERE id='$sid' AND adresse='$id' LIMIT 1");

    $gruppe = $this->app->DB->Select("SELECT parameter FROM adresse_rolle WHERE id='$sid' AND adresse='$id' LIMIT 1");

    if($gruppe > 0)
    {
      if($von!='--' && $bis!='--')
      {
        $this->app->DB->Update("UPDATE auftrag SET gruppe='$gruppe' WHERE datum<='$bis' AND datum >='$von'	AND adresse='$id'");	
        $this->app->DB->Update("UPDATE rechnung SET gruppe='$gruppe' WHERE datum<='$bis' AND datum >='$von'	AND adresse='$id'");	
        $this->app->DB->Update("UPDATE gutschrift SET gruppe='$gruppe' WHERE datum<='$bis' AND datum >='$von'	AND adresse='$id'");	
      } else if($von!='--' && $bis=='--')
      {
        $this->app->DB->Update("UPDATE auftrag SET gruppe='$gruppe' WHERE datum>='$von' AND adresse='$id'");	
        $this->app->DB->Update("UPDATE rechnung SET gruppe='$gruppe' WHERE datum>='$von' AND adresse='$id'");	
        $this->app->DB->Update("UPDATE gutschrift SET gruppe='$gruppe' WHERE datum>='$von' AND adresse='$id'");	
      }
    }

    $this->AdresseRollen();
  }


  function AdresseGruppen()
  {  
    $this->AdresseMenu();

    $id = (int)$this->app->Secure->GetGET('id');
    $gid=(int)$this->app->Secure->GetPOST('gid');
    $value=(int)$this->app->Secure->GetPOST('value');

    if($gid>0)
    {
      if($value=='1'){
        $this->app->erp->AddRolleZuAdresse($id, 'Mitglied', 'von','Gruppe', $gid);
      }else{
        $this->app->DB->Delete("UPDATE adresse_rolle SET bis=DATE_SUB(NOW(),INTERVAL 1 DAY) WHERE parameter='$gid' AND adresse='$id'
        AND (subjekt='Mitglied' OR subjekt='Kunde') AND objekt='Gruppe' AND bis = '0000-00-00'");
      }
      $this->app->erp->RunHook('adresse_gruppen_change', 3, $id, $gid, $value);
      $this->app->ExitXentral();
    }

    $this->app->YUI->TableSearch('TAB1','adresse_gruppen');

    $this->app->Tpl->Parse('PAGE','adresse_gruppen.tpl');
  }


  function AdresseRolleDelete()
  {
    $id = $this->app->Secure->GetGET('id');
    $sid = $this->app->Secure->GetGET('sid');
    if($sid > 0){
      $this->app->DB->Delete("DELETE FROM adresse_rolle WHERE id='$sid' AND adresse='$id' LIMIT 1");
    }
    //    $this->app->Secure->POST['rolleanlegen'] = "true";
    //$this->AdresseEdit();
    $this->AdresseRollen();
    //$this->app->Tpl->Set(AKTIV_TAB3,"selected");
  }

  function AdresseCreate()
  {
    $cmd = $this->app->Secure->GetGET('cmd');
    if($cmd === 'duplicate'){
      $error = false;

      $name = trim($this->app->Secure->GetPOST('name'));
      $street = trim($this->app->Secure->GetPOST('street'));
      $zipcode = trim($this->app->Secure->GetPOST('zipcode'));
      $place = trim($this->app->Secure->GetPOST('place'));

      $where = '';

      if($name !== ''){
        $where .= " name = '$name' AND";
      }
      if($street !== ''){
        $where .= " strasse = '$street' AND";
      }
      if($zipcode !== ''){
        $where .= " plz = '$zipcode' AND";
      }
      if($place !== ''){
        $where .= " ort = '$place' AND";
      }

      if($where !== ''){
        $where = rtrim($where, 'AND');

        $addressId = $this->app->DB->Select("SELECT id FROM adresse WHERE ".$where." LIMIT 1");
        if($addressId != '' && $addressId > 0){
          $error = true;
        }
      }

      header('Content-Type: application/json');
      echo json_encode($error);
      $this->app->ExitXentral();
    }

    $this->app->ModuleScriptCache->IncludeJavascriptFiles('address', ['./classes/Modules/Address/www/js/address_create.js']);

    $this->app->erp->Headlines('Adresse anlegen');
    $this->app->Tpl->Set('TOPHEADING','Adresse anlegen');

    $this->app->erp->MenuEintrag('index.php?module=adresse&action=list','Zur&uuml;ck zur &Uuml;bersicht');


    parent::AdresseCreate();
  }


  function AdresseSuche()
  {
    $this->app->erp->MenuEintrag('index.php?module=adresse&action=list','&Uuml;bersicht');
    $this->app->erp->MenuEintrag('index.php?module=adresse&action=create','Neue Adresse anlegen');

    $this->app->YUI->TableSearch('TAB1','adresse_suche');
    $this->app->Tpl->Parse('PAGE','adresse_suche.tpl');
  }

  function AdresseMenuList()
  {
    $this->app->erp->MenuEintrag('index.php?module=adresse&action=list','&Uuml;bersicht');
    $this->app->erp->MenuEintrag('index.php?module=adresse&action=create','Neue Adresse anlegen');
    $this->app->erp->RunMenuHook('adresselist');    
  }


  function AdresseList()
  {
    $parameter = $this->app->User->GetParameter('table_filter_adresse');
    $parameter = json_decode($parameter, true);

    $this->AdresseMenuList();
    $zahlungsweisetext = null;
    $zahlungsweisentabelle = $this->app->DB->SelectArr("SELECT type,bezeichnung FROM `zahlungsweisen` WHERE aktiv = 1 AND type <> '' AND bezeichnung <> ''");
    if($zahlungsweisentabelle)
    {
      foreach($zahlungsweisentabelle as $v)
      {
        $zahlungsweisetext[$v['type']] = $v['bezeichunng'];
      }
    }

    $zahlungsweisen_ = $this->app->DB->SelectArr('
        SELECT
        zahlungsweise, zahlungsweiselieferant
        FROM
        adresse WHERE ifnull(geloescht, 0) = 0 AND (zahlungsweise <> \'\' OR zahlungsweiselieferant <> \'\')
        GROUP BY
        zahlungsweise, zahlungsweiselieferant
        ');
    $zahlungsweisen = null;
    if($zahlungsweisen_)
    {
      foreach($zahlungsweisen_ as $v)
      {
        if($v['zahlungsweise'] != '' && (!is_array($zahlungsweisen) || !in_array($v['zahlungsweise'], $zahlungsweisen))){
          $zahlungsweisen[] = $v['zahlungsweise'];
        }
        if($v['zahlungsweiselieferant'] != '' && (!is_array($zahlungsweisen) || !in_array($v['zahlungsweiselieferant'],$zahlungsweisen))){
          $zahlungsweisen[] = $v['zahlungsweiselieferant'];
        }
      }
      if($zahlungsweisen){
        sort($zahlungsweisen);
      }
    }


    $zahlungsweiseStr = '';
    if ($zahlungsweisen) {
      foreach ($zahlungsweisen as $zahlungsweise) {
        $zahlungsweiseStr .= '<option value="' . $zahlungsweise . '">' . (isset($zahlungsweisetext[$zahlungsweise])?$zahlungsweisetext[$zahlungsweise]:ucfirst($zahlungsweise)) . '</option>';
      }
    }

    $rollen = $this->app->DB->SelectArr('
        SELECT
        *
        FROM
        adresse_rolle
        GROUP BY
        subjekt
        ');

    $rollenStr = '';
    if ($rollen) {
      foreach ($rollen as $rolle) {
        $rollenStr .= '<option value="' . $rolle['subjekt'] . '">' . $rolle['subjekt'] . '</option>';
      }
    }
    
    $gruppen = $this->app->DB->SelectArr("SELECT * FROM gruppen gr WHERE (art = 'gruppe' or art = 'preisgruppe') AND (projekt = 0 OR (1 ".$this->app->erp->ProjektRechte('gr.projekt')."))");
    
    $gruppenStr = '';
    if ($gruppen) {
      foreach ($gruppen as $gruppe) {
        $gruppenStr .= '<option value="' . $gruppe['id'] . '">' . $gruppe['name'] . '</option>';
      }
    }
    
    $laender = $this->app->erp->GetSelectLaenderliste();
    $laenderStr = '';
    foreach ($laender as $landKey => $land) {
      $laenderStr .= '<option value="' . $landKey . '">' . $land . '</option>';
    }

    if( $this->app->erp->ModulVorhanden('verband') ) {
      $verbandsnummer = '';
      $verbandsnummer .= '<tr>';
      $verbandsnummer .= '<td>Verbandsnummer:</td>';
      $verbandsnummer .= '<td><input type="text" name="verbandsnummer" value=""></td>';
      $verbandsnummer .= '</tr>';
      $this->app->Tpl->Add('VERBANDSNUMMER',$verbandsnummer);
    }

    $this->app->YUI->AutoComplete('projekt', 'projektname', 1);
    $this->app->YUI->AutoComplete('name', 'adressename', 1);
    $this->app->YUI->AutoComplete('kundennummer', 'kunde', 1);
    $this->app->YUI->AutoComplete('vertrieb','adressegruppevertriebbearbeiter', 0, '&typ=vertrieb');
    $this->app->YUI->AutoComplete('innendienst','adressegruppevertriebbearbeiter', 0, '&typ=bearbeiter');
    $this->app->Tpl->Add('ZAHLUNGSWEISEN',$zahlungsweiseStr);
    $this->app->Tpl->Add('ROLLEN',$rollenStr);
    $this->app->Tpl->Add('GRUPPEN',$gruppenStr);
    $this->app->Tpl->Add('LAENDER',$laenderStr);
    $this->app->Tpl->Parse('TAB1','adresse_table_filter.tpl');

    $this->app->YUI->TableSearch('TAB1','adressetabelle');
    if($this->app->erp->Firmendaten('schnellsuche')){
      $this->app->YUI->EnterSearch('SCHNELLSUCHE', 'adressetabelle');
    }
    $this->app->Tpl->Parse('PAGE','adresseuebersicht.tpl');
  }


  function AdresseMenu()
  {
    $id = $this->app->Secure->GetGET('id');

    $nummer = $this->app->DB->Select("SELECT CONCAT(
        if(kundennummer!='',CONCAT('Kunde: ',kundennummer),''),
          if(lieferantennummer!='',CONCAT(' Lieferant: ',lieferantennummer),'')) FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");

    if(is_numeric($id)){
      $name = $this->app->DB->Select("SELECT name FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
    }

    if(isset($name) && $name!=''){
      $this->app->Tpl->SetText('UEBERSCHRIFT', 'Adresse von: ' . $name);
    }
    else{
      $this->app->Tpl->SetText('UEBERSCHRIFT', 'Adressen');
    }

    $this->app->Tpl->SetText('KURZUEBERSCHRIFT','Adressen');
    if(isset($name) && isset($nummer) && $name!='' && $nummer!=''){
      $this->app->Tpl->SetText('KURZUEBERSCHRIFT2', "$name ($nummer)");
    }
    else{
      $this->app->Tpl->SetText('KURZUEBERSCHRIFT2', !empty($name) ? $name : '');
    }

    if(isset($name)){
      $this->app->Tpl->SetText('ANZEIGENUMMER',$name);
    }
    if(isset($nummer)){
      $this->app->Tpl->SetText('ANZEIGENAMEDE',' '.$nummer);
    }

    $cmd = $this->app->Secure->GetPOST('cmd');
     
    if($cmd==='crm')
    {
      $this->app->erp->MenuEintrag('index.php?module=crm&action=list','Zur&uuml;ck zur &Uuml;bersicht');
    } 

    $this->app->erp->MenuEintrag('index.php?module=adresse&action=create','Neue Adresse anlegen');

    $this->app->erp->MenuEintrag("index.php?module=adresse&action=edit&id=$id",'Details');
  
    $anzahldateien = $this->app->erp->AnzahlDateien('Adressen',$id);
    if($anzahldateien > 0) {
      $anzahldateien = ' ('.$anzahldateien.')';
    } else {
      $anzahldateien='';
    }

    $this->app->erp->MenuEintrag("index.php?module=adresse&action=dateien&id=$id",'Dateien'.$anzahldateien);

        $count = '
          SELECT
            SUM(anzahl)
          FROM 
          (

            (
              SELECT
                COUNT(id) as anzahl
              FROM
                dokumente
              WHERE
                adresse_to = ' . (int)$id . '
            )

            UNION ALL

            (
              SELECT
                COUNT(id) as anzahl
              FROM
                dokumente_send
              WHERE
                adresse = ' . (int)$id . '
            )';
            if(1){//$this->app->erp->RechteVorhanden('ticket','list')){
            $count .= '
            UNION ALL

            ( 
              SELECT
                COUNT(ticket.id) as anzahl
              FROM
                ticket
                LEFT JOIN ticket_nachricht ON ticket.schluessel = ticket_nachricht.ticket
              WHERE
                ticket.adresse = ' . (int)$id . '
            )';
            }

            $count .= '
            UNION ALL

            ( 
              SELECT
                COUNT(k.id) as anzahl
              FROM
                kalender_event k 
                LEFT JOIN adresse a2 ON k.adresseintern = a2.id
                LEFT JOIN projekt p ON p.id=k.projekt
              WHERE
                k.adresse = ' . (int)$id . '

            )';


            if($this->app->erp->RechteVorhanden('wiedervorlage','list')){
              $count .= '
              UNION ALL

              (
                SELECT
                  COUNT(id) as anzahl
                FROM
                  wiedervorlage
                WHERE
                 wiedervorlage.adresse = ' . (int)$id . '

              )';
            }
            $count .= '
          ) a
        ';

    $anzahlcrm = 0;
    if($id > 0){
      $anzahlcrm = $this->app->DB->Select($count);
    }

    if($anzahlcrm > 0){
      $this->app->erp->MenuEintrag("index.php?module=adresse&action=brief&id=$id", "CRM ($anzahlcrm)");
    }
    else{
      $this->app->erp->MenuEintrag("index.php?module=adresse&action=brief&id=$id", 'CRM');
    }

    if($this->app->erp->Version()!=='stock'){
      $this->app->erp->MenuEintrag("index.php?module=adresse&action=rollen&id=$id", 'Rollen');
    }

    $this->app->erp->MenuEintrag("index.php?module=adresse&action=gruppen&id=$id",'Gruppen');



    if($this->app->erp->RechteVorhanden('verein','list') && $this->app->erp->Firmendaten('modul_verein')=='1'){
      $this->app->erp->MenuEintrag("index.php?module=adresse&action=verein&id=$id", 'Verein');
    }


    // Ist Benutzer ein Mitarbeiter?
    if(is_numeric($id)){
      $mitarbeiter = $this->app->DB->Select("SELECT id FROM adresse_rolle WHERE adresse='$id' AND subjekt='Mitarbeiter' LIMIT 1");
    }
    if(is_numeric($mitarbeiter))
    {
      //$this->app->erp->MenuEintrag("index.php?module=adresse&action=lohn&id=$id","Lohn");
      $this->app->erp->MenuEintrag("index.php?module=adresse&action=zeiterfassung&id=$id",'Zeit');
    }


    $anzahlansp = $this->app->DB->Select("SELECT COUNT(id) FROM ansprechpartner WHERE adresse='$id'");
    if($anzahlansp>0) {
      $anzahlansp = ' ('.$anzahlansp.')';
    } else {
      $anzahlansp='';
    }

    $anzahllief = $this->app->DB->Select("SELECT COUNT(id) FROM lieferadressen WHERE adresse='$id'");
    if($anzahllief>0) {
      $anzahllief = ' ('.$anzahllief.')';
    } else {
      $anzahllief='';
    }

    $anzahlacc = $this->app->DB->Select("SELECT COUNT(id) FROM adresse_accounts WHERE adresse='$id'");
    if($anzahlacc>0) {
      $anzahlacc = ' ('.$anzahlacc.')';
    } else {
      $anzahlacc='';
    }

    $this->app->erp->MenuEintrag("index.php?module=adresse&action=ansprechpartner&id=$id",'Ansprechpart.'.$anzahlansp);
    $this->app->erp->MenuEintrag("index.php?module=adresse&action=lieferadresse&id=$id",'Lieferadressen'.$anzahllief);
    $this->app->erp->MenuEintrag("index.php?module=adresse&action=accounts&id=$id",'Accounts'.$anzahlacc);


    if($this->app->erp->IsAdresseSubjekt($id,'Kunde')){
      $this->app->erp->MenuEintrag("index.php?module=adresse&action=belege&id=$id", 'Belege');
    }

    if($this->app->erp->Version()!=='stock'){
      $this->app->erp->MenuEintrag("index.php?module=adresse&action=kundeartikel&id=$id", 'Artikel');
    }

    if($this->app->erp->IsAdresseSubjekt($id,'Kunde'))
    {
      $this->app->erp->MenuEintrag("index.php?module=adresse&action=abrechnungzeit&id=$id",'Zeitkonto');
      if($this->app->erp->ModulVorhanden('rechnungslauf'))
      {
        $anzahlabos = $this->app->DB->Select("SELECT COUNT(id) FROM abrechnungsartikel WHERE adresse='$id' AND (enddatum = '0000-00-00' OR enddatum >= NOW())"); 
        if($anzahlabos>0){
          $this->app->erp->MenuEintrag("index.php?module=adresse&action=artikel&id=$id", "Abos ($anzahlabos)");
        }
        else{
          $this->app->erp->MenuEintrag("index.php?module=adresse&action=artikel&id=$id", 'Abos ');
        }
      }
      //$this->app->erp->MenuEintrag("index.php?module=adresse&action=ustprf&id=$id","USt");
    }

    if($this->app->erp->IsAdresseSubjekt($id,'Lieferant'))
    {
      $this->app->erp->MenuEintrag("index.php?module=adresse&action=lieferantartikel&id=$id",'Lieferprogramm');
      $this->app->erp->MenuEintrag("index.php?module=adresse&action=offenebestellungen&id=$id",'Bestellungen');
      $this->app->erp->MenuEintrag("index.php?module=adresse&action=verbindlichkeiten&id=$id",'Verbindlichkeiten');
    }


    $this->app->erp->MenuEintrag("index.php?module=adresse&action=ustprf&id=$id",'Ust-ID Prf.');

    $this->app->erp->RunMenuHook('adresse');
  }

  function AdresseKontaktHistorie()
  {
    $this->AdresseMenu();
    $this->app->Tpl->Add('UEBERSCHRIFT',' (Kontakthistorie)');
    $this->app->Tpl->Set('SUBSUBHEADING','Adressen');
    $id = $this->app->Secure->GetGET('id');

    // neues arbeitspaket
    $widget = new WidgetAnsprechpartner($this->app,'TAB2');
    $widget->form->SpecialActionAfterExecute('none',
        "index.php?module=adresse&action=ansprechpartner&id=$id");
    $widget->Create();


    //Formula ansprechpartner
    $table = new EasyTable($this->app);
    $table->Query("SELECT name, bereich, telefon, email,id FROM ansprechpartner WHERE adresse='$id'");
    $table->DisplayNew('INHALT', "<a href=\"index.php?module=adresse&action=ansprechpartnereditpopup&frame=false&id=%value%\" 
        onclick=\"makeRequest(this);return false\">Bearbeiten</a>");

    // easy table mit arbeitspaketen YUI als template 
    $this->app->Tpl->Parse('TAB1','rahmen70.tpl');
    $this->app->Tpl->Set('AKTIV_TAB1','selected');
    $this->app->Tpl->Parse('PAGE','ansprechpartneruebersicht.tpl');
  }

  function AdresseKontaktHistorieEditPopup()
  {
    $frame = $this->app->Secure->GetGET('frame');
    $id = $this->app->Secure->GetGET('id');

    if($frame=='false')
    {
      // hier nur fenster größe anpassen
      $this->app->YUI->IframeDialog(600,320);
    } else {
      // nach page inhalt des dialogs ausgeben
      $widget = new WidgetAnsprechpartner($this->app,'PAGE');
      $adresse = $this->app->DB->Select("SELECT adresse FROM ansprechpartner WHERE id='$id' LIMIT 1");
      $widget->form->SpecialActionAfterExecute('close_refresh',
          "index.php?module=adresse&action=ansprechpartner&id=$adresse");

      $widget->Edit();
      $this->app->BuildNavigation=false;
    }
  }




  function AdresseRolle()
  {


  } 

  function AdresseNummern($id)
  {
    $tmp_data_adresse= $this->app->DB->SelectRow("SELECT * FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
    if(is_numeric($id)) {
      $kundennummer = $tmp_data_adresse['kundennummer'];
      $lieferantennummer = $tmp_data_adresse['lieferantennummer'];
      $mitarbeiternummer= $tmp_data_adresse['mitarbeiternummer'];
      $projekt= $tmp_data_adresse['projekt'];
    }


    if($kundennummer=='0' || $kundennummer==''){
      // pruefe ob rolle kunden vorhanden
      if(is_numeric($id)){
        $check = $this->app->DB->Select("SELECT adresse FROM adresse_rolle WHERE adresse='$id' AND subjekt='Kunde' LIMIT 1");
      }
      if(!empty($check))
      {
        $kundennummer = $this->app->erp->GetNextKundennummer($projekt,$tmp_data_adresse);
        $this->app->erp->ObjektProtokoll('adresse',$id,'adresse_next_kundennummer',"Kundennummer erhalten: $kundennummer");
        
        $this->app->DB->Update("UPDATE adresse SET kundennummer='$kundennummer' WHERE id='$id' AND (kundennummer='0' OR kundennummer='') LIMIT 1");
      } else{
        $kundennummer = 'noch keine';
      }
    }

    if($lieferantennummer=='0'){
      if(is_numeric($id)){
        $check = $this->app->DB->Select("SELECT adresse FROM adresse_rolle WHERE adresse='$id' AND subjekt='Lieferant' LIMIT 1");
      }else {
        $check = '';
      }
      if($check!='')
      {
        $lieferantennummer= $this->app->erp->GetNextLieferantennummer($projekt,$tmp_data_adresse);
        $this->app->erp->ObjektProtokoll('adresse',$id,'adresse_next_lieferantennummer',"Lieferantennummer erhalten: $lieferantennummer");
        if(is_numeric($id)){
          $this->app->DB->Update("UPDATE adresse SET lieferantennummer='$lieferantennummer' WHERE id='$id' AND (lieferantennummer='0' OR lieferantennummer='') LIMIT 1");
        }
      } else{
        $lieferantennummer = 'noch keine';
      }
    }

    if($mitarbeiternummer=='0'){
      if(is_numeric($id)){
        $check = $this->app->DB->Select("SELECT adresse FROM adresse_rolle WHERE adresse='$id' AND (subjekt='Mitarbeiter' OR subjekt='Externer Mitarbeiter') LIMIT 1");
      }else{
        $check = '';
      }
      if($check!='')
      {
        $mitarbeiternummer= $this->app->erp->GetNextMitarbeiternummer($projekt,$tmp_data_adresse);
        $this->app->erp->ObjektProtokoll('adresse',$id,'adresse_next_mitarbeiternummer',"Mitarbeiternummer erhalten: $mitarbeiternummer");
        if(is_numeric($id)){
          $this->app->DB->Update("UPDATE adresse SET mitarbeiternummer='$mitarbeiternummer' WHERE id='$id' AND (mitarbeiternummer='0' OR mitarbeiternummer='') LIMIT 1");
        }

      } else{
        $mitarbeiternummer = 'noch keine';
      }
    }
  }


  function AdresseDelKontakt()
  {
    $id = $this->app->Secure->GetGET('id');
    $lid = $this->app->Secure->GetGET('lid');
    if($lid > 0){
      $this->app->DB->Delete("DELETE FROM adresse_kontakte WHERE id='$lid' LIMIT 1");
    }

    $this->app->Location->execute("index.php?module=adresse&action=edit&id=$id");
  }



  function AdresseNewKontakt()
  {
    $bezeichnung = $this->app->Secure->GetGET('bezeichnung');
    $kontakt = $this->app->Secure->GetGET('kontakt');
    $id = $this->app->Secure->GetGET('id');

    //INSERT
    $this->app->DB->Insert("INSERT INTO adresse_kontakte (id,adresse,bezeichnung,kontakt) VALUES ('','$id','$bezeichnung','$kontakt')");

    $this->app->Location->execute("index.php?module=adresse&action=edit&id=$id");
  }

  function AdresseOpen()
  {

    $kundennummer=$this->app->Secure->GetGET('kundennummer');
    $projekt=$this->app->Secure->GetGET('projekt');

    if($projekt!='')
    {
      $projektid = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' LIMIT 1");
      $id = $this->app->DB->Select("SELECT id FROM adresse WHERE projekt='$projektid' AND kundennummer='$kundennummer' LIMIT 1");
    } else {
      $id = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer='$kundennummer' LIMIT 1");
    }

    $cmd=$this->app->Secure->GetPOST('cmd');
    if($cmd=="") $cmd = $this->app->Secure->GetGET('cmd');
    $this->app->Location->execute('index.php?module=adresse&action='.$cmd.'&id='.$id);
  }	


  function AdresseGetid()
  {

    $kundennummer=$this->app->Secure->GetGET('kundennummer');
    $projekt=$this->app->Secure->GetGET('projekt');

    if($projekt!='')
    {
      $projektid = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' LIMIT 1");
      $id = $this->app->DB->Select("SELECT id FROM adresse WHERE projekt='$projektid' AND kundennummer='$kundennummer' LIMIT 1");
    } else {
      $id = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer='$kundennummer' LIMIT 1");
    }

    echo $id;
    $this->app->ExitXentral();
  }	


  function AdresseEdit()
  {
    $id = $this->app->Secure->GetGET('id');
    $projekt = $this->app->DB->Select("SELECT projekt FROM adresse WHERE id = '$id' LIMIT 1");

    $shopid = (int)$this->app->Secure->GetGET('shop');
    $export = (int)$this->app->Secure->GetGET('export');
    $shops = $this->app->DB->SelectArr("SELECT id, bezeichnung, modulename, shoptyp FROM shopexport WHERE projekt = '$projekt' AND demomodus <> 1 AND aktiv = 1 AND adressupdate = 1");

    if($shopid > 0){
      foreach ($shops as $shop){
        if((int)$shop['id'] === $shopid){
          if($export){
            $erg = $this->app->remote->RemoteCommand($shopid, 'sendadresse', $id);
            if(isset($erg['meldung']) && (!isset($erg['fehler']) || !$erg['fehler']))
            {
              $msg = $this->app->erp->base64_url_encode('<div class="info">'.$erg['meldung'].'</div>');
            }elseif(isset($erg['fehler']) && $erg['fehler'])
            {
              $msg = $this->app->erp->base64_url_encode('<div class="error">Es ist ein Fehler aufgetreten: '.$erg['fehler'].'!</div>');
            }else{
              $msg = $this->app->erp->base64_url_encode('<div class="error">Fehlerhafte Online-Shopkonfiguration</div>');
            }
          }else{
            $erg = $this->app->remote->RemoteCommand($shopid, 'getadresse', $id);
            if(isset($erg['meldung']) && (!isset($erg['fehler']) || !$erg['fehler']))
            {
              $msg = $this->app->erp->base64_url_encode('<div class="info">'.$erg['meldung'].'</div>');
            }elseif(isset($erg['fehler']) && $erg['fehler'])
            {
              $msg = $this->app->erp->base64_url_encode('<div class="error">Es ist ein Fehler aufgetreten: '.$erg['fehler'].'!</div>');
            }else{
              $msg = $this->app->erp->base64_url_encode('<div class="error">Fehlerhafte Online-Shopkonfiguration</div>');
            }
          }
          $this->app->Location->execute('index.php?module=adresse&action=edit&id='.$id.'&msg='.$msg);
          break;
        }
      }
    }


    if($this->app->erp->DisableModul('adresse',$id))
    {
      //$this->app->erp->MenuEintrag("index.php?module=auftrag&action=list","Zur&uuml;ck zur &Uuml;bersicht");
      $this->AdresseMenu();
      return;
    } 

    $this->app->YUI->SaveReally();

    $adresse_kontakte = $this->app->Secure->GetPOST('adresse_kontakte');
    if(!empty($adresse_kontakte) && (!empty($adresse_kontakte)?count($adresse_kontakte):0) > 0) {
      foreach($adresse_kontakte as $key=>$value)
        $this->app->DB->Update("UPDATE adresse_kontakte SET kontakt='$value' WHERE id='$key' LIMIT 1");
    }
    $telefon = '';
    $mobil = '';
    $email = '';
    $internetseite = '';
    if(is_numeric($id)) {
      $adressarr = $this->app->DB->SelectRow("SELECT * FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
      if(!empty($adressarr)){
        $kundennummer = $adressarr['kundennummer'];//$this->app->DB->Select("SELECT kundennummer FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
        $lieferantennummer = $adressarr['lieferantennummer'];//$this->app->DB->Select("SELECT lieferantennummer FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
        $mitarbeiternummer = $adressarr['mitarbeiternummer'];//$this->app->DB->Select("SELECT mitarbeiternummer FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
        $logfile = $adressarr['adresse'];//$this->app->DB->Select("SELECT logfile FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
        $telefon = $adressarr['telefon'];
        $mobil = $adressarr['mobil'];
        $email = $adressarr['email'];
        $internetseite = $adressarr['internetseite'];
      }else{
        $kundennummer = '';
        $lieferantennummer = '';
        $mitarbeiternummer = '';
        $logfile = '';
      }
      $logfile  = str_replace(';',"\r\n",$logfile);
      $this->app->Tpl->Set('LOGFILE',"<textarea cols=\"60\" rows=\"5\" id=\"logfile\" name=\"logfile\">$logfile</textarea>");
    }

    $sipuid = false;
    $isPlaceTelAvailable = $this->app->erp->RechteVorhanden('placetel','call')
      && !empty($sipuid = $this->app->erp->GetPlacetelSipuid());
    $isSipgateAvailable = $this->app->erp->RechteVorhanden('sipgate','call')
      && !empty($this->app->erp->GetKonfiguration('sipgate_api_user'));
    if($isSipgateAvailable || $isPlaceTelAvailable) {
      $phoneModule = $isPlaceTelAvailable ? 'placetel' : 'sipgate';
      $this->app->Tpl->Set('JSPLACETEL','
          function call(id, dummy)
          {
            $.ajax({
                url: \'index.php?module=' . $phoneModule . '&action=call&id=\'+id,
                type: \'POST\',
                dataType: \'json\',
                data: {},
                success: function(data) {
                  if(data)
                  {
                  
                  }
                }
            });

          }
      ');
    }
    //$telefon= $this->app->DB->Select("SELECT telefon FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
    if($telefon!='')
    {
      $telefon = str_replace('/','',$telefon);
      $telefon = str_replace(' ','',$telefon);
      if($isPlaceTelAvailable || $isSipgateAvailable)
      {
        $this->app->Tpl->Set('TELEFONBUTTON',"<a href=\"#\" onclick=call(\"1-".$id."\") ><img border=\"0\" width=\"20\" src=\"./themes/".$this->app->Conf->WFconf['defaulttheme']."/images/phone.png\" class=\"iconininput\" alt=\"anrufen\" /></a>");
      }else{
        $this->app->Tpl->Set('TELEFONBUTTON',"<a href=\"tel://$telefon\"><img border=\"0\" width=\"20\" src=\"./themes/".$this->app->Conf->WFconf['defaulttheme']."/images/phone.png\" class=\"iconininput\" alt=\"anrufen\" /></a>");
      }
    }
    //$mobil= $this->app->DB->Select("SELECT mobil FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
    if($mobil!='')
    {
      $mobil = str_replace('/','',$mobil);
      $mobil = str_replace(' ','',$mobil);
      if($isPlaceTelAvailable || $isSipgateAvailable)
      {
        $this->app->Tpl->Set('MOBILBUTTON',"<a href=\"#\" onclick=call(\"2-".$id."\") ><img border=\"0\" width=\"20\" src=\"./themes/".$this->app->Conf->WFconf['defaulttheme']."/images/phone.png\" class=\"iconininput\" alt=\"anrufen\" /></a>");
      }else{
        $this->app->Tpl->Set('MOBILBUTTON',"<a href=\"tel://$mobil\"><img border=\"0\" width=\"20\" src=\"./themes/".$this->app->Conf->WFconf['defaulttheme']."/images/phone.png\" class=\"iconininput\" alt=\"anrufen\" /></a>");
      }
    }    
    
    //$email = $this->app->DB->Select("SELECT email FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
    if($email != '')
    {
      $email = str_ireplace("mailto:",'',$email);
      $this->app->Tpl->Set('EMAILBUTTON',"<a href=\"mailto:$email\"><img border=\"0\" width=\"20\" src=\"./themes/".$this->app->Conf->WFconf['defaulttheme']."/images/mail2.png\" alt=\"Email schreiben\" class=\"iconininput\" /></a>");
    }

    //$internetseite = $this->app->DB->Select("SELECT internetseite FROM adresse WHERE id='$id' AND geloescht=0 LIMIT 1");
    if($internetseite != '')
    {
      if(stripos($internetseite,'http') === false)$internetseite = 'http://'.$internetseite;
      $this->app->Tpl->Set('INTERNETBUTTON',"<a href=\"$internetseite\" target=\"_blank\"><img border=\"0\" width=\"20\" src=\"./themes/".$this->app->Conf->WFconf['defaulttheme']."/images/web.png\" class=\"iconininput\" alt=\"Internetseite besuchen\" /></a>");
    }

    //Weitere Kontakte
    $buttons_kontakte = "

<input type=\"button\" class=\"button button-secondary\" onclick=\"var bezeichnung =  prompt('Etikett bzw. Bezeichnung (z.B. E-Mail, Skype, ICQ, ...):','Telefon Privat'); 
if((bezeichnung !=null && bezeichnung!='')) {var kontakt =  prompt('Kontakt:',''); if((bezeichnung !=null && bezeichnung!='') && (kontakt!=null && kontakt!='')) { window.location.href='index.php?module=adresse&action=newkontakt&id=".$id."&bezeichnung='+encodeURIComponent(bezeichnung)+'&kontakt='+encodeURIComponent(kontakt);}}\"
 value=\"Weitere Kontaktinfos\">";

$kontakte = $this->app->DB->SelectArr("SELECT * FROM adresse_kontakte WHERE adresse='$id'");
$tabindex=60;
$table_kontakte = '';
$ckontakte = !empty($kontakte)?count($kontakte):0;
for($i=0;$i<$ckontakte;$i++)
{
  $tabindex = $tabindex+$i;
  $table_kontakte .= "<tr><td>".$kontakte[$i]['bezeichnung'].":&nbsp;
    </td><td><input type=text name=\"adresse_kontakte[".$kontakte[$i]['id']."]\" value=\"".$kontakte[$i]['kontakt']."\" size=\"30\" tabindex=\"$tabindex\">&nbsp;<a href=\"#\" onclick=\"if(!confirm('".$kontakte[$i]['bezeichnung']." wirklich entfernen?'))    return false; else window.location.href='index.php?module=adresse&action=delkontakt&id=".$id."&lid=".$kontakte[$i]['id']."';\">x</a></td></tr>";
}


$this->app->Tpl->Set('BUTTON_KONTAKTE',"$table_kontakte<tr><td></td><td>$buttons_kontakte</td></tr>");




$things = array('angebot','auftrag','rechnung','lieferschein','gutschrift');
$buttons_kunde = '';
foreach($things as $key=>$value) {
  $buttons_kunde .= '
  <input type="button" class="btnGreenBig" onclick="window.location.href=\'index.php?module=adresse&action=createdokument&id=' . $id . '&cmd=' . $value . '\';" value="' . ucfirst($value) . '">';
}

$things = array('bestellung');
$buttons_lieferant = '';
foreach($things as $key=>$value) {
  $buttons_lieferant .= '
  <input type="button" class="btnGreenBig" onclick="window.location.href=\'index.php?module=adresse&action=createdokument&id=' . $id . '&cmd=' . $value . '\';" value="' . ucfirst($value) . '">';
}



  if($kundennummer !='') {
    $buttons = $buttons_kunde;
  }
  if($lieferantennummer !='') {
    $buttons .= $buttons_lieferant;
  }

  if(1){//$buttons !=""){
    $this->app->Tpl->Set('BUTTONS','<fieldset><legend>Neu Anlegen</legend>
        <div class="tabsbutton" style="float:left;">'.$buttons.'</div>
        </fieldset>');

    $this->app->Tpl->Set('BUTTONS2','<input type="button" class="button button-secondary" onclick="copyTextToClipboard(\''.str_replace("'","\'",$this->AdresseAnschriftString($id)).'\')" value="Adresse in Zwischenspeicher">
        <input type="button" class="button button-secondary" onclick="window.location.href=\'index.php?module=adresse&action=pdf&id='.$id.'\'" value="Stammdaten PDF">');
  }

if(is_numeric($id)){
  $anzahl_rollen = $this->app->DB->Select("SELECT SUM(id) FROM adresse_rolle WHERE adresse='$id'");
}

$anzahl_lead = !empty($adressarr['lead'])?$adressarr['lead']:0;// $this->app->DB->Select("SELECT lead FROM adresse WHERE id='$id'");
$anzahl_rollen += $anzahl_lead;


if($anzahl_rollen<1)
{

  if($this->app->erp->Version()==='stock')
  {
    $lieferant_checked = 'checked';
    $kunde_checked = '';
  } else {
    $lieferant_checked = '';
    $kunde_checked = 'checked';
  }

  if($this->app->erp->RechteVorhanden("crm","list"))
    $leadbox = "<input type=\"checkbox\" value=\"1\" name=\"lead\" id=\"lead\">&nbsp;<label for=\"lead\">als Lead markieren</label>";

  if($this->app->erp->RechteVorhanden("adresse","rollen"))
  {
    $this->app->Tpl->Set('MESSAGEROLLE',"
      <div class=\"info\">Die Adresse hat noch keine Rolle. Soll eine <a href=\"index.php?module=adresse&action=rollen&id=$id\">Rolle</a> anlegt werden: <form action=\"index.php?module=adresse&action=rollen&id=$id\" method=\"post\">
      <input type=\"checkbox\" value=\"1\" name=\"kunde\" id=\"kunde\" $kunde_checked>&nbsp;<label for=\"kunde\">als Kunde markieren</label>
      <input type=\"checkbox\" value=\"1\" name=\"lieferant\" id=\"lieferant\" $lieferant_checked>&nbsp;<label for=\"lieferant\">als Lieferant markieren</label>
      <input type=\"checkbox\" value=\"1\" name=\"mitarbeiter\" id=\"mitarbeiter\">&nbsp;<label for=\"mitarbeiter\">als Mitarbeiter markieren</label>
      $leadbox
      <input type=\"submit\" value=\"Jetzt markieren\" name=\"submitrolle\">
      </form></div>");
  }
}

if($anzahl_rollen==1 && $anzahl_lead==1)
{
$this->app->Tpl->Set('MESSAGEROLLE','<div class="info">Diese Adresse ist ein potentieller Neukunde (Lead).</div>');

}

// aktiviere tab 1
$this->app->Tpl->Set('AKTIV_ADRESSE','selected');
$this->AdresseNummern($id);
if($kundennummer==0) {
  $kundennummer = 'keine Kundennummer vorhanden';
}
if($lieferantennummer==0){
  $lieferantennummer = 'keine Lieferantennummer vorhanden';
}
if($mitarbeiternummer==0){
  $mitarbeiternummer = 'keine Mitarbeiternummer vorhanden';
}


$this->app->Tpl->Set('KUNDENNUMMERANZEIGE',$kundennummer);
$this->app->Tpl->Set('LIEFERANTENNUMMERANZEIGE',$lieferantennummer);
$this->app->Tpl->Set('MITARBEITERNUMMERANZEIGE',$mitarbeiternummer);

$this->AdresseMenu();
$this->app->Tpl->Set('TABLE_ADRESSE_KONTAKTHISTORIE','TDB');
$this->app->Tpl->Set('TABLE_ADRESSE_ROLLEN','TDB');

$this->app->Tpl->Set('TABLE_ADRESSE_USTID','TDB');


$this->app->Tpl->Set('SUBSUBHEADING','Rolle anlegen');
if($this->app->Secure->GetPOST('rolleanlegen')!=''){
  $this->app->Tpl->Set('AKTIV_TAB3', 'selected');
}
else{
  $this->app->Tpl->Set('AKTIV_TAB1', 'selected');
}

$abweichende_rechnungsadresse= $this->app->DB->Select("SELECT abweichende_rechnungsadresse FROM adresse WHERE id='$id' LIMIT 1");
$this->app->Tpl->Set('ABWEICHENDERECHNUNGSADRESSESTYLE','none');
if($abweichende_rechnungsadresse=='1') {
  $this->app->Tpl->Set('ABWEICHENDERECHNUNGSADRESSESTYLE','');
}

$liefersperre= $this->app->DB->Select("SELECT liefersperre FROM adresse WHERE id='$id' LIMIT 1");
if($liefersperre=='1')
{
  $this->app->Tpl->Add('MESSAGE',"<div class=\"error\">Achtung! Bei dieser Adresse ist die Liefersperre gesetzt!</div>");
}
parent::AdresseEdit();
$this->app->erp->MessageHandlerStandardForm();

}

function AdresseRollen()
{ 
  $this->AdresseMenu();

  $id = $this->app->Secure->GetGET('id');
  $reload = $this->app->Secure->GetGET('reload');
  $submitrolle = $this->app->Secure->GetPOST('submitrolle');

  $this->AdresseRolleEdit();

  $projekt = $this->app->DB->Select("SELECT projekt FROM adresse WHERE id='$id' LIMIT 1");

  if($submitrolle!='')
  {

    if($this->app->Secure->GetPOST('kunde')=='1'){
      $this->app->erp->AddRolleZuAdresse($id, 'Kunde', 'von', 'Projekt', $projekt);
    }
    if($this->app->Secure->GetPOST('mitarbeiter')=='1'){
      $this->app->erp->AddRolleZuAdresse($id, 'Mitarbeiter', 'von', 'Projekt', $projekt);
    }
    if($this->app->Secure->GetPOST('lieferant')=='1'){
      $this->app->erp->AddRolleZuAdresse($id, 'Lieferant', 'von', 'Projekt', $projekt);
    }
    if($this->app->Secure->GetPOST('lead')=='1'){
      $this->app->DB->Update("UPDATE adresse SET `lead`=1 WHERE id='$id' LIMIT 1");
    }
  }

  $this->AdresseNummern($id);

  if($submitrolle!='')
  {
    $this->app->Location->execute("index.php?module=adresse&action=edit&id=$id");
  }

  if($this->app->Secure->GetPOST('rolleanlegen')!='')
  {
    $subjekt = $this->app->Secure->GetPOST('subjekt');
    $objekt = $this->app->Secure->GetPOST('objekt');
    if($objekt==='Projekt')
    {
      $projekt =  $this->app->Secure->GetPOST('parameter');
      $parameter = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' AND abkuerzung <> '' LIMIT 1");
    } else {
      $gruppe=  $this->app->Secure->GetPOST('gruppe');
      $parameter = $this->app->DB->Select("SELECT id FROM gruppen WHERE CONCAT(name,' ',kennziffer)='$gruppe' LIMIT 1");
    }

    if(!($objekt==='Gruppe' && $parameter <=0))
    {
      $this->app->erp->AddRolleZuAdresse($id, $subjekt, "von", $objekt, $parameter); 
    }
    else {
      $msg = $this->app->erp->base64_url_encode("<div class=\"error\">Rolle nicht gespeichert! Bitte geben Sie eine Gruppe an!</div>");
      $this->app->Location->execute("index.php?module=adresse&action=rollen&id=$id&msg=$msg");
    }
  }	

  $this->app->YUI->AutoComplete('parameter','projektname',1);
  $this->app->YUI->AutoComplete('gruppe','gruppe');

  $subjekt= $this->app->erp->GetAdressSubject();
  $this->app->Tpl->Set('ROLLE_SELECT',$this->app->erp->GetSelect($subjekt,''));

  $this->app->Tpl->Parse('TAB1','adresse_rolle.tpl');
  if($this->app->Secure->GetPOST('rolleanlegen')!='' || $reload=='true')
  {
    $this->app->Location->execute("index.php?module=adresse&action=rollen&id=$id");
  } 


  $this->app->Tpl->Set('SUBSUBHEADING','Rollen der Adresse');
  $this->app->Tpl->Set('TABTEXT','Rollen');

  $table = new EasyTable($this->app);
  $table->Query("SELECT a.subjekt as Rolle, 
        if(a.objekt='','ALLE',a.objekt) as Zuordnung, 
        if(a.objekt='Projekt',if(a.parameter='','ALLE',p.abkuerzung),CONCAT(g.name,' ',g.kennziffer)) as auswahl, 
        DATE_FORMAT(a.von,'%d.%m.%Y') as seit, if(a.bis='0000-00-00','aktuell',DATE_FORMAT(a.bis,'%d.%m.%Y')) as bis,  a.id
        FROM adresse_rolle a  LEFT JOIN projekt p ON a.parameter=p.id 
        LEFT JOIN gruppen g ON g.id=a.parameter
        WHERE a.adresse='$id'",0,"");

  $table->DisplayNew('TAB1NEXT', "<!--<a href=\"index.php?module=adresse&action=rolleeditpopup&frame=false&id=%value%\" 
      onclick=\"makeRequest(this);return false\"><img src=\"./themes/[THEME]/images/edit.svg\" border=\"0\"></a>&nbsp;-->
      <a href=\"javascript:;\" onclick=\"AdresseRolleEdit(%value%);\"><img src=\"./themes/[THEME]/images/edit.svg\" border=\"0\"></a>&nbsp;<a onclick=\"if(!confirm('Rolle wirklich l&ouml;schen?')) return false; else window.location.href='index.php?module=adresse&action=rolledelete&id=$id&sid=%value%';\"><img src=\"./themes/[THEME]/images/delete.svg\" border=\"0\"></a>");

  //<a onclick=\"var von =  prompt('Von Datum:','');   if((von !=null && von!='')) {var bis =  prompt('Bis Datum:',''); if((von !=null && von!='') ) { window.location.href='index.php?module=adresse&action=rolledatum&sid=%value%&id=".$id."&von='+von+'&bis='+bis;}}\">


  $this->app->Tpl->Parse('PAGE','tabview.tpl');

  $this->app->YUI->DatePicker('von_datum');
  $this->app->YUI->DatePicker('bis_datum');
} 


function AdresseRolleEdit()
{
  if($this->app->Secure->GetGET('cmd')==='get'){
    
    $id = (int)$this->app->Secure->GetPOST('id');
                
    $data = $this->app->DB->SelectRow("SELECT id as id, DATE_FORMAT(von,'%d.%m.%Y') as von_datum, DATE_FORMAT(bis,'%d.%m.%Y') as bis_datum FROM adresse_rolle WHERE id = \"$id\" LIMIT 1");

    echo json_encode($data);
    $this->app->ExitXentral();
  }
}

function AdresserolleSave()
{
    $id = (int)$this->app->Secure->GetPOST('id');
    $von_datum = $this->app->Secure->GetPOST('von_datum');
    $bis_datum = $this->app->Secure->GetPOST('bis_datum');

    $id = $this->app->DB->Select("SELECT id FROM adresse_rolle ar WHERE id = \"$id\"");

    $von_datuml = strlen(trim($von_datum));
    $bis_datuml = strlen(trim($bis_datum));

    $von_datum = $this->app->String->Convert($von_datum,'%3.%2.%1','%1-%2-%3');
    $bis_datum = $this->app->String->Convert($bis_datum,'%3.%2.%1','%1-%2-%3');
    $fehler = '';
    if($id != '' && trim($von_datum) != '' && trim($bis_datum) != '' && $von_datuml >= 8  && $von_datuml <= 10 && $bis_datuml >= 8 && $bis_datuml <= 10 && $von_datum != '0000-00-00'){
      $this->app->DB->Update("UPDATE adresse_rolle SET von = \"$von_datum\", bis = \"$bis_datum\" WHERE id = \"$id\"");
    }else{
      if($von_datum == '0000-00-00'){
        $fehler .= 'Bitte ein gültiges von Datum angeben';
      }
      if($von_datuml < 8 || $von_datuml > 10 || $bis_datuml < 8 || $bis_datuml > 10){
        $fehler .= 'Bitte ein gültiges Datum angeben';
      }
      echo json_encode(array('status'=>0,'statusText'=>$fehler));
      $this->app->ExitXentral();
    }
    
    echo json_encode(array('status'=>1));
    $this->app->ExitXentral();
}


function AdresseUSTPopup()
{
  $frame = $this->app->Secure->GetGET('frame');
  if($frame=='false')
  {
    // hier nur fenster größe anpassen
    $this->app->YUI->IframeDialog(650,530);
  } else {
    $this->AdresseUstprf();
    $this->app->BuildNavigation=false;
  }
}



function AdresseUstprf()
{
  $this->AdresseMenu();
  $id = $this->app->Secure->GetGET("id");

  $this->app->Tpl->Set("MESSAGE","<div class=\"warning\">Hinweis: Dies ist ein Beta-Feature. Bitte pr&uuml;fen Sie die Daten und melden uns per Ticket-System, wenn etwas bei Ihnen nicht stimmt.</div>");

  $this->app->YUI->DateiPopup('DATEIENPOPUP','adresseustprf','#e_id',array(
      'openbuttontarget'=>'DATEIBUTTON'
    ,'frompopup'=>'editUstprf','afteropen'=>'AFTERPOPUPOPEN'
  ));

  $laender = $this->app->erp->GetSelectLaenderliste();
  $laenderstr = '';

  foreach($laender as $key => $value){
    if($key != "0" && $land == $key){
      $laenderstr .= '<option value="' . $key . '" selected>' . $value . '</option>';
    }else{
      $laenderstr .= '<option value="' . $key . '">' . $value . '</option>';
    }
  }

  $this->app->Tpl->Add("LAENDER", $laenderstr);

  $this->app->Tpl->Set("ADRESSID", $id);

  $this->app->YUI->CkEditor("e_mailtext", "belege");

  $this->app->YUI->TableSearch('TAB1','adresse_ustprf', 'show','','',basename(__FILE__), __CLASS__);
  $this->app->YUI->TableSearch('PROTOKOLLTABELLE','adresse_ustprf_protokoll','show','','',basename(__FILE__), __CLASS__);


  $cmd = $this->app->Secure->GetGET('cmd');
  $ustprfid = (int)$this->app->Secure->GetPOST('ustprfid');
  $adressid = (int)$this->app->Secure->GetPOST('adressid');
  $name = trim($this->app->Secure->GetPOST('name'));
  $ustid = trim($this->app->Secure->GetPOST('ustid'));
  $plz = trim($this->app->Secure->GetPOST('plz'));
  $ort = trim($this->app->Secure->GetPOST('ort'));
  $strasse = trim($this->app->Secure->GetPOST('strasse'));
  $land = trim($this->app->Secure->GetPOST('land'));

  $ustid = str_replace(' ', '', $ustid);

  $url = html_entity_decode($name." ".$ort." ".$land, ENT_QUOTES | ENT_XML1);

  $ownvatok = false;

  include_once(dirname(__DIR__).'/lib/class.ustid.php');

  switch($cmd)
  {
    case "startwerte":
      $abwreadresse = $this->app->DB->Select("SELECT abweichende_rechnungsadresse FROM adresse WHERE id = '$adressid' LIMIT 1");

      if($abwreadresse == 1){
        $data = $this->app->DB->SelectRow("SELECT id, kundennummer AS nummer, rechnung_name AS name, rechnung_land AS land, ustid, rechnung_ort AS ort, rechnung_plz AS plz, rechnung_strasse AS strasse FROM adresse WHERE id = '$adressid' LIMIT 1");
      } else{
        $data = $this->app->DB->SelectRow("SELECT id, kundennummer AS nummer, land, name, ustid, ort, plz, strasse FROM adresse WHERE id = '$adressid' LIMIT 1");
      }

      if($data){
        $data['name'] = html_entity_decode($data['name'], ENT_QUOTES | ENT_XML1);
        $url = html_entity_decode($data['name'])." ".$data['ort']." ".$data['land'];

        $data['ustid'] = str_replace(' ', '', $data['ustid']);

        $data['uststatus']="angelegt";
        $data['status']=1;
      }
      $this->app->DB->Insert("INSERT INTO ustprf (adresse, ustid, name, ort, plz, strasse, land,status,datum) VALUES ('$adressid', '".$data['ustid']."', 
        '".$this->app->DB->real_escape_string($data['name'])."', '".$this->app->DB->real_escape_string($data['ort'])."', '".$data['plz']."', 
        '".$this->app->DB->real_escape_string($data['strasse'])."', '".$data['land']."','angelegt',NOW())");


      $ustprfid = $this->app->DB->GetInsertID();
      $data['ustprfid'] = $ustprfid;

      $protokoll = "Neue Prüfung angelegt";

    break;
    case "stammdaten":
      $this->app->DB->Update("UPDATE adresse SET name = '$name', ustid = '$ustid', plz = '$plz', ort = '$ort', strasse = '$strasse', land = '$land' WHERE id = '$adressid'");
      $this->app->DB->Update("UPDATE ustprf SET ustid = '$ustid', name = '$name', ort = '$ort', plz = '$plz', strasse = '$strasse', land = '$land' WHERE id = '$ustprfid'");
      $data['status']=1;
      $data['statusText']="Stammdaten wurden aktualisiert";
      $protokoll = $data['statusText'];
      $adressdaten = $name." | ".$ort." | ".$plz." | ".$strasse." | ".$land." | ".$ustid;
    break;
    case "online":
    case "brief":
      $ustland = substr($ustid, 0, 2);
      if($ustland!=""){
        $ustlaender = $this->app->erp->GetUSTEU(true);
        if(!in_array($ustland, $ustlaender)){
          $data['status']=0;
          $data['statusText']="Dieses Land ist für die Prüfung nicht verfügbar.\nEs können nur Abfragen über Firmen in der EU durchgeführt werden.";
          break;
        }
      }

      $this->app->DB->Update("UPDATE ustprf SET ustid='".$ustid."', name='".$name."',
        ort='".$ort."', plz='".$plz."', strasse='".$strasse."', land='".$land."' WHERE id='".$ustprfid."'");

      $adressdaten = $name." | ".$ort." | ".$plz." | ".$strasse." | ".$land." | ".$ustid;

      $UstStatus = $this->app->erp->CheckUst($this->app->erp->Firmendaten("steuernummer"), $ustid ,$name,$ort,$strasse,$plz,($cmd=="brief"?"ja":"nein"));

      if(is_array($UstStatus) && !is_numeric($UstStatus)){
        //$tmp = new USTID();
        $msg = $UstStatus['ERROR_MSG'];

        if(($UstStatus['ERROR_CODE']==200 || $UstStatus['ERROR_CODE']==222) && (($UstStatus['ERG_NAME']=="A" && $UstStatus['ERG_PLZ']=="A" && $UstStatus['ERG_ORT']=="A" && $UstStatus['ERG_STR']=="A") || $cmd=="brief")){
          $data['status']=1;
          if($cmd=="brief") {
            $this->app->DB->Update("UPDATE ustprf SET status='$cmd',datum_brief=NOW(),briefbestellt=NOW() WHERE id='$ustprfid'");
            $data['statusText']="Schriftliche Mitteilung des BZSt wurde angefordert!";
          }else{
            $this->app->DB->Update("UPDATE ustprf SET status='$cmd',datum_online=NOW() WHERE id='$ustprfid'");
            $data['statusText']=$msg;
          }
        }else if($UstStatus['ERROR_CODE']==200 || $UstStatus['ERROR_CODE']==222){
          $data['status']=0;

          $this->app->DB->Update("UPDATE ustprf SET status='teilweise',datum_online=NOW() WHERE id='$ustprfid'");
          if($UstStatus['ERG_NAME']=="B") $tmpmsg .= "\nName stimmt nicht mit BZSt Eintrag überein! ";
          if($UstStatus['ERG_PLZ']=="B") $tmpmsg .= "\nPLZ stimmt nicht mit BZSt Eintrag überein! ";
          if($UstStatus['ERG_ORT']=="B") $tmpmsg .= "\nOrt stimmt nicht mit BZSt Eintrag überein! ";
          if($UstStatus['ERG_STR']=="B") $tmpmsg .= "\nStrasse stimmt nicht mit BZSt Eintrag überein! ";

          if($UstStatus['ERG_NAME']=="C") $tmpmsg .= "\nName wurde vom BZSt nicht angefragt! ";
          if($UstStatus['ERG_PLZ']=="C") $tmpmsg .= "\nPLZ wurde vom BZSt nicht angefragt! ";
          if($UstStatus['ERG_ORT']=="C") $tmpmsg .= "\nOrt wurde vom BZSt nicht angefragt! ";
          if($UstStatus['ERG_STR']=="C") $tmpmsg .= "\nStrasse wurde vom BZSt nicht angefragt! ";

          if($UstStatus['ERG_NAME']=="D") $tmpmsg .= "\nName wird vom EU-Mitgliedsstaat nicht mitgeteilt! ";
          if($UstStatus['ERG_PLZ']=="D") $tmpmsg .= "\nPLZ wird vom EU-Mitgliedsstaat nicht mitgeteilt! ";
          if($UstStatus['ERG_ORT']=="D") $tmpmsg .= "\nOrt wird vom EU-Mitgliedsstaat nicht mitgeteilt! ";
          if($UstStatus['ERG_STR']=="D") $tmpmsg .= "\nStrasse wird vom EU-Mitgliedsstaat nicht mitgeteilt! ";

          $data['ustprfid'] = $ustprfid;
          $data['adressdaten'] = $adressdaten;
          $data['error_code'] = $UstStatus['ERROR_CODE'];
          $data['statusText']=trim($tmpmsg);
        }else{
          $data['status']=0;
          $this->app->DB->Update("UPDATE ustprf SET status='fehlgeschlagen',datum_online=NOW() WHERE id='$ustprfid'");
          if($UstStatus['ERROR_CODE'] != ''){
            $data['statusText']=$msg.' (Code: '.$UstStatus['ERROR_CODE'].')';
          }else{
            $data['statusText'] = $msg.' (Code: Der Server des Bundeszentralamtes für Steuern ist derzeit nicht erreichbar.\nBitte probieren Sie es zu einem späteren Zeitpunkt noch einmal.)';
          }
        }
        $protokoll = $data['statusText'];
      }
      

      $data['uststatus'] = $this->app->DB->Select("SELECT status FROM ustprf WHERE id='$ustprfid'");
      $data['datum_online'] = $this->app->DB->Select("SELECT DATE_FORMAT(datum_online,'%d.%m.%Y') as datum_online FROM ustprf WHERE id='$ustprfid'");
      $data['datum_brief'] = $this->app->DB->Select("SELECT DATE_FORMAT(datum_brief,'%d.%m.%Y') as datum_brief FROM ustprf WHERE id='$ustprfid'");
      
      if($data['datum_online'] == '00.00.0000'){
        $data['datum_online'] = '-';
      }

      if($data['datum_brief'] == '00.00.0000'){
        $data['datum_brief'] = '-';
      }
    break;
    case "delete":
      if($ustprfid > 0){
        $this->app->DB->Delete("DELETE FROM ustprf WHERE id='" . $ustprfid . "'");
        $this->app->DB->Delete("DELETE FROM ustprf_protokoll WHERE ustprf_id='" . $ustprfid . "'");
        $data['status'] = 1;
      }
        break;


    case "get":
      $data = $this->app->DB->SelectRow("SELECT *,id as ustprfid, status as uststatus,DATE_FORMAT(datum_online,'%d.%m.%Y') as datum_online,DATE_FORMAT(datum_brief,'%d.%m.%Y') as datum_brief FROM ustprf WHERE id='".$ustprfid."'");

      $url = html_entity_decode($data['name'])." ".$data['ort']." ".$data['land'];

      if($data['datum_online'] == '00.00.0000'){
        $data['datum_online'] = '-';
      }

      if($data['datum_brief'] == '00.00.0000'){
        $data['datum_brief'] = '-';
      }
      
      $data['status']=1;
    break;

    case "gueltigmarkieren":
      if($ustprfid > 0){
        $this->app->DB->Update("UPDATE ustprf SET status='$cmd',datum_online=NOW() WHERE id='$ustprfid'");
        $protokoll = "Manuell als g&uuml;ltig markiert.";
        $adressdaten = $name." | ".$ort." | ".$plz." | ".$strasse." | ".$land." | ".$ustid;
        $data['status'] = 1;
        $data['uststatus'] = $this->app->DB->Select("SELECT status FROM ustprf WHERE id='$ustprfid'");
        $data['datum_online'] = $this->app->DB->Select("SELECT DATE_FORMAT(datum_online,'%d.%m.%Y') as datum_online FROM ustprf WHERE id='$ustprfid'");
      }else{
        $data['status'] = 0;
        $data['statusText'] = 'Keine gültige Ustprf-ID';
      }
    break;
  }
 
  if($ustprfid > 0 && $protokoll!='' && $cmd!=='delete')
  {
    $this->app->DB->Insert("INSERT INTO ustprf_protokoll (ustprf_id, zeit, bemerkung, bearbeiter,logdatei, daten)  VALUES ('".$ustprfid."',NOW(),
        '$protokoll', '".$this->app->User->GetName()."',NOW(), '".$adressdaten."')");
  }

  if($cmd!='')
  { 
    $data['url'] = "http://www.google.de/search?q=$url&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:de:official&client=firefox-a";
    echo json_encode($data);
    $this->app->ExitXentral();
  }

  $this->app->Tpl->Parse('PAGE',"adresse_ustprf.tpl");
}

function AdresseProtokoll($lid)
{
  if($lid!=""){
    $table = new EasyTable($this->app);

    $table->Query("SELECT DATE_FORMAT(zeit, '%d.%m.%Y %H:%i') AS Datum, bemerkung,bearbeiter FROM ustprf_protokoll WHERE ustprf_id='$lid' ORDER BY zeit DESC", 0, "noAction");

    $table->DisplayNew('PROTOKOLL',"", "noAction");

  }
}


function AdresseVerbindlichkeiten()
{
  $this->AdresseMenu();

  $this->app->Tpl->Parse('PAGE',"adresse_verbindlichkeiten.tpl");
}

function AdresseKundeArtikel()
{
  $parameter = $this->app->User->GetParameter('table_filter_adressekundeartikel');
  $parameter = json_decode($parameter, true);

  $cmd = $this->app->Secure->GetGET('cmd');
  if($cmd==='edit') {
    $id = (int)$this->app->Secure->GetPOST('id');
    $art = (int)$this->app->Secure->GetPOST('art');
    $tabelle = "";

    if($art == 1){
      $tabelle = "auftrag";
    }elseif($art == 2){
      $tabelle = "rechnung";
    }elseif($art == 3){
      $tabelle = "gutschrift";
    }elseif($art == 4){
      $tabelle = "angebot";
    }elseif($art == 5){
      $tabelle = "lieferschein";
    }elseif($art == 6){
      $tabelle = "produktion";
    }
      
    $data = $this->app->DB->SelectRow("SELECT id, internerkommentar FROM ".$tabelle."_position WHERE id = '$id' LIMIT 1");
          
    if($data){
      $data['art'] = $tabelle;
             
    }else{
      $data['id'] = 0;
      $data['internerkommentar'] = 0;
      $data['art'] = '';
    }
    echo json_encode($data);
    $this->app->ExitXentral();

  }
  if($cmd==='save'){
    $id = $this->app->Secure->GetPOST('id');
    $internerkommentar = $this->app->Secure->GetPOST('internerkommentar');
    $art = $this->app->Secure->GetPOST('art');

    $error = '';

    if($error == ''){
      if($id > 0){
        $this->app->DB->Update("UPDATE ".$art."_position SET internerkommentar = '$internerkommentar' WHERE id = '$id'");
        echo json_encode(array('status'=>1));
        $this->app->ExitXentral();
      }
    }else{
      echo json_encode(array('status'=>0,'statusText'=>$error));
      $this->app->ExitXentral();
    }
  }


  if($this->app->Secure->GetPOST('speichern'))
  {
    $internerkommentar = $this->app->Secure->GetPOST('internerkommentar');
    $rechnung_position = (int)$this->app->Secure->GetPOST('rechnung_position');
    if($rechnung_position)
    {
      $rechnung = $this->app->DB->Select("SELECT rechnung FROM rechnung_position WHERE id = '$rechnung_position' LIMIT 1");
      if($rechnung)
      {
        $id = (int)$this->app->Secure->GetGET('id');
        if($id && $this->app->DB->Select("SELECT adresse FROM rechnung WHERE id = '$rechnung' AND adresse = '$id' LIMIT 1"))
        {
          $this->app->DB->Update("UPDATE rechnung_position SET internerkommentar = '$internerkommentar' WHERE id = '$rechnung_position' LIMIT 1");
        }
      }
    }
  }
  $this->AdresseMenu();
  $this->app->Tpl->Parse('TAB1','adresse_kundeartikel_table_filter.tpl');
  $this->app->YUI->TableSearch('TAB1','adresseartikel');

  $this->app->YUI->TableSearch('TAB7','adresse_artikel_gekaufte', 'show','','',basename(__FILE__), __CLASS__);

  $this->app->Tpl->Parse('PAGE','adresse_artikel.tpl');
}

public function AdresseLieferantArtikel()
{
  $this->AdresseMenu();

  $this->app->YUI->TableSearch('TAB1','lieferantartikel', 'show','','',basename(__FILE__), __CLASS__);
  $this->app->Tpl->Parse('PAGE','adresse_lieferprogramm.tpl');
}

function AdresseBestellungMarkiert()
{
  $id = $this->app->Secure->GetGET('id');
  $sid = $this->app->Secure->GetPOST('sid');
  if($sid > 0){
    $geliefert = $this->app->DB->Select("SELECT geliefert FROM bestellung_position WHERE id='$sid' LIMIT 1");
    $menge = $this->app->DB->Select("SELECT menge FROM bestellung_position WHERE id='$sid' LIMIT 1");
    $tmp = $menge - $geliefert;
    if($tmp < 0){
      $tmp = 0;
    }
    $this->app->DB->Update("UPDATE bestellung_position SET abgeschlossen='1', mengemanuellgeliefertaktiviert='$tmp', geliefert='$menge',manuellgeliefertbearbeiter='" . $this->app->User->GetName() . "' WHERE id='$sid' LIMIT 1");
  }
  echo json_encode(array('status'=>1));
  $this->app->ExitXentral();
}


function AdresseOffeneBestellungen()
{
  $id = $this->app->Secure->GetGET('id');
  $this->app->Tpl->Set('ID',$id);

  $this->AdresseMenu();

  $this->app->Tpl->Set('UEBERSCHRIFT1','Bestellungen');

  $this->app->YUI->TableSearch('TAB1', 'adressebestellungen');

  $this->app->Tpl->Set('TAB1SELECT','selected');
  $this->app->Tpl->Set('EXTEND','');
  $this->app->Tpl->Set('INHALT','');

  $this->app->YUI->TableSearch('TAB2', 'adressebestellungen_artikel');
  $this->app->Tpl->Parse('PAGE', 'adressebestellung.tpl');
}

function AdresseAccounts()
{
  $this->AdresseMenu();
  $id = $this->app->Secure->GetGET('id');
  $lid = $this->app->Secure->GetGET("lid");
  $cmd = $this->app->Secure->GetGET('cmd');

  $iframe = $this->app->Secure->GetGET("iframe");


  if($cmd === "save"){
    $bearbeitungsid = (int)$this->app->Secure->GetPOST('id');
    $bezeichnung = trim($this->app->Secure->GetPOST('bezeichnung'));
    $benutzername = trim($this->app->Secure->GetPOST('benutzername'));
    $passwort = trim($this->app->Secure->GetPOST('passwort'));
    $art = trim($this->app->Secure->GetPOST('art'));
    $url = trim($this->app->Secure->GetPOST('url'));
    $email = trim($this->app->Secure->GetPOST('email'));
    $notiz = trim($this->app->Secure->GetPOST('notiz'));
    $gueltigab = trim($this->app->Secure->GetPOST('gueltigab'));
    $gueltigbis = trim($this->app->Secure->GetPOST('gueltigbis'));
    $aktiv = $this->app->Secure->GetPOST('aktiv');
    $adressid = (int)$this->app->Secure->GetPOST('adressid');
    
    $error = "";

    if($bezeichnung == ""){
      $error .= "Bitte Bezeichnung ausfüllen\n";
    }

    if($gueltigab == "" || $gueltigab == "0000-00-00"){
      $gueltigab = "0000-00-00"; 
    }else{
      $gueltigab = date('Y-m-d',strtotime($gueltigab));
    }

    if($gueltigbis == "" || $gueltigbis == "0000-00-00"){
      $gueltigbis = "0000-00-00";
    }else{
      $gueltigbis = date('Y-m-d',strtotime($gueltigbis));
    }
    
    if($error == ''){
      if($bearbeitungsid){
        $this->app->DB->Update("UPDATE adresse_accounts SET bezeichnung = '$bezeichnung', benutzername = '$benutzername', passwort = '$passwort', art = '$art', url = '$url', email = '$email', notiz = '$notiz', gueltig_ab = '$gueltigab', gueltig_bis = '$gueltigbis', aktiv = '$aktiv' WHERE id = '$bearbeitungsid'");
                 
        echo json_encode(array('status'=>1));
        $this->app->ExitXentral();
      }
      $this->app->DB->Insert("INSERT INTO adresse_accounts (bezeichnung, benutzername, passwort, art, url, email, notiz, gueltig_ab, gueltig_bis, aktiv, adresse) VALUES ('$bezeichnung', '$benutzername', '$passwort', '$art', '$url', '$email', '$notiz', '$gueltigab', '$gueltigbis', '$aktiv', '$adressid')");
      echo json_encode(array('status'=>1));
      $this->app->ExitXentral();
    }
    echo json_encode(array('status'=>0,'statusText'=>$error));
    $this->app->ExitXentral();



  }
  if($cmd === 'edit'){

    $bearbeitungsid = (int)$this->app->Secure->GetPOST('id');

    $data = $this->app->DB->SelectRow("SELECT id, bezeichnung, benutzername, passwort, art, url, email, notiz, gueltig_ab, gueltig_bis, aktiv FROM adresse_accounts WHERE id = '$bearbeitungsid' LIMIT 1");
      
    if($data){
      if($data['gueltig_ab'] == "0000-00-00"){
        $data['gueltig_ab'] = "";
      }else{
        $data['gueltig_ab'] = date('d.m.Y',strtotime($data['gueltig_ab']));
      }
      if($data['gueltig_bis'] == "0000-00-00"){
        $data['gueltig_bis'] = "";
      }else{
        $data['gueltig_bis'] = date('d.m.Y',strtotime($data['gueltig_bis']));
      }      
    }else{
      $data['id'] = 0;
      $data['bezeichnung'] = '';
      $data['benutzername'] = '';
      $data['passwort'] = '';
      $data['art'] = '';
      $data['url'] = '';
      $data['email'] = '';
      $data['notiz'] = '';
      $data['gueltig_ab'] = '';
      $data['gueltig_bis'] = '';
      $data['aktiv'] = 0;
    }
    echo json_encode($data);
    $this->app->ExitXentral();

  }
  if($cmd === 'delete'){
    $loeschid = (int) $this->app->Secure->GetPOST('eid');
    $this->app->DB->Update("DELETE FROM adresse_accounts WHERE id = '$loeschid' LIMIT 1");
        
    echo json_encode(array('status'=>1));
    $this->app->ExitXentral();
  }




  if($iframe=="true")
    $this->app->BuildNavigation=false;

  if($delete==1)
  {
    $this->app->DB->Delete("DELETE FROM adresse_accounts WHERE id='$lid' AND adresse='$id' LIMIT 1");
    $this->app->Location->execute("index.php?module=adresse&action=accounts$add_cmd&id=$id&iframe=$iframe");
  }
  
  $this->app->YUI->AutoComplete("e_art", "accountart");
  $this->app->YUI->CkEditor("e_notiz","basic",array('height'=>'11em', 'width'=>'35em'));
  $this->app->YUI->DatePicker('e_gueltigab');
  $this->app->YUI->DatePicker('e_gueltigbis');


  //Formula lieferadresse
  // easy table mit arbeitspaketen YUI als template 
  $this->app->YUI->TableSearch('TAB1',"adresse_accounts");
  //$this->app->Tpl->Parse('TAB1',"rahmen70.tpl");
  $this->app->Tpl->Set('AKTIV_TAB1',"selected");

  if($iframe=="true")
    $this->app->Tpl->Parse('PAGE',"adresse_accounts_uebersicht_popup.tpl");
  else
    $this->app->Tpl->Parse('PAGE',"adresse_accounts_uebersicht.tpl");

}


function AdresseAnsprechpartnerPopup()
{
  $frame = $this->app->Secure->GetGET("frame");
  $id = $this->app->Secure->GetGET('id');
  $cmd= $this->app->Secure->GetPOST('cmd');

  if($cmd=="alslieferadresse")
    $als_lieferadresse=true;
  else
    $als_lieferadresse=false;


  $this->AdresseAnsprechpartner($als_lieferadresse);
  $this->app->BuildNavigation=false;
}

function AdresseAnsprechpartnerLieferadressePopup()
{
  $frame = $this->app->Secure->GetGET("frame");
  $id = $this->app->Secure->GetGET('id');

  $this->AdresseAnsprechpartner(true);
  $this->app->BuildNavigation=false;
}

function AdresseStammdatenLieferadressePopup()
{
  $frame = $this->app->Secure->GetGET("frame");
  $id = $this->app->Secure->GetGET('id');

  $this->AdresseStammdaten(true);
  $this->app->BuildNavigation=false;
}



function AdresseStammdaten($als_lieferadresse=false)
{
  $this->AdresseMenu();
  $id = $this->app->Secure->GetGET('id');
  $lid = $this->app->Secure->GetGET("lid");
  $delete = $this->app->Secure->GetGET("delete");
  $create= $this->app->Secure->GetGET("create");
  $cmd= $this->app->Secure->GetPOST('cmd');

  $als_verzollungsadresse = false;
  $als_ansprechpartner = false;
  if($cmd=="alslieferadresse")
  {
    $this->app->Tpl->Set('STARTDISABLEANREDE',"<!--");
    $this->app->Tpl->Set('ENDEDISABLEANREDE',"-->");
    $als_lieferadresse=true;
    $add_cmd = "&cmd=alslieferadresse";
  }elseif($cmd == "alsverzollungadresse")
  {
    $this->app->Tpl->Set('STARTDISABLEANREDE',"<!--");
    $this->app->Tpl->Set('ENDEDISABLEANREDE',"-->");
    $als_verzollungsadresse=true;
    $add_cmd = "&cmd=alsverzollungadresse";
  } elseif($cmd == "alsansprechpartner")
  {
    $this->app->Tpl->Set('STARTDISABLEANREDE',"<!--");
    $this->app->Tpl->Set('ENDEDISABLEANREDE',"-->");
    $als_ansprechpartner=true;
    $add_cmd = "&cmd=alsansprechpartner";
  }
  

  $iframe = $this->app->Secure->GetGET("iframe");

  if($iframe=="true")
    $this->app->BuildNavigation=false;

  // neues arbeitspaket

  if($iframe=="true") {
    if($als_lieferadresse)
    {
      $einfuegen = "<a onclick=\"AnsprechpartnerLieferadresse('%value%'); parent.closeIframe();\"><img src=\"./themes/[THEME]/images/down.png\" border=\"0\"></a>";
    }elseif($als_verzollungsadresse)
    {
      $einfuegen = "<a onclick=\"Verzolladresse('%value%'); parent.closeIframe();\"><img src=\"./themes/[THEME]/images/down.png\" border=\"0\"></a>";
    }elseif($als_ansprechpartner)
    {
      $einfuegen = "<a onclick=\"AdresseAnsprechpartner('%value%'); parent.closeIframe();\"><img src=\"./themes/[THEME]/images/down.png\" border=\"0\"></a>";
    }
    else
      $einfuegen = "<a onclick=\"Ansprechpartner('%value%'); parent.closeIframe();\"><img src=\"./themes/[THEME]/images/down.png\" border=\"0\"></a>";
  }
  //Formula lieferadresse
  // easy table mit arbeitspaketen YUI als template 
  if($als_lieferadresse)
  {
    $this->app->YUI->TableSearch('TAB1',"adresse_stammdatenlieferadresselist");
  }elseif($als_verzollungsadresse)
  {
    $this->app->YUI->TableSearch('TAB1',"adresse_stammdatenverzollungadresselist");
  }
  else
    $this->app->YUI->TableSearch('TAB1',"adresse_ansprechpartnerlist"); //TODO fehlt
  //$this->app->Tpl->Parse('TAB1',"rahmen70.tpl");
  $this->app->Tpl->Set('AKTIV_TAB1',"selected");

  if($iframe=="true")
    $this->app->Tpl->Parse('PAGE',"ansprechpartneruebersicht_popup.tpl");
  else
    $this->app->Tpl->Parse('PAGE',"ansprechpartneruebersicht.tpl");
}


function AdresseAnsprechpartner($als_lieferadresse=false)
{

  $id = $this->app->DB->real_escape_string($this->app->Secure->GetGET('id'));
  $lid = $this->app->DB->real_escape_string($this->app->Secure->GetGET('lid'));
  
  if($this->app->Secure->GetGET('cmd')==='changegr') {
    $gruppe = (int)$this->app->Secure->GetPOST('gruppe');
    $wert = $this->app->Secure->GetPOST('wert')?1:0;
    if($id && $lid && $gruppe)
    {
      $check = $this->app->DB->Select("SELECT id FROM ansprechpartner_gruppen WHERE gruppe = '$gruppe' AND ansprechpartner = '$lid' LIMIT 1");
      if($check)
      {
        $this->app->DB->Update("UPDATE ansprechpartner_gruppen SET aktiv = '$wert' WHERE id = '$check' LIMIT 1");
      }elseif($wert){
        $this->app->DB->Insert("INSERT INTO ansprechpartner_gruppen (gruppe, ansprechpartner, aktiv) VALUES ('$gruppe', '$lid', 1)");
      }
    }
    echo json_decode(array('status'=>1));
    $this->app->ExitXentral();
  }

  $delete = $this->app->Secure->GetGET("delete");
  $create= $this->app->Secure->GetGET("create");
  $cmd = $this->app->Secure->GetGET('cmd');

  //$ansprechpartnerspeichern = "";
  $ansprechpartnerspeichern = $this->app->Secure->GetPOST('ansprechpartnerspeichern');
  if($ansprechpartnerspeichern != ""){
    $cmd = "save"; 
  }

  switch ($cmd) {
    case 'get':
      
      $data = $this->app->DB->SelectRow("SELECT * FROM ansprechpartner WHERE id = '$lid'");
      $data['geburtstag'] = $this->app->String->Convert($data['geburtstag'],"%1-%2-%3","%3.%2.%1");
      echo json_encode($data);
      $this->app->ExitXentral();
      break;
    case 'save':
      $lid = $this->app->Secure->GetPOST('lid');
      $typ = $this->app->Secure->GetPOST('typ');
      $land = $this->app->Secure->GetPOST('land');
      $name = $this->app->Secure->GetPOST('name');
      $titel = $this->app->Secure->GetPOST('titel');
      $bereich = $this->app->Secure->GetPOST('bereich');
      $abteilung = $this->app->Secure->GetPOST('abteilung');
      $unterabteilung = $this->app->Secure->GetPOST('unterabteilung');
      $adresszusatz = $this->app->Secure->GetPOST('adresszusatz');
      $anschreiben = $this->app->Secure->GetPOST('anschreiben');
      $vorname = $this->app->Secure->GetPOST('vorname');
      $geburtstag = $this->app->String->Convert($this->app->Secure->GetPOST('geburtstag'),"%3.%2.%1","%1-%2-%3");
      $geburtstagkalender = $this->app->Secure->GetPOST('geburtstagkalender');
      $geburtstagskarte = $this->app->Secure->GetPOST('geburtstagskarte');
      $marketingsperre = $this->app->Secure->GetPOST('marketingsperre');
      $strasse = $this->app->Secure->GetPOST('strasse');
      $plz = $this->app->Secure->GetPOST('plz');
      $ort = $this->app->Secure->GetPOST('ort');
      $email = $this->app->Secure->GetPOST('email');
      $telefon = $this->app->Secure->GetPOST('telefon');
      $telefax = $this->app->Secure->GetPOST('telefax');
      $mobil = $this->app->Secure->GetPOST('mobil');
      $sonstiges = $this->app->Secure->GetPOST('sonstiges');
      $internebemerkung = $this->app->Secure->GetPOST('interne_bemerkung');

      $error = "";

      if(trim($name) == ""){
        $error .= "Bitte Name ausfüllen"."\n";
      }

      if($error == ""){
        if($lid == '0'){
          //Neuen Eintrag anlegen
          $this->app->DB->Insert("INSERT INTO ansprechpartner (typ, name, bereich, abteilung, unterabteilung, land, strasse, ort, plz, telefon, telefax, email, sonstiges, adresszusatz, adresse, logdatei, mobil, titel, anschreiben, ansprechpartner_land, vorname, geburtstag, geburtstagkalender, geburtstagskarte, marketingsperre, interne_bemerkung) VALUES ('$typ', '$name', '$bereich','$abteilung','$unterabteilung','$land','$strasse','$ort','$plz','$telefon','$telefax', '$email', '$sonstiges', '$adresszusatz','$id',NOW(),'$mobil','$titel','$anschreiben','$land','$vorname','$geburtstag', '$geburtstagkalender', '$geburtstagskarte', '$marketingsperre', '$internebemerkung')");
          $lid = $this->app->DB->GetInsertID();
          if (!empty($lid)) {
            $this->app->erp->RunHook('contact_person_created', 1, $lid);
          }
          $gruppen = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('gruppen'));
          $gruppenarray = explode("|", $gruppen);
 
          for ($i=0; $i < (!empty($gruppenarray)?count($gruppenarray):0) ; $i++) { 
            if($gruppenarray[$i] != ''){
              $gruppenid = substr($gruppenarray[$i], 3);
              $this->app->DB->Insert("INSERT INTO ansprechpartner_gruppen (ansprechpartner, gruppe, aktiv) VALUES ('$lid', '".$gruppenid."', '1')");
            }
          }
          if($ansprechpartnerspeichern == ""){
            echo json_encode(array('status'=>1));
            $this->app->ExitXentral();
          }
        }else{
          //Alten Eintrag updaten
          $this->app->DB->Update("UPDATE ansprechpartner SET typ ='$typ', name = '$name', bereich = '$bereich', abteilung = '$abteilung', unterabteilung = '$unterabteilung', land = '$land', strasse = '$strasse', ort = '$ort', plz = '$plz', telefon = '$telefon', telefax = '$telefax', email = '$email', sonstiges = '$sonstiges', adresszusatz = '$adresszusatz', mobil = '$mobil', titel = '$titel', anschreiben = '$anschreiben', land = '$land', vorname = '$vorname', geburtstag = '$geburtstag', geburtstagkalender =  '$geburtstagkalender', geburtstagskarte = '$geburtstagskarte', marketingsperre = '$marketingsperre', interne_bemerkung = '$internebemerkung' WHERE id = '$lid'");
          $this->app->erp->RunHook('contact_person_updated', 1, $lid);
          if($ansprechpartnerspeichern == ''){
            echo json_encode(array('status'=>1));
            $this->app->ExitXentral();
          }
        }
      }else{
        if($ansprechpartnerspeichern == ''){
          echo json_encode(array('status'=>0,'statusText'=>$error));
          $this->app->ExitXentral();
        }
      }
      
      break;
     case 'change':
      $lid = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('lid'));
      $wert = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('wert'));
      $gruppe = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('gruppe'));
      if($lid != 0){
          $vorhanden = $this->app->DB->Select("SELECT id FROM ansprechpartner_gruppen WHERE ansprechpartner = '$lid' AND gruppe = '$gruppe'");
        if($vorhanden){
          $this->app->DB->Update("UPDATE ansprechpartner_gruppen SET aktiv = $wert WHERE ansprechpartner = '$lid' AND gruppe = '$gruppe'");
        }else{
          $this->app->DB->Insert("INSERT INTO ansprechpartner_gruppen (ansprechpartner, gruppe, aktiv) VALUES ('$lid', '$gruppe', '$wert')");
        }
      }
      echo json_encode('success');
      $this->app->ExitXentral();
      break;          
    case 'delete':
      $lid = $this->app->DB->real_escape_string($this->app->Secure->GetGET('lid'));
      $this->app->erp->RunHook('contact_person_deleted', 1, $lid);
      $this->app->DB->Delete("DELETE FROM ansprechpartner WHERE id = '$lid'");
      echo json_encode('success');
      $this->app->ExitXentral();
      break;
    default:
      break;
  }


  if($cmd=="alslieferadresse")
  {
    $this->app->Tpl->Set('STARTDISABLEANREDE',"<!--");
    $this->app->Tpl->Set('ENDEDISABLEANREDE',"-->");
    $als_lieferadresse=true;
    $add_cmd = "&cmd=alslieferadresse";
  }

  $iframe = $this->app->Secure->GetGET("iframe");

  if($iframe=="true")
    $this->app->BuildNavigation=false;


  if($delete==1)
  {
    $this->app->erp->RunHook('contact_person_deleted', 1, $lid);
    $this->app->DB->Delete("DELETE FROM ansprechpartner WHERE id='$lid' AND adresse='$id' LIMIT 1");
    $this->app->Location->execute("index.php?module=adresse&action=ansprechpartner$add_cmd&id=$id&iframe=$iframe");
  }
  $this->AdresseMenu();
  if($iframe != "true")
  {
    /*
    $gruppen = $this->app->DB->SelectArr("SELECT ag.aktiv as agaktiv, gr.* FROM gruppen gr LEFT JOIN ansprechpartner_gruppen ag ON gr.id = ag.gruppe and ag.ansprechpartner = '$lid' WHERE art != 'preisgruppe'");
    if($gruppen)
    {
      $this->app->Tpl->Add('GRUPPEN','<table>');
      
      foreach($gruppen as $gruppe)
      {
        $this->app->Tpl->Add('GRUPPEN','<tr><td><input type="checkbox" onchange="grchange('.$gruppe['id'].', this);" id="gr_'.$gruppe['id'].'" name="gr_'.$gruppe['id'].'" '.($gruppe['agaktiv']?' checked="checked" ':'').' '.($lid?'':' disabled ').' /></td><td>'.$gruppe['name'].'</td></tr>');
      }
      $this->app->Tpl->Add('GRUPPEN','</table>');
    }*/

    $this->app->YUI->TableSearch('GRUPPEN','adresse_ansprechpartnergruppen', "show","","",basename(__FILE__), __CLASS__);
    $this->app->Tpl->Add('GRUPPEN','<div style="overflow:hidden;width:0;height:0;padding:0;margin:0;"><input type="text" value="'.$lid.'" id="filterlid" name="filterlid" /></div>
      <script>$(document).ready(function() { $(\'#filterlid\').trigger(\'change\'); });
      </script>
      ');
    
    $this->app->Tpl->Set('ID',$id);
    $this->app->Tpl->Set('LID',$lid);
  } else {
    $this->app->Tpl->Set('GRUPPEAUSBLENDENSTART',"<!--");
    $this->app->Tpl->Set('GRUPPEAUSBLENDENENDE',"-->");
  }

  $this->app->YUI->DatePicker("geburtstag");
  

  // neues arbeitspaket
  /*
  $widget = new WidgetAnsprechpartner($this->app,'TAB1');
  $widget->form->SpecialActionAfterExecute("none",
      "index.php?module=adresse&action=ansprechpartner&id=$id&iframe=".$iframe.$add_cmd);
  if($lid > 0)
  {


    $this->app->Tpl->Set('BUTTON','
        <input type="button" onclick="copyTextToClipboard(\''.$this->app->erp->AdresseAnschriftString($lid,true).'\')" value="Adresse in Zwischenspeicher">
      ');

    $widget->form->SpecialActionAfterExecute("none",
        "index.php?module=adresse&action=ansprechpartner&id=$id&iframe=".$iframe.$add_cmd);
    $widget->Edit();
  }
  else
  {
    $widget->Create();
  }*/

  if($iframe=="true") {
    if($als_lieferadresse)
      $einfuegen = "<a onclick=\"AnsprechpartnerLieferadresse('%value%'); parent.closeIframe();\"><img src=\"./themes/[THEME]/images/down.png\" border=\"0\"></a>";
    else
      $einfuegen = "<a onclick=\"Ansprechpartner('%value%'); parent.closeIframe();\"><img src=\"./themes/[THEME]/images/down.png\" border=\"0\"></a>";
  }
  //Formula lieferadresse
  // easy table mit arbeitspaketen YUI als template 
  /*if($als_lieferadresse)
  {
    $this->app->Tpl->Add("TAB1","<fieldset><legend>Filter</legend><input type=\"checkbox\" name=\"alle\" id=\"alle\">&nbsp;auf alle Ansprechpartner zugreifen</fieldset>");
    $this->app->YUI->TableSearch('TAB1',"adresse_ansprechpartnerlieferadresselist");
  }
  else*/
    $this->app->YUI->TableSearch('TAB1',"adresse_ansprechpartnerlist");
  //$this->app->Tpl->Parse('TAB1',"rahmen70.tpl");
  $this->app->Tpl->Set('AKTIV_TAB1',"selected");
  
  $this->app->Tpl->Set('ADRESSID',$id); 
  
  $adresstypen = $this->app->DB->SelectArr("SELECT type, bezeichnung FROM adresse_typ WHERE aktiv = 1 AND geloescht = 0".$this->app->erp->ProjektRechte());

  $laender = $this->app->erp->GetSelectLaenderliste();

  if($lid > 0){
    $adresseland = $this->app->DB->Select("SELECT land FROM ansprechpartner WHERE id = '$lid' LIMIT 1");
  }else{
    $adresseland = $this->app->DB->Select("SELECT land FROM adresse WHERE id = '$id' LIMIT 1");
  }
  
  if($adresseland == ""){
    $this->app->erp->Firmendaten('land');
  }


  if($adresstypen != ""){
    $lieferadressetyp = "";
    foreach($adresstypen as $key=>$value){
      $lieferadressetyp .= '<option value="'.$value['type'].'">'.$value['bezeichnung'].'</option>';
    }    
  }

  if($laender != ""){
    $lieferadresselaender = "";
    foreach ($laender as $landKey => $land) {
      $lieferadresselaender .= '<option '.($adresseland == $landKey?' selected="selected" ':'').' value="' . $landKey . '">' . $land . '</option>';
    }
  }
    
  if($iframe=="true"){
    $this->app->Tpl->Set("ANSPRECHPARTNERTYP", $lieferadressetyp);
  }
    
  $this->app->Tpl->Add("LANDSELECTED", $adresseland);
  $this->app->Tpl->Add("ANSPRECHPARTNERLAENDER", $lieferadresselaender);


  $this->app->YUI->CkEditor("interne_bemerkung", "basic");


  if($iframe=="true")
    $this->app->Tpl->Parse('PAGE',"ansprechpartneruebersicht_popup.tpl");
  else
    $this->app->Tpl->Parse('PAGE',"ansprechpartneruebersicht.tpl");
}

function AdresseAnsprechpartnerEditPopup()
{
  $frame = $this->app->Secure->GetGET("frame");
  $id = $this->app->Secure->GetGET('id');

  if($frame=="false")
  {
    // hier nur fenster größe anpassen
    $this->app->YUI->IframeDialog(600,320);
  } else {
    // nach page inhalt des dialogs ausgeben
    $widget = new WidgetAnsprechpartner($this->app,'PAGE');
    $adresse = $this->app->DB->Select("SELECT adresse FROM ansprechpartner WHERE id='$id' LIMIT 1");
    $widget->form->SpecialActionAfterExecute("close_refresh",
        "index.php?module=adresse&action=ansprechpartner&id=$adresse");

    $widget->Edit();
    $this->app->BuildNavigation=false;
  }
}




function AdresseLieferadressePopup()
{
  $frame = $this->app->Secure->GetGET("frame");
  $id = $this->app->Secure->GetGET('id');
  $this->AdresseLieferadresse();
  $this->app->BuildNavigation=false;
}


function AdresseLieferadresse()
{
  $this->AdresseMenu();
  $id = $this->app->DB->real_escape_string($this->app->Secure->GetGET('id'));
  $lid = $this->app->DB->real_escape_string($this->app->Secure->GetGET('lid'));

  $delete = $this->app->Secure->GetGET("delete");
  $create = $this->app->Secure->GetGET("create");
  $module = $this->app->Secure->GetGET("module");
  $action = $this->app->Secure->GetGET("action");
  $iframe = $this->app->Secure->GetGET("iframe");

  $cmd = $this->app->Secure->GetGET('cmd');

  $lieferadressespeichern = $this->app->Secure->GetPOST('lieferadressespeichern');

  if($lieferadressespeichern != ""){
    $cmd = "save"; 
  }

  switch ($cmd) {
    case 'get':
      $data = $this->app->DB->SelectRow("SELECT * FROM lieferadressen WHERE id = '$lid'");
      echo json_encode($data);
      $this->app->ExitXentral();
      break;
    case 'save':
      $lid = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('lid'));
      $typ = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('typ'));
      $name = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('name'));
      $abteilung = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('abteilung'));
      $unterabteilung = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('unterabteilung'));
      $land = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('land'));
      $strasse = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('strasse'));
      $ort = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('ort'));
      $plz = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('plz'));
      $telefon = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('telefon'));
      $email = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('email'));
      $adresszusatz = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('adresszusatz'));
      $standardlieferadresse = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('standardlieferadresse'));
      $gln = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('gln'));
      $ustid = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('ustid'));
      $lieferbedingung = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('lieferbedingung'));
      $ust_befreit = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('ust_befreit'));
      $internebemerkung = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('interne_bemerkung'));
      $hinweis = $this->app->DB->real_escape_string($this->app->Secure->GetPOST('hinweis'));

      $error = "";

      if(trim($name) == ""){
        $error .= "Bitte Name ausfüllen"."\n";
      }

      if($standardlieferadresse == 1){
        $this->app->DB->Update("UPDATE lieferadressen SET standardlieferadresse = 0 WHERE adresse='$id'");
      }

      if($lieferadressespeichern != ''){
        if($error != ''){
          $this->app->Tpl->Add("MESSAGE", "<div class=\"error\">$error</div>");
        }else{
          if($lid == '0'){
            //Neuen Eintrag anlegen
            $this->app->DB->Insert("INSERT INTO lieferadressen (typ,name,abteilung,unterabteilung,land,strasse,ort,plz,adresse,telefon,email,adresszusatz,logdatei,standardlieferadresse,gln,ustid,lieferbedingung,ust_befreit,interne_bemerkung,hinweis) VALUES ('$typ','$name','$abteilung','$unterabteilung','$land','$strasse','$ort','$plz','$id','$telefon','$email','$adresszusatz',NOW(),'$standardlieferadresse','$gln','$ustid','$lieferbedingung','$ust_befreit','$internebemerkung','$hinweis')");
          }else{
            //Alten Eintrag updaten
            $this->app->DB->Update("UPDATE lieferadressen SET typ='$typ',name='$name',abteilung='$abteilung',unterabteilung='$unterabteilung',land='$land', strasse='$strasse',ort='$ort',plz='$plz',telefon='$telefon',email='$email',adresszusatz='$adresszusatz',standardlieferadresse='$standardlieferadresse',gln='$gln',ustid='$ustid',lieferbedingung='$lieferbedingung',ust_befreit='$ust_befreit',interne_bemerkung = '$internebemerkung',hinweis='$hinweis' WHERE id = '$lid'");     
          }
        }
      }else{
        if($error == ''){
          if($lid == '0'){
            //Neuen Eintrag anlegen
            $this->app->DB->Insert("INSERT INTO lieferadressen (typ,name,abteilung,unterabteilung,land,strasse,ort,plz,adresse,telefon,email,adresszusatz,logdatei,standardlieferadresse,gln,ustid,lieferbedingung,ust_befreit,interne_bemerkung,hinweis) VALUES ('$typ','$name','$abteilung','$unterabteilung','$land','$strasse','$ort','$plz','$id','$telefon','$email','$adresszusatz',NOW(),'$standardlieferadresse','$gln','$ustid','$lieferbedingung','$ust_befreit','$internebemerkung','$hinweis')");
            echo json_encode(array('status'=>1));
            $this->app->ExitXentral();
          }
          //Alten Eintrag updaten
          $this->app->DB->Update("UPDATE lieferadressen SET typ='$typ',name='$name',abteilung='$abteilung',unterabteilung='$unterabteilung',land='$land', strasse='$strasse',ort='$ort',plz='$plz',telefon='$telefon',email='$email',adresszusatz='$adresszusatz',standardlieferadresse='$standardlieferadresse',gln='$gln',ustid='$ustid',lieferbedingung='$lieferbedingung',ust_befreit='$ust_befreit',interne_bemerkung = '$internebemerkung',hinweis='$hinweis' WHERE id = '$lid'");
          echo json_encode(array('status'=>1));
          $this->app->ExitXentral();

        }
        echo json_encode(array('status'=>0,'statusText'=>$error));
        $this->app->ExitXentral();

      }

      
      break;
    case 'delete':
      $lid = $this->app->DB->real_escape_string($this->app->Secure->GetGET('lid'));
      $this->app->DB->Delete("DELETE FROM lieferadressen WHERE id = '$lid'");     
      echo json_encode("success");
      $this->app->ExitXentral();
      break;
    default:
      break;
  }


  if($iframe=="true"){
    $this->app->BuildNavigation = false;
  }

  if($iframe=="true") {
    $einfuegen = "<a onclick=\"Lieferadresse('%value%'); parent.closeIframe();\"><img src=\"./themes/[THEME]/images/down.png\" border=\"0\"></a>";
  }

  $this->app->Tpl->Set('ADRESSID',$id); 

  $adresstypen = $this->app->DB->SelectArr("SELECT type, bezeichnung FROM adresse_typ WHERE aktiv = 1 AND geloescht = 0".$this->app->erp->ProjektRechte());

  $laender = $this->app->erp->GetSelectLaenderliste();

  if($lid > 0){
    $adresseland = $this->app->DB->Select("SELECT land FROM lieferadressen WHERE id = '$lid' LIMIT 1");
  }else{
    $adresseland = $this->app->DB->Select("SELECT land FROM adresse WHERE id = '$id' LIMIT 1");
  }
  
  if($adresseland == ""){
    $this->app->erp->Firmendaten('land');
  }

  if($adresstypen != ""){
    $lieferadressetyp = "";
    foreach($adresstypen as $key=>$value){
      $lieferadressetyp .= '<option value="'.$value['type'].'">'.$value['bezeichnung'].'</option>';
    }    
  }

  if($laender != ""){
    $lieferadresselaender = "";
    foreach ($laender as $landKey => $land) {
      $lieferadresselaender .= '<option '.($adresseland == $landKey?' selected="selected" ':'').' value="' . $landKey . '">' . $land . '</option>';
    }
  }
  
  if($iframe=="true"){
    $this->app->Tpl->Set("LIEFERADRESSETYP", $lieferadressetyp);
  }
  $this->app->Tpl->Add("LANDSELECTED", $adresseland);
  $this->app->Tpl->Add("LIEFERADRESSELAENDER", $lieferadresselaender);
  

  $this->app->YUI->AutoComplete("lieferbedingung", "lieferbedingungen");
  $this->app->YUI->CkEditor("interne_bemerkung", "basic");
  $this->app->YUI->CkEditor("hinweis", "basic");


  $this->app->Tpl->Add("TAB1",

    '<div class="filter-box filter-usersave">
			<div class="filter-block filter-inline">
				<div class="filter-title">{|Filter|}</div>
				<ul class="filter-list">
					<li class="filter-item">
					  <label for="alle" class="switch">
					    <input type="checkbox" name="alle" id="alle">
					    <span class="slider round"></span>
					  </label>
					  <label for="alle">{|auf alle Lieferadressen zugreifen|}</label>
					</li>
				</ul>
			</div>
		</div>');


  $this->app->YUI->TableSearch('TAB1',"adresse_lieferadressenlist");
  //  $this->app->Tpl->Parse('TAB1',"rahmen70.tpl");
  $this->app->Tpl->Set('AKTIV_TAB1',"selected");

  if($iframe=="true"){
    $this->app->Tpl->Parse('PAGE', "lieferadressenuebersicht_popup.tpl");
  }
  else{
    $this->app->Tpl->Parse('PAGE', "lieferadressenuebersicht.tpl");
  }
}

function AdresseLieferadressenEditPopup()
{
  $frame = $this->app->Secure->GetGET("frame");
  $id = $this->app->Secure->GetGET('id');

  if($frame=="false")
  {
    // hier nur fenster größe anpassen
    $this->app->YUI->IframeDialog(600,320);
  } else {
    // nach page inhalt des dialogs ausgeben
    $widget = new WidgetLieferadressen($this->app,'PAGE');
    $adresse = $this->app->DB->Select("SELECT adresse FROM lieferadressen WHERE id='$id' LIMIT 1");
    $widget->form->SpecialActionAfterExecute("close_refresh", "index.php?module=adresse&action=lieferadresse&id=$adresse");

    $widget->Edit();
    $this->app->BuildNavigation=false;
  }
}

function DruckerSelect($selected='') {
  if($selected=='') {
    $selected = $this->app->DB->Select("SELECT standarddrucker FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1");
  }

  $drucker = $this->app->DB->SelectArr("SELECT id, name FROM  drucker WHERE firma='".$this->app->User->GetFirma()."' AND aktiv='1'");
  if(empty($drucker)) {
    return '';
  }
  $out = '';
  foreach($drucker as $dr) {
    $mark = '';
    if($dr['id']==$selected) {
      $mark='selected';
    }
    $out .="<option value=\"{$dr['id']}\" $mark>{$dr['name']}</option>";
  }
  return $out;
}

function AdresseBriefDrucken() {

  $id = $this->app->Secure->GetGET('id');
  $type = $this->app->Secure->GetGET('type');

  if($type === 'kalender') {
    $dokument = $this->app->DB->SelectRow(
      sprintf(
        "SELECT
          *, DATE_FORMAT(von, '%%d.%%m.%%Y') as datumvon, DATE_FORMAT(bis, '%%d.%%m.%%Y') as datumbis,
          DATE_FORMAT(von, '%%H:%%i') as zeitvon, DATE_FORMAT(bis, '%%H:%%i') as zeitbis
          FROM  kalender_event
          WHERE id = %d",
        $id
      )
    );
  }
  elseif($type === 'wiedervorlage') {
    $dokument = $this->app->DB->SelectRow(
      sprintf(
        "SELECT *,
            DATE_FORMAT(datum_angelegt, '%%d.%%m.%%Y') as datum_angelegt, 
            DATE_FORMAT(datum_erinnerung, '%%d.%%m.%%Y') as datum_erinnerung,
            DATE_FORMAT(zeit_angelegt, '%%H:%%i') as zeit_angelegt, 
            DATE_FORMAT(zeit_erinnerung, '%%H:%%i') as zeit_erinnerung
          FROM wiedervorlage
          WHERE  id = %d",
        $id
      )
    );
  }
  else{
    $dokument = $this->app->DB->SelectRow(
      sprintf(
        "SELECT *, DATE_FORMAT(datum, '%%d.%%m.%%Y') as datum
        FROM dokumente
        WHERE id = %d",
        $id
      )
    );
  }

  if (empty($dokument)) {
    echo 'Korrespondenz noch nicht gespeichert.';
    $this->app->ExitXentral();
  }

  $adresse = $this->app->DB->SelectRow(
    sprintf(
      'SELECT *
       FROM adresse
       WHERE
       id = %d',
      ($type !== 'kalender' && $type !== 'wiedervorlage')?$dokument['adresse_to']:$dokument['adresse']
    )
  );

  if ($this->app->erp->Firmendaten('modul_mlm')) {
    $sponsor = $this->app->DB->SelectRow(
      sprintf(
        'SELECT *
        FROM adresse
        WHERE id = %d' , $adresse['sponsor']
      )
    );
    if ($sponsor) {
      $sponsor = $sponsor['kundennummer'] . ' ' . $sponsor['name'];
    }
    else {
      $sponsor = 'Kein Sponsor';
    }

    $table = '';
    $table .= '<tr>';
      $table .= '<th align="left" style="border-bottom: 2px solid #d7d7d7;">Vertragsbeginn:</th>';
      $table .= '<td style="border-bottom: 2px solid #d7d7d7;"> ' . $adresse['mlmvertragsbeginn'] . '</td>';
      $table .= '<th align="left" style="border-bottom: 2px solid #d7d7d7;">Sponsor:</th>';
      $table .= '<td style="border-bottom: 2px solid #d7d7d7;"> ' . $sponsor . '</td>';
    $table .= '</tr>';

    $this->app->Tpl->Add('SPONSOR',$table);
  }


  $this->app->Tpl->Add('KUNDENNUMMER',$adresse['kundennummer']);
  $this->app->Tpl->Add('ANREDE', ucfirst($adresse['typ']));
  $this->app->Tpl->Add('NAME',$adresse['name']);
  $this->app->Tpl->Add('ANSPRECHPARTNER',$dokument['ansprechpartner']);
  $this->app->Tpl->Add('TELEFON',$adresse['telefon']);
  $this->app->Tpl->Add('TELEFAX',$adresse['telefax']);
  $this->app->Tpl->Add('TITEL',$adresse['titel']);
  $this->app->Tpl->Add('ANSCHREIBEN',$adresse['anschreiben']);
  $this->app->Tpl->Add('ABTEILUNG',$adresse['abteilung']);
  $this->app->Tpl->Add('EMAIL',$adresse['email']);
  $this->app->Tpl->Add('UNTERABTEILUNG',$adresse['unterabteilung']);
  $this->app->Tpl->Add('MOBIL',$adresse['mobil']);
  $this->app->Tpl->Add('ADRESSZUSATZ',$adresse['adresszusatz']);
  $this->app->Tpl->Add('INTERNETSEITE',$adresse['internetseite']);
  $this->app->Tpl->Add('STRASSE',$adresse['strasse']);

  if ($adresse['kundenfreigabe'] == 1) {
    $this->app->Tpl->Add('KUNDENFREIGABE','Ja');
  } else {
    $this->app->Tpl->Add('KUNDENFREIGABE','Nein');
  }

  $this->app->Tpl->Add('PLZORT',$adresse['plz'] . ' ' . $adresse['ort']);

  if ($adresse['abweichende_rechnungsadresse'] == 1) {
    $this->app->Tpl->Add('ABWEICHENDE_RECHNUNGSADRESSE','Ja');
  } else {
    $this->app->Tpl->Add('ABWEICHENDE_RECHNUNGSADRESSE','Nein');
  }

  $this->app->Tpl->Add('LAND',$adresse['land']);
  if($type !== 'kalender' && $type !== 'wiedervorlage'){
    $this->app->Tpl->Add('DATUMTEXT','Datum:');
    $this->app->Tpl->Add('UHRZEITTEXT','Uhrzeit:');
    $this->app->Tpl->Add('DATUM',$dokument['datum']);
    $this->app->Tpl->Add('UHRZEIT',$dokument['uhrzeit']);
    $this->app->Tpl->Add('BETREFF',$dokument['betreff']);
    $this->app->Tpl->Add('BEARBEITER',$dokument['bearbeiter']);
    $this->app->Tpl->Add('TEXT',nl2br($dokument['content']));
  }elseif($type === 'kalender'){
    $this->app->Tpl->Add('DATUMTEXT','von:');
    $this->app->Tpl->Add('UHRZEITTEXT','bis:');
    $this->app->Tpl->Add('DATUM',$dokument['datumvon'].' '.$dokument['zeitvon']);
    $this->app->Tpl->Add('UHRZEIT',$dokument['datumbis'].' '.$dokument['zeitbis']);
    $this->app->Tpl->Add('BETREFF',$dokument['bezeichnung']);
    $this->app->Tpl->Add('BEARBEITER',$this->app->DB->Select("SELECT name FROM adresse WHERE id = '".$dokument['angelegtvon']."' LIMIT 1"));
    $this->app->Tpl->Add('TEXT',nl2br($dokument['beschreibung']));
  }elseif($type === 'wiedervorlage')
  {
    $this->app->Tpl->Add('DATUMTEXT','angelegt:');
    $this->app->Tpl->Add('UHRZEITTEXT','Erinnerung:');
    $this->app->Tpl->Add('DATUM',$dokument['datum_angelegt'].' '.$dokument['zeit_angelegt']);
    $this->app->Tpl->Add('UHRZEIT',$dokument['datum_erinnerung'].' '.$dokument['zeit_erinnerung']);
    $this->app->Tpl->Add('BETREFF',$dokument['bezeichnung']);
    $this->app->Tpl->Add('BEARBEITER',$this->app->DB->Select("SELECT name FROM adresse WHERE id = '".$dokument['bearbeiter']."' LIMIT 1"));
    $this->app->Tpl->Add('TEXT',nl2br($dokument['beschreibung']));
  }

  $this->app->Tpl->Output('adresse_brief_druck.tpl');

  $this->app->ExitXentral();
}

function AdresseBriefErstellen() {

  //$this->AdresseMenu();

  $id = $this->app->Secure->GetGET('id');
  $type = $this->app->Secure->GetGET('type');

  $adresse = $this->app->DB->SelectRow(
    sprintf(
      'SELECT *
        FROM adresse
        WHERE id = %d' , $id
    )
  );
  $this->app->Tpl->Add('EMPFAENGER',$adresse['name']);
  //$kundennummer = $this->app->DB->Select("SELECT kundennummer from adresse where id = ".(int)$id)."";
  //$this->app->Tpl->Add(BEARBEITER,$kundennummer." ".$this->app->DB->Select("SELECT name from adresse where id = ".(int)$id));
  $this->app->Tpl->Add('ADRESSE',$adresse['kundennummer']." ".$adresse['name']);
  $this->app->Tpl->Add('MITARBEITER',$this->app->DB->Select("SELECT mitarbeiternummer from adresse where id = ".$this->app->User->GetAdresse()." limit 1")." ".$this->app->User->GetName());
  $this->app->Tpl->Add('BEARBEITER',$this->app->DB->Select("SELECT mitarbeiternummer from adresse where id = ".$this->app->User->GetAdresse()." limit 1")." ".$this->app->User->GetName());
  $this->app->Tpl->Add('BEARBEITEROHNENUMMER',$this->app->User->GetName());
  //$this->app->BuildNavigation=false;

  $this->app->YUI->DatePicker("datum");
  $this->app->Tpl->Add('DATUM', date('d.m.Y'));
  $this->app->Tpl->Add('UHRZEIT', date('H:i'));
  $this->app->Tpl->Add('DATUMBIS', date('d.m.Y'));
  $this->app->Tpl->Add('UHRZEITBIS', date('H:i'));
  $this->app->Tpl->Add('DATUM_ERINNERUNG',date("d.m.Y",strtotime ("+1 day")));
  $this->app->Tpl->Add('UHRZEIT_ERINNERUNG', date('H:i'));

  
  if ($type) {
    switch ($type) {
      case 'wiedervorlage':
        $this->app->YUI->DatePicker("datum_erinnerung");
        if($this->app->erp->Firmendaten("briefhtml")=="1")
        {
          $this->app->YUI->CkEditor("content","internal", array('resize_dir'=>'both'), 'JQUERY2');
        }
        for($i=0;$i<=100;$i += 10)
        {
          $this->app->Tpl->Add("CHANCE","<option value=\"$i\">$i %</option>");
        }

        $template = 'adresse_brief_wiedervorlage.tpl';
        break;
      break;
      case 'kalender':
        $this->app->YUI->DatePicker("datum");
        $this->app->YUI->DatePicker("datumbis");
        $this->app->YUI->TimePicker("uhrzeit");
        $this->app->YUI->TimePicker("uhrzeitbis");
        $template = 'adresse_brief_kalender.tpl';
        if($this->app->erp->Firmendaten("briefhtml")=="1")
        {
          $this->app->YUI->CkEditor("content","internal", array('resize_dir'=>'both'), 'JQUERY2');
        }
        break;
      break;
      case 'brief':

        $this->app->Tpl->Add('SENDER', $this->app->User->GetName());
        $this->app->Tpl->Add('STRASSE',$adresse['strasse']);
        $this->app->Tpl->Add('PLZ',$adresse['plz']);
        $this->app->Tpl->Add('ORT',$adresse['ort']);
        $this->app->Tpl->Add('INTERNEBEZEICHNUNG',$adresse['internebezeichnung']);

        $laender = $this->app->erp->GetSelectLaenderliste();
        $laenderStr = '';
        foreach ($laender as $landKey => $land) {
          $laenderStr .= '<option '.($adresse['land'] == $landKey?' selected="selected" ':'').' value="' . $landKey . '">' . $land . '</option>';
        }

        $this->app->Tpl->Add('LAND',$laenderStr);

        $this->app->Tpl->Set('DRUCKERSELECT', $this->DruckerSelect());
        if($this->app->erp->Firmendaten("briefhtml")=="1")
        {
          $this->app->YUI->CkEditor("content","internal", array('resize_dir'=>'both'), 'JQUERY2');
        }

        $template = 'adresse_brief_brief.tpl';
        break;
      case 'email':

        $this->app->YUI->AutoComplete("email_an","emailname");
        $this->app->YUI->AutoCompleteAdd("email_cc","emailname");
        $this->app->YUI->AutoCompleteAdd("email_bcc","emailname");

        $this->app->Tpl->Set('EMAIL_SENDER', $this->app->erp->GetSelectEmailMitName());
        if (!empty($adresse['email'])) {
          $this->app->Tpl->Add('EMAIL_AN',str_replace('"','&#34;',$adresse['name']) . ' &lt;' . $adresse['email'] . '&gt;');
        }

        $anschreiben = $this->app->DB->Select("SELECT anschreiben FROM adresse WHERE id='".$ticket_from_db['adresse']."' LIMIT 1");
        if($anschreiben=="")
        {
          $anschreiben = $this->app->erp->Beschriftung("dokument_anschreiben").",\n".$this->app->erp->Grussformel($projekt,$sprache);
        }
        $this->app->Tpl->Add('CONTENT',$anschreiben);

        $projekt = $this->app->DB->Select("SELECT abkuerzung FROM projekt INNER JOIN adresse ON adresse.projekt = projekt.id WHERE adresse.id='".$id."' LIMIT 1");
        $this->app->Tpl->Set('PROJEKT', $projekt);

        $anhaenge = '';
        $anhaenge .= '<tr><td nowrap>Datei:</td><td><input type="file" name="upload[]" id="file" /></td></tr>';
//        $anhaenge .= '<tr><td nowrap>Datei 2:</td><td><input type="file" name="upload[]" /></td></tr>';
//        $anhaenge .= '<tr><td nowrap>Datei 3:</td><td><input type="file" name="upload[]" /></td></tr>';

        $this->app->Tpl->Add('ANHAENGEHERAUFLADEN', $anhaenge);
        $anhaenge = '<tr><td colspan=3 align=center><i>Keine Anh&auml;nge vorhanden</i></td></tr>';
        $this->app->Tpl->Add('ANHAENGE', $anhaenge);
        if($this->app->erp->Firmendaten("briefhtml")=="1")
        {
          $this->app->YUI->CkEditor("content","internal", array('resize_dir'=>'both'), 'JQUERY2');
        }
        // $this->app->Tpl->Parse('PAGE',"adresse_brief_email.tpl");
        $template = 'adresse_brief_email.tpl';
        break;
      case 'telefon':
        // $this->app->Tpl->Parse('PAGE',"adresse_brief_telefon.tpl");
        if($this->app->erp->Firmendaten("briefhtml")=="1")
        {
          $this->app->YUI->CkEditor("content","internal", array('resize_dir'=>'both'), 'JQUERY2');
        }
        $template = 'adresse_brief_telefon.tpl';
        break;
      case 'notiz':
        // $this->app->Tpl->Parse('PAGE',"adresse_brief_notiz.tpl");
        if($this->app->erp->Firmendaten("briefhtml")=="1")
        {
          $this->app->YUI->CkEditor("content","internal", array('resize_dir'=>'both'), 'JQUERY2');
        }
        $template = 'adresse_brief_notiz.tpl';
        break;
      default:
        // $this->app->Tpl->Parse('PAGE',"adresse_brief_email.tpl");
        if($this->app->erp->Firmendaten("briefhtml")=="1")
        {
          $this->app->YUI->CkEditor("content","internal", array('resize_dir'=>'both'), 'JQUERY2');
        }
        $template = 'adresse_brief_email.tpl';
        break;
    }
  } else {
    $this->app->Tpl->Add('EMAIL',$adresse['email']);
    // $this->app->Tpl->Parse('PAGE',"adresse_brief_email.tpl");
    if($this->app->erp->Firmendaten("briefhtml")=="1")
    {
      $this->app->YUI->CkEditor("content","internal", array('resize_dir'=>'both'), 'JQUERY2');
    }
    $template = 'adresse_brief_email.tpl';
  }

  $this->app->Tpl->Output($template);
  $this->app->ExitXentral();

  /*
     $this->app->BuildNavigation=false;
     $this->app->Tpl->Set('INHALT',"");
     $this->app->Tpl->Parse('PAGE',"adresse_brief_email.tpl");
   */


}


function AdresseBriefCreatePDF($dokumentId, $display=true) {

  $data = $this->app->DB->SelectRow(
    sprintf(
      'SELECT *
      FROM dokumente
      WHERE id = %d',
      $dokumentId
    )
  );

  $data['firma'] = $this->app->DB->Select('
      SELECT
      MAX(id)
      FROM
      firma
      LIMIT 1
      ');

/*  $data['firma'] = $this->app->DB->Select('
      SELECT
      absender
      FROM
      firmendaten
      WHERE
      id = ' . $data['firma'] . '
      ');*/

  $data['firma'] = $this->app->DB->Select('
      SELECT
      wert
      FROM
      firmendaten_werte
      WHERE
      name = \'absender\'
      ');



  $korrespondenz = new KorrespondenzPDF($this->app,$data['projekt']);
  $korrespondenz->SetBetreff($this->app->erp->ReadyForPDF($data['betreff']));

  $korrespondenz->SetDetail('Datum', $this->app->String->Convert($data['datum'],"%1-%2-%3","%3.%2.%1"));
  $korrespondenz->SetDetail('Bearbeiter', $this->app->erp->ReadyForPDF($data['von']));

  $korrespondenz->setRecipient(
      array(
        $this->app->erp->ReadyForPDF($data['an']), 
        $this->app->erp->ReadyForPDF($data['ansprechpartner']),
        '',
        $this->app->erp->ReadyForPDF($data['adresse']),
        $data['plz'],
        $this->app->erp->ReadyForPDF($data['ort']),
        $data['land']
        )
      );

  if(strpos($data['betreff'],'{') !== false) {
    $data['betreff'] = $this->app->erp->ParseUserVars('adresse', $data['adresse_to'], $data['betreff']);
  }
  if(strpos($data['content'],'{') !== false) {
    $data['content'] = $this->app->erp->ParseUserVars('adresse', $data['adresse_to'], $data['content']);
  }

  $korrespondenz->setLetterDetails(
      array(
        $this->app->erp->ReadyForPDF($data['betreff']),
        str_replace('\r\n',"\n\n",$this->app->erp->ReadyForPDF($data['content']))
        )
      );
  $korrespondenz->setAbsender($data['firma']);

  $korrespondenz->Create();

  if($display) {
    $korrespondenz->displayDocument();
  } else {
    return $korrespondenz->displayTMP();
  }
}

function AdresseBriefSaveDocument() {

  $data = array();
  $data['user'] = '';
  $data['datum'] = $this->app->Secure->GetPOST('datum');
  $data['von'] = $this->app->Secure->GetPOST('von');
  $data['firma'] = $this->app->Secure->GetPOST('firma');
  $data['ansprechpartner'] = $this->app->Secure->GetPOST('ansprechpartner');
  $data['an'] = $this->app->Secure->GetPOST('an');
  $data['email_an'] = $this->app->Secure->GetPOST('email_an');
  $data['email_cc'] = $this->app->Secure->GetPOST('email_cc');
  $data['email_bcc'] = $this->app->Secure->GetPOST('email_bcc');
  $data['firma_an'] = $this->app->Secure->GetPOST('firma_an');
  $data['adresse'] = $this->app->Secure->GetPOST('adresse');
  $data['plz'] = $this->app->Secure->GetPOST('plz');
  $data['ort'] = $this->app->Secure->GetPOST('ort');
  $data['internebezeichnung'] = $this->app->Secure->GetPOST('internebezeichnung');
  $data['land'] = $this->app->Secure->GetPOST('land');
  $data['betreff'] = $this->app->Secure->GetPOST('betreff');
  $data['content'] = $this->app->Secure->GetPOST('content');
  $data['signatur'] = $this->app->Secure->GetPOST('signatur');
  $data['send_as'] = $this->app->Secure->GetPOST('send_as');
  $data['email'] = $this->app->Secure->GetPOST('email');
  $data['printer'] = $this->app->Secure->GetPOST('printer');
  $data['fax'] = $this->app->Secure->GetPOST('fax');
  $data['user'] = $this->app->Secure->GetGET('id');
  $data['signatur'] = $this->app->Secure->GetPOST('signatur');
  $data['eintragId'] = $this->app->Secure->GetPOST('eintragId');
  $data['projekt'] = $this->app->Secure->GetPOST('projekt');

  $data['projekt'] = explode(' ',$data['projekt']);
  if($data['projekt'][0] !="")
    $data['projekt'] = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='".$data['projekt'][0]."' AND abkuerzung!='' LIMIT 1");

  $data['uhrzeit'] = $this->app->Secure->GetPOST('uhrzeit');
  if (!$data['uhrzeit']) {
    $data['uhrzeit'] = date('H:i:s');
  }

  $data['bearbeiter'] = $this->app->Secure->GetPOST('bearbeiter');

  if (!empty($data['signatur'])) {
    $data['signatur'] = 1;
  } else {
    $data['signatur'] = 0;
  }

  if (!$data['datum']) {
    $data['datum'] = date('d.m.Y');
  }

  $data['typ'] = $this->app->Secure->GetPOST('type');
  if (!$data['typ']) {
    $data['typ'] = 'brieffax';
  }

  $adresse = $this->app->User->GetAdresse();
  $datum = $this->app->String->Convert($data['datum'],"%1.%2.%3","%3-%2-%1");

  if (isset($data['eintragId']) && !empty($data['eintragId'])) {

    $this->app->DB->Insert('
        UPDATE
        dokumente
        SET
        adresse_from = "' . $adresse . '",
        adresse_to = "' . $data['user'] . '",
        typ = "' . $data['typ'] . '",
        von = "' . $data['von'] . '",
        firma = "' . $data['firma'] . '",
        ansprechpartner = "' . $data['ansprechpartner'] . '",
        internebezeichnung = "' . $data['internebezeichnung'] . '",
        an = "' . $data['an'] . '",
        email_an = "' . $data['email_an'] . '",
        email_cc = "' . $data['email_cc'] . '",
        email_bcc = "' . $data['email_bcc'] . '",
        firma_an = "' . $data['firma_an'] . '",
        adresse = "' . $data['adresse'] . '",
        plz = "' . $data['plz'] . '",
        ort = "' . $data['ort'] . '",
        land = "' . $data['land'] . '",
        datum = "' . $datum . '",
        betreff = "' . $data['betreff'] . '",
        content = "' . $data['content'] . '",
        signatur = "' . $data['signatur'] . '",
        send_as = "' . $data['send_as'] . '",
        email = "' . $data['email'] . '",
        printer = "' . $data['printer'] . '",
        fax = "' . $data['fax'] . '",
        created = NOW(),
        uhrzeit = "' . $data['uhrzeit'] . '",
        projekt = "' . $data['projekt'] . '",
        bearbeiter = "' . $data['bearbeiter'] . '"
          WHERE
          id = ' . $data['eintragId'] . '
          ');

    $returnId = $data['eintragId'];

  } else {

    $returnId = $this->app->erp->DokumentCreate($data,$adresse);
  }

  if($returnId && $data['typ'] == 'email')
  {
    if(isset($_FILES['upload']) && is_array($_FILES['upload']))
    {
      foreach($_FILES['upload']['tmp_name'] as $key => $file)
      {
        if($file != "")
        {
          $fileid = $this->app->erp->CreateDatei($_FILES['upload']['name'][$key], $_FILES['upload']['name'][$key], "", "", $_FILES['upload']['tmp_name'][$key], $this->app->User->GetName());
          // stichwoerter hinzufuegen
          $this->app->erp->AddDateiStichwort($fileid, "anhang", "dokument", $returnId);
        }
      }
    }
    $this->app->Tpl->Add('AJAXBRIEF', "
    		$.ajax({
			url: 'index.php',
			data: {
				module: 'adresse',
				action: 'briefbearbeiten',
        typ : 'email',
				id: ".$returnId."
			},
			beforeSend: function() {
				App.loading.open();
			},
			success: function(data) {

				$('.alleAnzeigen').show();

				$('.adresse_brief_anlegen').css({
					width: $('.adresse_brief_tabelle').width()
				});


				$('.adresse_brief_tabelle').find('fieldset').hide();
				$('.adresse_brief_tabelle').find('.adresse_brief_tabelle_view').hide();

				$('.adresse_brief_anlegen')
					.html(data)
					.show();

				fnFilterColumn8(0);
				App.loading.close();
			}
		});
    ");
  }
  
  return $returnId;

}


function AdresseBriefPreview($type = '', $id = '', $json = true) {
  
  if(!$type)$type = $this->app->Secure->GetGET('type');
  if(!$id)$id = $this->app->Secure->GetGET('id');

  $query = '';
  if ($type) {
    switch ($type) {
      case 'dokumente':
        $query .= '
          SELECT
          id,
          DATE_FORMAT(datum, "%d.%m.%Y") as datum,
          betreff,
          content
            FROM
            dokumente
            WHERE
            id = ' . $id . '
            ';
        break;
      case 'dokumente_send':
        $query .= '
          SELECT
          id,
          DATE_FORMAT(zeit, "%d.%m.%Y") as datum,
          betreff,
          text as content
            FROM
            dokumente_send
            WHERE
            id = ' . $id . '
            ';
        break;
      case 'ticket_nachricht':
        $query .= '
          SELECT
          id,
          DATE_FORMAT(zeit, "%d.%m.%Y") as datum,
          betreff,
          text as content
            FROM
            ticket_nachricht
            WHERE
            id = ' . $id . '
            ';
        break;
      case 'wiedervorlage':
        $query .= '
          SELECT
          id,
          DATE_FORMAT(datum_angelegt, "%d.%m.%Y") as datum,
          DATE_FORMAT(datum_erinnerung, "%d.%m.%Y") as datum_erinnerung,
          DATE_FORMAT(zeit_angelegt,"%H:%i") as zeit_angelegt,
          zeit_erinnerung,
          bezeichnung as betreff,
          beschreibung as content
            FROM
            wiedervorlage
            WHERE
            id = ' . $id . '
            ';
        break;
      case 'kalender':
        $query .= '
          SELECT
          id,
          DATE_FORMAT(von, "%d.%m.%Y") as datum,
          DATE_FORMAT(bis, "%d.%m.%Y") as datumbis,
          DATE_FORMAT(von, "%H:%i:%s") as uhrzeit,
          DATE_FORMAT(bis, "%H:%i:%s") as uhrzeitbis,
          allDay,
          public,
          adresseintern,
          bezeichnung as betreff,
          beschreibung as content
            FROM
            kalender_event
            WHERE
            id = ' . $id . '
            ';
      break;
    }

  }

  $res = $this->app->DB->SelectRow($query);
  if ($res) {
/*
    if (isset($res['content'])) {
      $res['content'] = '<input type="button" onclick="briefDrucken(' . $res['id'] . ');" value="Drucken"><br><br>'.nl2br($res['content']);
    }
*/
  }
  if(isset($res['datum']) && !$tickets)
  {
    if($type=="kalender" || $type=="dokumente_send")
      $res['content'] = $res['content'];
    else
      $res['content'] = '<b>Angelegt am: '.$res['datum'].(isset($res['zeit_angelegt'])?' '.$res['zeit_angelegt']:'')."</b><br />".$res['content'];
  }

  if($json)
  {
  echo json_encode($res);
  } else {
    //$ausg = "<h2>".$res['datum'].' '.$res['betreff']."</h2>".nl2br($res['content']);
    //if($res['content']=="") $res['content']="Kein Inhalt vorhanden";

    if($this->app->erp->isHTML($res['content']))
      $ausg = $res['content'];
    else
      $ausg = nl2br($res['content']);
    echo $ausg;
  }
  $this->app->ExitXentral();

}

function AdresseBriefBearbeiten() {
  $id = $this->app->Secure->GetGET('id');
  $type = $this->app->Secure->GetGET('type');
  $typ = $this->app->Secure->GetGET('typ');

  if($typ === 'kalender')
  {
    $query = '
          SELECT
          id,
          DATE_FORMAT(von, "%d.%m.%Y") as datum,
          DATE_FORMAT(bis, "%d.%m.%Y") as datumbis,
          DATE_FORMAT(von, "%H:%i") as uhrzeit,
          DATE_FORMAT(bis, "%H:%i") as uhrzeitbis,
          allDay,
          public,
          adresse,
          ansprechpartner_id,
          angelegtvon,
          adresseintern,
          bezeichnung,
          beschreibung 
            FROM
            kalender_event
            WHERE
            id = ' . $id . '
            ';
  }elseif($typ === 'wiedervorlage')
  {
    $query = 'SELECT * from wiedervorlage where id = '.(int)$id;
  }else{
  
  $query = '
    SELECT
    d.id,
    d.typ,
    d.von,
    d.firma,
    d.an,
    d.email_an,
    d.email_cc,
    d.email_bcc,
    d.ansprechpartner,
    d.internebezeichnung,
    d.adresse,
    d.plz,
    d.ort,
    d.land,
    DATE_FORMAT(d.datum, "%d.%m.%Y") as datum,
    d.betreff,
    d.content,
    d.bearbeiter,
    DATE_FORMAT(d.uhrzeit,"%H:%i") as uhrzeit,
    CONCAT(p.abkuerzung," ",p.name) as projekt
      FROM
      dokumente d
      LEFT JOIN projekt p ON p.id=d.projekt
      WHERE
      d.id = ' . $id . '
      ';
  }
  $dokument = $this->app->DB->SelectRow($query);

  if($typ === 'kalender')
  {
    $this->app->YUI->DateiPopup('DATEIENBUTTON', 'kalender_event', $dokument['id']);
    $template = 'adresse_brief_kalender.tpl';
    if($this->app->erp->Firmendaten("briefhtml")=="1")
    {
      $this->app->YUI->CkEditor("content","internal", null, 'JQUERY2');
    }
    $bearbeiternummer = $this->app->DB->Select("SELECT mitarbeiternummer from adresse where id = ".$dokument['angelegtvon']." limit 1");
    $adressdaten = $this->app->DB->SelectRow("SELECT name, kundennummer, lieferantennummer from adresse where id = ".$dokument['adresse']." limit 1");

    if($dokument['ansprechpartner_id'] != "" && $dokument['ansprechpartner_id'] > 0){
      $ansprechpartnerId = $this->app->DB->Select("SELECT id FROM ansprechpartner WHERE id = '" . $dokument['ansprechpartner_id'] . "' LIMIT 1");
      if($ansprechpartnerId != "" && $ansprechpartnerId > 0){
        $ansprechpartnerName = $this->app->DB->Select("SELECT name FROM ansprechpartner WHERE id = '$ansprechpartnerId' LIMIT 1");
        $ansprechpartner = $ansprechpartnerId . ' ' . $ansprechpartnerName;
        $ansprechpartner .= ' (' . $adressdaten['name'] . ', Kdr: ' . $adressdaten['kundennummer'] . ' ';
        if($adressdaten['lieferantennummer'] != ''){
          $ansprechpartner .= 'Liefr: ' . $adressdaten['lieferantennummer'];
        }
        $ansprechpartner .= ')';
        $dokument['ansprechpartner'] = $ansprechpartner;
      }
    }

    $datum = $dokument['datum'];
    $datumbis = $dokument['datumbis'];
    $this->app->Tpl->Add('UHRZEIT',$dokument['uhrzeit']);
    $this->app->Tpl->Add('UHRZEITBIS',$dokument['uhrzeitbis']);
    $this->app->Tpl->Add('DATUM',$datum);
    $this->app->Tpl->Add('DATUMBIS',$datumbis);
    if($dokument['allDay'])$this->app->Tpl->Set('ALLDAY',' checked="checked" ');
    if($dokument['public'])$this->app->Tpl->Set('PUBLIC',' checked="checked" ');
    $this->app->Tpl->Add('ADRESSEINTERN',$this->app->DB->Select("SELECT CONCAT(id,' ',name) from adresse where id = ".$dokument['adresseintern']." limit 1"));
    $this->app->Tpl->Add('CONTENT',$dokument['beschreibung']);
    $this->app->Tpl->Add('BETREFF',$dokument['bezeichnung']);
    $this->app->Tpl->Add('BEARBEITER',$bearbeiternummer?$bearbeiternummer.' '.$this->app->DB->Select("SELECT name from adresse where id = ".$dokument['angelegtvon']." limit 1"):'');
    $this->app->Tpl->Add('ANSPRECHPARTNER',$dokument['ansprechpartner']);
    $check = $this->app->DB->SelectArr("SELECT * FROM layoutvorlagen WHERE kategorie like 'Besuchsbericht' order by name");
    if($check)
    {
      $this->app->Tpl->Set('LAYOUTBUTTON','<a href="index.php?module=adresse&action=brief&cmd=layoutoeffnen&id='.$id.'&layout='.$check[0]['id'].'" target="_blank"><input type="button" name="close" value="Besuchsbericht" /></a>');
    }
    
  }
  elseif($typ == 'wiedervorlage')
  {
    if($this->app->erp->Firmendaten("briefhtml")=="1")
    {
      $this->app->YUI->CkEditor("content","internal",null, 'JQUERY2');
    }
    $this->app->YUI->DateiPopup('DATEIENBUTTON', 'wiedervorlage', $dokument['id']);
    $template = 'adresse_brief_wiedervorlage.tpl';
    $mitarbeiternummer = $this->app->DB->Select("SELECT mitarbeiternummer from adresse where id = ".$dokument['adresse_mitarbeiter']." limit 1");
    $bearbeiternummer = $this->app->DB->Select("SELECT mitarbeiternummer from adresse where id = ".$dokument['bearbeiter']." limit 1");
    $kundennummer = $this->app->DB->Select("SELECT kundennummer from adresse where id = ".$dokument['adresse']." limit 1");
    $adressdaten = $this->app->DB->SelectRow("SELECT name, kundennummer, lieferantennummer from adresse where id = ".$dokument['adresse']." limit 1");

    if($dokument['ansprechpartner_id'] != "" && $dokument['ansprechpartner_id'] > 0){
      $ansprechpartnerId = $this->app->DB->Select("SELECT id FROM ansprechpartner WHERE id = '" . $dokument['ansprechpartner_id'] . "' LIMIT 1");
      if($ansprechpartnerId != "" && $ansprechpartnerId > 0){
        $ansprechpartnerName = $this->app->DB->Select("SELECT name FROM ansprechpartner WHERE id = '$ansprechpartnerId' LIMIT 1");
        $ansprechpartner = $ansprechpartnerId . ' ' . $ansprechpartnerName;
        $ansprechpartner .= ' (' . $adressdaten['name'] . ', Kdr: ' . $adressdaten['kundennummer'] . ' ';
        if($adressdaten['lieferantennummer'] != ''){
          $ansprechpartner .= 'Liefr: ' . $adressdaten['lieferantennummer'];
        }
        $ansprechpartner .= ')';
        $dokument['ansprechpartner'] = $ansprechpartner;
      }
    }

    $dokument['datum_angelegt'] = $this->app->String->Convert($dokument['datum_angelegt'],"%1-%2-%3","%3.%2.%1");
    $dokument['datum_erinnerung'] = $this->app->String->Convert($dokument['datum_erinnerung'],"%1-%2-%3","%3.%2.%1");
    $this->app->Tpl->Add('DATUM',$dokument['datum_angelegt']);
    $this->app->Tpl->Add('UHRZEIT',$dokument['zeit_angelegt']);
    $this->app->Tpl->Add('BEARBEITER',$bearbeiternummer?$bearbeiternummer.' '.$this->app->DB->Select("SELECT name from adresse where id = ".$dokument['bearbeiter']." limit 1"):'');
    $this->app->Tpl->Add('BETREFF',$dokument['bezeichnung']);
    $this->app->Tpl->Add('MITARBEITER',$mitarbeiternummer?$mitarbeiternummer.' '.$this->app->DB->Select("SELECT name from adresse where id = ".$dokument['adresse_mitarbeiter']." limit 1"):'');
    $this->app->Tpl->Add('ADRESSE',$kundennummer?$kundennummer.' '.$this->app->DB->Select("SELECT name from adresse where id = ".$dokument['adresse']." limit 1"):'');
    $this->app->Tpl->Add('CONTENT',$dokument['beschreibung']);
    $this->app->Tpl->Add('DATUM_ERINNERUNG',$dokument['datum_erinnerung']);
    $this->app->Tpl->Add('UHRZEIT_ERINNERUNG',$dokument['zeit_erinnerung']);
    if($dokument['abgeschlossen'])$this->app->Tpl->Add('ABGESCHLOSSEN',' checked="checked" ');
    if($dokument['prio'])$this->app->Tpl->Add('PRIO',' checked="checked" ');

    $this->app->Tpl->Set('STAGES',$this->app->DB->Select("SELECT CONCAT(id,' ',kurzbezeichnung,' (',name,')') FROM wiedervorlage_stages WHERE id='".$dokument['stages']."' LIMIT 1"));
    $this->app->Tpl->Add('BETRAG',number_format($dokument['betrag'],2,",","."));
    for($i=0;$i<=100;$i += 10)
    {
      $this->app->Tpl->Add("CHANCE","<option value=\"$i\"  ".($dokument['chance']==$i?"selected":"").">$i %</option>");
    }

    $this->app->Tpl->Add('PROJEKT',$this->app->DB->Select("SELECT CONCAT(abkuerzung,' ',name) FROM projekt WHERE id='".$dokument['projekt']."' LIMIT 1"));
    $this->app->Tpl->Add('ANSPRECHPARTNER',$dokument['ansprechpartner']);
        
  }else {
    switch($dokument['typ']) {
      case 'brief':
        if($this->app->erp->Firmendaten("briefhtml")=="1")
        {
          $this->app->YUI->CkEditor("content","belege", null, 'JQUERY2');
        }
        $this->app->YUI->DateiPopup('DATEIENBUTTON', 'dokumente', $dokument['id']);
        $template = 'adresse_brief_brief.tpl';
        break;
      case 'email':
      
      
        $anhaenge = '';
        $anhaenge .= '<tr><td nowrap>Datei:</td><td colspan="2"><input type="file" name="upload[]" id="file"/></td></tr>';
//        $anhaenge .= '<tr><td nowrap>Datei 2:</td><td colspan="2"><input type="file" name="upload[]" /></td></tr>';
//        $anhaenge .= '<tr><td nowrap>Datei 3:</td><td colspan="2"><input type="file" name="upload[]" /></td></tr>';

        $this->app->Tpl->Add('ANHAENGEHERAUFLADEN', $anhaenge);
        $anhaenge = "";
        
        $anhaengedb = $this->app->DB->SelectArr("SELECT ds.id, ds.datei, d.titel FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.parameter = '$id' AND ds.objekt = 'dokument' AND ds.subjekt = 'anhang' and d.geloescht <> 1");
        if($anhaengedb)
        {
          foreach($anhaengedb as $anhang)
          {
            $anhaenge .= '<tr id="trdatei_'.$anhang['datei'].'"><td><input type="checkbox" name="datei_'.$anhang['datei'].'" value="1" checked/></td><td><a style="font-weight:normal" href="index.php?module=adresse&action=downloaddatei&id='.$anhang['datei'].'">'.$anhang['titel'].'</a></td><td width=20><img src="./themes/' . $this->app->Conf->WFconf['defaulttheme'] . '/images/delete.svg" onclick="remdatei('.$anhang['datei'].');" style="border:0;" /></td></tr>';
          }
        } else {
          $anhaenge .= '<tr><td colspan=3 align=center><i>Keine Anh&auml;nge vorhanden</i></td></tr>';
        }
         
        $this->app->Tpl->Add('ANHAENGE', $anhaenge);
      
        if($this->app->erp->Firmendaten("briefhtml")=="1")
        {
          $this->app->YUI->CkEditor("content","internal", null, 'JQUERY2');
        }
        $this->app->YUI->DateiPopup('DATEIENBUTTON', 'dokumente', $dokument['id']);
        $template = 'adresse_brief_email.tpl';
        break;
      case 'telefon':
        if($this->app->erp->Firmendaten("briefhtml")=="1")
        {
          $this->app->YUI->CkEditor("content","internal", null, 'JQUERY2');
        }
        $this->app->YUI->DateiPopup('DATEIENBUTTON', 'dokumente', $dokument['id']);
        $template = 'adresse_brief_telefon.tpl';
        break;
      case 'notiz':
        if($this->app->erp->Firmendaten("briefhtml")=="1")
        {
          $this->app->YUI->CkEditor("content","internal", null, 'JQUERY2');
        }
        $this->app->YUI->DateiPopup('DATEIENBUTTON', 'dokumente', $dokument['id']);
        $template = 'adresse_brief_notiz.tpl';
        break;
      default:
        if($this->app->erp->Firmendaten("briefhtml")=="1")
        {
          $this->app->YUI->CkEditor("content","internal", null, 'JQUERY2');
        }
        $template = 'adresse_brief_brief.tpl';
      break;
    }
    $this->app->Tpl->Add('EMAIL_SENDER', $this->app->erp->GetSelectEmailMitName($dokument['von']));
    $this->app->Tpl->Add('EMPFAENGER',$dokument['an']);
    $this->app->Tpl->Add('SENDER',$dokument['von']);
    $this->app->Tpl->Add('ANSPRECHPARTNER',$dokument['ansprechpartner']);
    $this->app->Tpl->Add('DATUM',$dokument['datum']);
    $this->app->Tpl->Add('STRASSE',$dokument['adresse']);
    $this->app->Tpl->Add('PLZ',$dokument['plz']);
    $this->app->Tpl->Add('ORT',$dokument['ort']);

    $this->app->Tpl->Add('BEARBEITER',$dokument['bearbeiter']);
    $this->app->Tpl->Add('UHRZEIT',$dokument['uhrzeit']);

    // $this->app->Tpl->Add(LAND,$dokument['land']);

    $laender = $this->app->erp->GetSelectLaenderliste();
    $laenderStr = '';
    foreach ($laender as $landKey => $land) {
      $laenderStr .= '<option '.($dokument['land'] == $landKey?' selected="selected" ':'').' value="' . $landKey . '">' . $land . '</option>';
    }

    $this->app->Tpl->Add('LAND',$laenderStr);

    $this->app->Tpl->Add('BETREFF',$dokument['betreff']);
    $this->app->Tpl->Add('INTERNEBEZEICHNUNG',$dokument['internebezeichnung']);
    $this->app->Tpl->Add('CONTENT',$dokument['content']);

    $this->app->Tpl->Add('PROJEKT',$dokument['projekt']);

    $this->app->Tpl->Add('EMAIL_AN',$dokument['email_an']);
    $this->app->Tpl->Add('EMAIL_CC',$dokument['email_cc']);
    $this->app->Tpl->Add('EMAIL_BCC',$dokument['email_bcc']);
  }



  $this->app->Tpl->Add('EINTRAGID',$dokument['id']);

  $this->app->Tpl->Add('DRUCKERSELECT', $this->DruckerSelect());

  $this->app->Tpl->Output($template);

  $this->app->ExitXentral();

}

function AdresseKorrBriefPdf() {

  $id = $this->app->Secure->GetGET('id');
  $this->AdresseBriefCreatePDF($id, true);
  $this->app->ExitXentral();
}

function AdresseKorrBriefDelete() {

  $typ = $this->app->Secure->GetGET('typ');
  $id = $this->app->Secure->GetGET('id');
  if(strtolower($typ) === 'kalender')
  {
    $this->app->DB->Delete("DELETE FROM kalender_user where event = '$id'");
    $this->app->DB->Delete('
        DELETE FROM
        kalender_event
        WHERE
        id = "' . $id . '"
        ');
  }elseif(strtolower($typ) === 'wiedervorlage')
  {
    $this->app->DB->Delete('
        DELETE FROM
        wiedervorlage
        WHERE
        id = ' . $id . '
        ');
    
    
  }else{
    $this->app->DB->Delete('
        DELETE FROM
        dokumente
        WHERE
        id = ' . $id . '
        ');
    
    
  }

  $json['status'] = 0;
  $json['statusText'] = 'Email konnte nicht gesendet werden.';
  echo json_encode($json);
  $this->app->ExitXentral();
}


function AdresseBriefSaveKalender()
{
  $data = array();
  $data['id'] = $this->app->Secure->GetPOST('eintragId');
  $data['adresse'] = $this->app->Secure->GetGET('id');
  $data['adresseintern'] = $this->app->Secure->GetPOST('adresseintern');
  $data['bezeichnung'] = $this->app->Secure->GetPOST('betreff');
  $data['beschreibung'] = $this->app->Secure->GetPOST('content');

  $data['projekt'] = $this->app->Secure->GetPOST("projekt");
  $data['projekt'] = explode(' ',$data['projekt']);
  $data['projekt'] = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='".$data['projekt'][0]."' AND abkuerzung!='' LIMIT 1");

  $data['angelegtvon'] = (int)$this->app->DB->Select("SELECT id from adresse where mitarbeiternummer = '" .(int)$this->app->Secure->GetPOST('angelegtvon')."'");

  $tmp = trim($data['adresseintern']);
  $rest = explode(" ",$tmp);
  $data['adresseintern'] = $rest[0];

  
  $data['von'] = $this->app->String->Convert($_POST['datum'],"%1.%2.%3","%3-%2-%1");
  $uhrzeit = $_POST['uhrzeit']?$_POST['uhrzeit']:'0:00';
  if(!$uhrzeit)$uhrzeit = '0:00';
  $data['von'] = $data['von'].' '.$uhrzeit;
  $data['bis'] = $this->app->String->Convert($_POST['datumbis'],"%1.%2.%3","%3-%2-%1");
  $uhrzeitbis = $_POST['uhrzeitbis']?$_POST['uhrzeitbis']:'0:00';
  if(!$uhrzeitbis)$uhrzeitbis = '0:00';
  $data['bis'] = $data['bis'].' '.$uhrzeitbis;
  
  $data['allDay'] = $this->app->Secure->GetPOST("allDay")?1:0;
  $data['public'] = $this->app->Secure->GetPOST("public")?1:0;

  $data['ansprechpartner_id'] = $this->app->Secure->GetPOST("ansprechpartner");
  if($data['ansprechpartner_id'] != ""){
    $ansprechpartner = explode(" ", $data['ansprechpartner_id']);
    $ansprechpartnerId = $ansprechpartner[0];
    $ansprechpartnerId = $this->app->DB->Select("SELECT id FROM ansprechpartner WHERE id = '$ansprechpartnerId' LIMIT 1");
    if($ansprechpartnerId === '' || $ansprechpartnerId <= 0){
      $ansprechpartnerId = 0;
    }
  }else{
    $ansprechpartnerId = 0;
  }
  $data['ansprechpartner_id'] = $ansprechpartnerId;
  
 
  if($data['von'] && $data['bezeichnung'])
  {
    
    $id = 0;
    if($data['id'])
    {
      $id = $this->app->DB->Select("SELECT id from kalender_event where id = ".(int)$data['id']." Limit 1");
    }
    if($id)
    {
      $sql = 'UPDATE kalender_event set ';
      $first = true;
      foreach($data as $k => $v)
      {
        if($k != 'id')
        {
          if(!$first)$sql .= ', ';
          $first = false;
          $sql .= $k." = '".$v."'";
          
        }
        
      }
      $sql .= " where id = ".$id;
      
     if($this->app->DB->Update($sql)){
       $calendarActionType = 'modified';
       $this->app->erp->RunHook('kalender_event_hook', 2, $id, $calendarActionType);
       return $id;
     };
     return false;
    } else {
      
      $sql = "INSERT INTO kalender_event (";
      $first = true;
      foreach($data as $k => $v)
      {
        if($k != 'id')
        {
          if(!$first)$sql .= ', ';
          $first = false;
          $sql .= $k;
        }
      }
      $sql .= ") values (";
      $first = true;
      foreach($data as $k => $v)
      {
        if($k != 'id')
        {
          if(!$first)$sql .= ', ';
          $first = false;
          $sql .= "'".$v."'";
        }
      }
      $sql .= ")";
      
      if($this->app->DB->Insert($sql)){
        $result = $this->app->DB->GetInsertID();

        $calendarActionType = 'added';
        $this->app->erp->RunHook('kalender_event_hook', 2, $result, $calendarActionType);

        $this->app->DB->Insert("INSERT INTO kalender_user (id,event,userid) VALUES ('','$result','".$this->app->User->GetID()."')");
        return $result;
      }
      return false;
    }
      
    
    
  } else {
    
  }
  return false;
}


function AdresseBriefSaveWiedervorlage()
{
  $data = array();
  $data['id'] = $this->app->Secure->GetPOST('eintragId');
  $data['adresse'] = $this->app->Secure->GetGET('id');
  $bearbeiterdaten = explode(" ",$this->app->Secure->GetPOST('bearbeiter'));
  $data['bearbeiter'] = (int)$this->app->DB->Select("SELECT id from adresse where mitarbeiternummer = '".$bearbeiterdaten[0]."'");
  $mitarbeiterdaten = explode(" ",$this->app->Secure->GetPOST('adresse_mitarbeiter'));
  $data['adresse_mitarbeiter'] = (int)$this->app->DB->Select("SELECT id from adresse where mitarbeiternummer = '".$mitarbeiterdaten[0]."'");
  $data['bezeichnung'] = $this->app->Secure->GetPOST('betreff');
  $data['beschreibung'] = $this->app->Secure->GetPOST('content');
  $data['stages'] = $this->app->Secure->GetPOST('stages');
  $data['betrag'] = $this->app->Secure->GetPOST('betrag');
  $data['chance'] = $this->app->Secure->GetPOST('chance');

  
  $data['datum_erinnerung'] = $_POST['datumerinnerung'];
  $data['zeit_erinnerung'] = $_POST['uhrzeiterinnerung']?$_POST['uhrzeiterinnerung']:'0:00';
  if(!$data['datum_erinnerung'])$data['datum_erinnerung'] = '0:00';
  $data['module'] = $this->app->Secure->GetGET("module");
  $data['action'] = $this->app->Secure->GetGET("action");
  $data['abgeschlossen'] = (int)$this->app->Secure->GetPOST("abgeschlossen");
  $data['prio'] = (int)$this->app->Secure->GetPOST("prio");
  $data['projekt'] = $this->app->Secure->GetPOST("projekt");
  if (!empty($data['projekt'])) {
    $data['projekt'] = explode(' ',$data['projekt']);
    $data['projekt'] = (int)$this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='".$data['projekt'][0]."' AND abkuerzung!='' LIMIT 1");
  } else {
    // Kein Projekt gewählt
    $projekt = (int)$this->app->DB->Select("SELECT f.standardprojekt FROM `firma` AS f WHERE f.id='".$this->app->User->GetFirma()."' LIMIT 1");
    $projekt_bevorzugt = (int)$this->app->DB->Select("SELECT u.projekt_bevorzugen FROM `user` AS u WHERE u.id='".$this->app->User->GetID()."' LIMIT 1");
    if($projekt_bevorzugt === 1){
      $projekt = (int)$this->app->DB->Select("SELECT projekt FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1");
    }
    $data['projekt'] = $projekt;
  }

  $data['stages'] = explode(' ',$data['stages']);
  $data['stages'] = $data['stages'][0];
  $data['betrag'] = str_replace(',','.',$data['betrag']);

  $data['ansprechpartner_id'] = $this->app->Secure->GetPOST("ansprechpartner");
  if($data['ansprechpartner_id'] != ""){
    $ansprechpartner = explode(" ", $data['ansprechpartner_id']);
    $ansprechpartnerId = $ansprechpartner[0];
    $ansprechpartnerId = $this->app->DB->Select("SELECT id FROM ansprechpartner WHERE id = '$ansprechpartnerId' LIMIT 1");
    if($ansprechpartnerId === '' || $ansprechpartnerId <= 0){
      $ansprechpartnerId = 0;
    }
  }else{
    $ansprechpartnerId = 0;
  }
  $data['ansprechpartner_id'] = $ansprechpartnerId;

  $data['datum_erinnerung'] = $this->app->String->Convert($data['datum_erinnerung'],"%1.%2.%3","%3-%2-%1");
  if($data['datum_erinnerung'] && $data['zeit_erinnerung'] && $data['bezeichnung'])
  {
    
    $id = 0;
    if($data['id'])
    {
      $id = $this->app->DB->Select("SELECT id from wiedervorlage where id = ".(int)$data['id']." Limit 1");
    }
    if($id)
    {
      $sql = 'UPDATE wiedervorlage set ';
      $first = true;
      foreach($data as $k => $v)
      {
        if($k != 'id')
        {
          if(!$first)$sql .= ', ';
          $first = false;
          $sql .= $k." = '".$v."'";
          
        }
        
      }
      $sql .= " where id = ".$id;
      
     if($this->app->DB->Update($sql))return $id;
     return false;
    } else {
      
      $data['datum_angelegt'] = $this->app->Secure->GetPOST('datum');
      $data['zeit_angelegt'] = $this->app->Secure->GetPOST('uhrzeit');
      $data['datum_angelegt'] = $this->app->String->Convert($data['datum_angelegt'],"%1.%2.%3","%3-%2-%1");
      
      $sql = "INSERT INTO wiedervorlage (";
      $first = true;
      foreach($data as $k => $v)
      {
        if($k != 'id')
        {
          if(!$first)$sql .= ', ';
          $first = false;
          $sql .= $k;
        }
      }
      $sql .= ") values (";
      $first = true;
      foreach($data as $k => $v)
      {
        if($k != 'id')
        {
          if(!$first)$sql .= ', ';
          $first = false;
          $sql .= "'".$v."'";
        }
      }
      $sql .= ")";
      
      if($this->app->DB->Insert($sql))return $this->app->DB->GetInsertID();
      return false;
    }
      
    
    
  } else {
    
  }
  return false;
  
}

function AdresseBrief() {
  if($this->app->Secure->GetGET('cmd') == 'layoutoeffnen')
  {
    $layout = $this->app->Secure->GetGET('layout');
    $id = $this->app->Secure->GetGET('id');
    $query = '
          SELECT
          ke.id,
          DATE_FORMAT(ke.von, "%d.%m.%Y") as datum,
          DATE_FORMAT(ke.bis, "%d.%m.%Y") as datumbis,
          DATE_FORMAT(ke.von, "%H:%i") as uhrzeit,
          DATE_FORMAT(ke.bis, "%H:%i") as uhrzeitbis,
          ke.allDay,
          ke.public,
          ke.adresse,
          ke.angelegtvon,
          ke.adresseintern,
          ke.bezeichnung,
          ke.beschreibung,
          a.telefon as telefonmitarbeiter,
          a.name as vertriebmitarbeiter,
          a.email as emailmitarbeiter,
          a2.name as bearbeiter
            FROM
            kalender_event ke
            LEFT JOIN adresse a ON a.id=ke.adresseintern
            LEFT JOIN adresse a2 ON a2.id=ke.angelegtvon
            WHERE
            ke.id = ' . $id . '
            ';
    $kalenderevent = $this->app->DB->SelectRow($query);

    $data = array();

    if($kalenderevent)
    {
      foreach($kalenderevent as $key => $value)
      {
        $data[strtoupper($key)] = $value;
      }
    }
    $adressen = $this->app->DB->SelectRow("SELECT * FROM adresse WHERE id = '".$kalenderevent['adresse']."'");
    if($adressen)
    {
      foreach($adressen as $key => $value)
      {
        $data['ADRESSE_'.strtoupper($key)] = $value;
      }
    }
    if(class_exists('LayoutvorlagenPDF'))
    {
      $pdf = new LayoutvorlagenPDF($this->app);
      $pdf->SetLanguage('deutsch');
      $layout = $this->app->DB->SelectRow('SELECT * FROM layoutvorlagen WHERE id = ' . $layout);

      $layoutpositionen = $this->app->DB->SelectArr('SELECT * FROM layoutvorlagen_positionen WHERE layoutvorlage = ' . $layout['id']);
      if($pdf->GetLayoutvorlage($layout['id'],$data)) {
        $pdf->filename = 'Besuchsbericht'.($adressen['kundennummer']?'_'.$adressen['kundennummer']:'').'.pdf';
        $pdf->displayDocument($name);
      }
    }
    $this->app->ExitXentral();
  }
  $this->app->YUI->AutoComplete("ansprechpartner","ansprechpartner","","&adresse=$id");
  $this->app->YUI->AutoComplete("projekt","projektname",1);
  $this->app->YUI->TagEditor('internebezeichnung', array('width'=>370));

  $pType = $this->app->Secure->GetPOST('type');
  $do = $this->app->Secure->GetPOST('do');

  $json = array();

  $json['status'] = 0;
  $json['statusText'] = '';

  if (isset($pType) && !empty($pType)) {

    $newId = 0;
    if($pType !== 'wiedervorlage' && $pType !== 'kalender')
    {
      $newId = $this->AdresseBriefSaveDocument();
    } else {
      if($pType === 'kalender')
      {
        $newId = $this->AdresseBriefSaveKalender();
      }else{
        $newId = $this->AdresseBriefSaveWiedervorlage();
      }
    }

    if ($newId > 0) {
      $json['status'] = 1;
      $json['statusText'] = 'Das Dokument wurde gespeichert.';
      $json['statusId'] = $newId;
      if ($pType === 'notiz') {
        $this->app->erp->RunHook('address_note_created', 1, $newId);
      }
    }

    if($pType !== 'email' || !$this->app->Secure->GetPOST('save'))
    {    
      if (isset($do) && !empty($do)) {

        switch ($do) {
          case 'PDF':

            $json['id'] = $newId;
            $json['responseType'] = 'PDF';
            $json['statusText'] = 'PDF wurde erstellt.';

            $this->app->DB->Update('
                UPDATE
                dokumente
                SET
                sent = 1
                WHERE
                id ='.$newId.'
                ');
 

            break;
          case 'DRUCKEN':
            $drucker = $this->app->Secure->GetPOST('drucker');
    
            $this->app->erp->BriefpapierHintergrundDisable($drucker);

            $tmpBrief = $this->AdresseBriefCreatePDF($newId, false);
            $this->app->printer->Drucken($drucker, $tmpBrief);

            $this->app->DB->Update('
                UPDATE
                dokumente
                SET
                sent = 1
                WHERE
                id ='.$newId.'
                ');
 

            unlink($tmpBrief);
            $json['statusText'] = 'Dokument wird gedruckt.';
            $json['responseType'] = 'TEXT';

            break;
          case 'EMAIL':

            $data = $this->app->DB->SelectRow('
                SELECT
                *
                FROM
                dokumente
                WHERE
                id = ' . $newId . '
                ');

            // TODO MK korrekte cc und bcc holen
            $cc = $this->app->erp->get_emails($data['email_cc']);
            $bcc = $this->app->erp->get_emails($data['email_bcc']);

            //TODO MK email_an und to richtig extrahieren
            //$email_string = 'Benedikt Sauter <sauter@embedded-projects.net>';
            $tmp_an = trim($data['email_an']);
            list($data['to'], $data['email_an']) = explode(' <', trim($data['email_an'], '> '));
            list($data['von'], $data['email']) = explode(' <', trim($data['von'], '> '));

            if($data['email_an']=="") {
              $data['email_an'] = $tmp_an;
              $data['to'] = $tmp_an;
            }

            //$this->app->erp->LogFile("BCC $bcc CC $cc");

            $dateien = array();
            foreach($_POST as $pk => $pv)
            {
              $pka = explode('_',$pk);
              if($pka[0] === 'datei' && isset($pka[1]) && $pka[1] && is_numeric($pka[1]))
              {
                $dateiname = $this->app->erp->GetDateiName($pka[1]);
                if($dateiname)
                {
                  $dateiinhalt = $this->app->erp->GetDatei($pka[1]);
                  
                  if($handle = fopen ($this->app->erp->GetTMP().$dateiname, "wb"))
                  {
                    fwrite($handle, $dateiinhalt);
                    fclose($handle);
                    $dateien[] = $this->app->erp->GetTMP().$dateiname;
                  }                   
                }
              }
            }
            
            if(strpos($data['betreff'],'{') !== false) {
              $data['betreff'] = $this->app->erp->ParseUserVars('adresse', $data['adresse_to'], $data['betreff']);
            }
            if(strpos($data['content'],'{') !== false) {
              $data['content'] = $this->app->erp->ParseUserVars('adresse', $data['adresse_to'], $data['content']);
            }
      
            $mailSend = $this->app->erp->MailSend(
                $data['email'],
                $data['von'],
                $data['email_an'],
                $data['to'],
                $data['betreff'],
                $data['content'],
                $dateien,
                $projekt,true,$cc,$bcc
                );
                
            if($dateien && is_array($dateien))
            {
              foreach($dateien as $datei)unlink($datei);
            }

            if($mailSend =='1') {
              $json['status'] = 1;
              $json['type'] = 'email';
              $json['statusText'] = 'Email wurde gesendet.';
              $this->app->DB->Update('
                  UPDATE
                  dokumente
                  SET
                  sent = 1,
                  send_as = "email"
                  WHERE
                  id = ' . $data['id'] . '
                  ');
            } else {
              $json['status'] = 0;
              $json['statusText'] = 'Email konnte nicht gesendet werden. ('.$this->app->erp->mail_error.')';
            }

          break;

          default:
          break;
        }

      }

      echo json_encode($json);
      $this->app->ExitXentral();
    }
  }

  $id = $this->app->Secure->GetGET('id');

  $this->AdresseMenu();
 

  $this->app->User->SetParameter('adresse_brief_adresseId', $id);

  $count = 0;
  $count += $this->app->DB->Select('SELECT count(id) FROM dokumente WHERE adresse_to = ' . $id);
  $count += $this->app->DB->Select('SELECT count(id) FROM dokumente_send WHERE adresse = ' . $id);
  $count += $this->app->DB->Select('SELECT count(id) FROM wiedervorlage WHERE adresse = ' . $id);
  $count += $this->app->DB->Select('SELECT count(id) FROM kalender_event WHERE adresse = '.$id);
  $count += $this->app->DB->Select('SELECT count(tn.id) FROM ticket_nachricht tn INNER JOIN ticket t ON tn.ticket = t.schluessel WHERE t.adresse = '.$id);

  if ($count > 0) {
    $this->app->YUI->TableSearch('TABELLE', 'adresse_brief');
    $this->app->Tpl->Set('TABELLEFLAG', 0);
  } else {
    $this->app->Tpl->Set('TABELLE', '<br><div class="info">Es sind noch keine Einträge vorhanden.</div>');
    $this->app->Tpl->Set('TABELLEFLAG', 1);
  }

  if(!$this->app->erp->RechteVorhanden('wiedervorlage','list'))
  {
    $this->app->Tpl->Set('VORWIEDERVORLAGE','<!-- ');
    $this->app->Tpl->Set('NACHWIEDERVORLAGE',' -->');
  }
/*
  if(!$this->app->erp->RechteVorhanden('ticket','offene'))
  {
    $this->app->Tpl->Set('VORTICKETS','<!-- ');
    $this->app->Tpl->Set('NACHTICKETS',' -->');
  }
*/


  $cmd = $this->app->Secure->GetPOST('cmd');
  if($cmd=="crm")
    $this->app->Tpl->Parse('CRMTABELLE',"adresse_crm_tabelle.tpl");


  $this->app->Tpl->Parse('TAB1',"adresse_brief.tpl");
  $this->app->Tpl->Parse('PAGE',"tabview.tpl");
  $befehl = $this->app->User->GetParameter('adresse_brief_befehl');
  if($befehl)
  {
    $this->app->User->SetParameter('adresse_brief_befehl','');
    $this->app->Tpl->Add('PAGE','
    <script type="text/JavaScript" language="javascript">
    $(document).ready(function() {
      '.$befehl.'
    });
    </script>
    ');
  }

  // Wenn GET-Parameter "telefon_notiz_erstellen" gesetzt ist, direkt Anlegen-Dialog öffnen
  $telefonNotizErstellen = (int)$this->app->Secure->GetGET('telefon_notiz_erstellen');
  if ($telefonNotizErstellen === 1) {
    $this->app->Tpl->Add('PAGE','
      <script type="text/javascript">
      $(document).ready(function() { briefAnlegen(\'telefon\'); });
      </script>
    ');
  }
}



function AdresseBriefEditPopup()
{
  $frame = $this->app->Secure->GetGET("frame");
  $id= $this->app->Secure->GetGET('id');
  $sid= $this->app->Secure->GetPOST('sid');

  if($frame=="false")
  {
    // hier nur fenster größe anpassen
    $this->app->YUI->IframeDialog(800,650,"index.php?module=adresse&action=briefeditpopup&id=$id&sid=$sid");
  } else {

    $adresse = $id;

    $typ = $this->app->DB->Select("SELECT dokument FROM dokumente_send WHERE id='$sid' LIMIT 1");
    //$parameter = $this->app->DB->Select("SELECT parameter FROM dokumente_send WHERE id='$sid' LIMIT 1");
    $parameter = $sid;

    //echo "typ = $typ ".$parameter;

    $this->app->erp->DokumentMask('PAGE',$typ,$parameter,$adresse,'',true);

    $this->app->BuildNavigation=false;
  }
}


function AdresseBriefDelete()
{
  $sid = $this->app->Secure->GetPOST('sid');
  $id = $this->app->Secure->GetGET('id');

  $this->app->DB->Update("UPDATE dokumente_send SET geloescht=1 WHERE id='$sid' LIMIT 1");

  $this->AdresseBrief();
}

function AdresseBriefPDF()
{
  $sid = $this->app->Secure->GetGET('sid'); // 30.03.19 von POST zu GET BS
  $id = $this->app->Secure->GetGET('id');

  //$Brief = new Geschaeftsbrief(&$this->app,$sid);
  $projekt = $this->app->DB->Select("SELECT projekt FROM dokumente WHERE id='$sid'");
  $Brief = new BriefPDF($this->app,$projekt);
  $Brief->GetBrief($sid);
  $Brief->displayDocument();

  $this->AdresseBrief();
}


function AdresseBelege()
{
  $cmd = $this->app->Secure->GetPOST('cmd');
  $id = $this->app->Secure->GetGET('id');
  $von = $this->app->User->GetParameter("adresse_belege_von");
  $bis = $this->app->User->GetParameter("adresse_belege_bis");

  if($cmd == 'kundensaldodatumsrelevant'){
    $von = $this->app->Secure->GetGET("von");
    $bis = $this->app->Secure->GetGET("bis");
  }

if (!is_null($von) && !is_null($bis)) 
{
	$von = date_format(date_create_from_format('d.m.Y', $von), 'Y-m-d');
	$bis = date_format(date_create_from_format('d.m.Y', $bis), 'Y-m-d');
}

  $rechnungt = $this->app->DB->Select("SELECT SUM(soll-ist) FROM rechnung WHERE status != 'angelegt' AND zahlungsstatus != 'bezahlt' AND adresse = '$id' AND datum >= '$von' AND datum <= '$bis'");
  //$gutschriftt = $this->app->DB->Select("SELECT SUM(soll-ist) FROM gutschrift WHERE status != 'angelegt' AND (manuell_vorabbezahlt != '0000-00-00' OR manuell_vorabbezahlt IS NOT NULL) AND adresse = '$id' AND datum >= '$von' AND datum <= '$bis'");
  $gutschriftt = $this->app->DB->Select("SELECT SUM(soll-ist) FROM gutschrift WHERE status != 'angelegt' AND (manuell_vorabbezahlt = '0000-00-00' OR manuell_vorabbezahlt IS NULL) AND zahlungsstatus != 'bezahlt' AND rechnungid = 0 AND adresse = '$adresse' AND datum >= '$von' AND datum <= '$bis'");
  $verbindlichkeitt = $this->app->DB->Select("SELECT SUM(betrag-betragbezahlt) FROM verbindlichkeit WHERE status = 'offen' AND adresse = '$id' AND rechnungsdatum >= '$von' AND rechnungsdatum <= '$bis'");
  $kundensaldot = $rechnungt - $gutschriftt - $verbindlichkeitt;
  $kundensaldot = round($kundensaldot, 2);

  if($kundensaldot > 0){
    $kundensaldot = "<font color=red>-".number_format($kundensaldot,2,',','.')."</font>";
  }else if($kundensaldot == 0){
    $kundensaldot = "0,00";
  }else{
    $kundensaldot = number_format($kundensaldot,2,',','.');
  }
  if($cmd === 'kundensaldodatumsrelevant'){
    echo json_encode($kundensaldot);
    $this->app->ExitXentral();
  }
  $this->AdresseMenu();

  $kreditlimit = $this->app->DB->Select("SELECT kreditlimit FROM adresse WHERE id='$id' LIMIT 1");
 // $saldo = $this->app->erp->SaldoAdresse($id);

  $kreditlimit_frei = $kreditlimit - $saldo;

  if($kreditlimit <=0) { 
    $kreditlimit="kein Limit";
    $kreditlimit_frei = "kein Limit";
  } else $kreditlimit = number_format($kreditlimit,2,',','.');

  $this->app->Tpl->Set('KREDITLIMIT',$kreditlimit);
  $this->app->Tpl->Set('KREDITLIMITFREI',$kreditlimit_frei);


  //$this->app->Tpl->Set('UMSATZ',number_format($this->app->erp->UmsatzAdresseAuftragJahr($id),2,',','.'));
  $this->app->Tpl->Set('UMSATZ',number_format($this->app->erp->UmsatzAdresseRechnungJahr($id),2,',','.'));

 /* $saldo = round($saldo,2);

  if($saldo > 0)
    $saldo = "<font color=red>-".number_format($saldo,2,',','.')."</font>";
  else if ($saldo==0) $saldo="0,00";
  else $saldo = number_format($saldo,2,',','.');
*/
//  $this->app->Tpl->Set('SALDO',$saldo);


  $kundensaldo = $this->app->erp->KundenSaldo($id);

  if($kundensaldo > 0){
    $kundensaldo = "<font color=red>-".number_format($kundensaldo,2,',','.')."</font>";
  }else if($kundensaldo == 0){
    $kundensaldo = "0,00";
  }else{
    $kundensaldo = number_format($kundensaldo,2,',','.');
  }

  $this->app->Tpl->Set('KUNDENSALDO', $kundensaldo);
  $this->app->Tpl->Set('KUNDENSALDODATUMSRELEVANT', $kundensaldot);

  if($this->app->erp->IsAdresseSubjekt($id,"Lieferant")){
    $this->app->Tpl->Set('MITTEBESTELLUNG',

      '<li class="filter-item">
        <label for="bestellung" class="switch">
          <input type="checkbox" value="1" id="bestellung" />
          <span class="slider round"></span>
        </label>
        <label for="bestellung">{|Bestellung|}</label>
       </li>
       <li class="filter-item">
        <label for="verbindlichkeit" class="switch">
          <input type="checkbox" value="1" id="verbindlichkeit" />
          <span class="slider round"></span>
        </label>
        <label for="verbindlichkeit">{|Verbindlichkeit|}</label>
       </li>');



  }

  $this->app->Tpl->Set('ID',$id);

  $this->app->YUI->DatePicker("von");
  $this->app->YUI->DatePicker("bis");

  $this->app->YUI->AutoSaveUserParameter("von","adresse_belege_von");
  $this->app->YUI->AutoSaveUserParameter("bis","adresse_belege_bis");

  $this->app->YUI->TableSearch('TAB1',"adressebelege");
  //$this->app->YUI->TableSearch('TAB2',"adresse_auftrag");
  //$this->app->YUI->TableSearch('TAB3',"adresse_rechnung");
  //$this->app->YUI->TableSearch('TAB4',"adresse_gutschrift");
  //$this->app->YUI->TableSearch('TAB5',"adresse_lieferschein");

  $this->app->Tpl->Parse('PAGE',"adresse_belege.tpl");
}



function AdresseEmail()
{
  $this->AdresseMenu();


  // NEU füllen
  $widget = new WidgetEmail($this->app,'TAB2');
  $widget->Create();

  // UEBERSICHT füllen
  $this->app->Tpl->Set('HEADING',"Adresse");
  $this->app->Tpl->Set('SUBHEADING',"Email schreiben");
  $adresse = $this->app->User->GetAdresse();

  //Offene Aufgaben
  $table = new EasyTable($this->app);
  $table->Query("SELECT betreff, id FROM email");
  $table->DisplayNew('INHALT', "<a href=\"index.php?module=adresse&action=emaileditpopup&frame=false&id=%value%\" 
      onclick=\"makeRequest(this);return false\">Bearbeiten</a>");
  $this->app->Tpl->Parse('TAB1',"rahmen.tpl");

  // PARSE
  $this->app->Tpl->Set('AKTIV_TAB1',"selected");

  $this->app->Tpl->Parse('PAGE',"emailuebersicht.tpl");

}



function AdresseEmailEditPopup()
{
  $frame = $this->app->Secure->GetGET("frame");
  if($frame=="false")
  {
    // hier nur fenster größe anpassen
    $this->app->YUI->IframeDialog(510,610);
  } else {
    // nach page inhalt des dialogs ausgeben
    $widget = new WidgetEmail($this->app,'PAGE');
    $widget->Edit();
    $this->app->BuildNavigation=false;
  }
}




function AdresseSuchmaske()
{
  $typ=$this->app->Secure->GetGET("typ");

  $this->app->Tpl->Set('HEADING',"Suchmaske f&uuml;r Adressen");
  $table = new EasyTable($this->app);
  switch($typ) {
    case "auftragrechnung":
      $table->Query("SELECT typ,name, ort, plz, strasse, abteilung, unterabteilung, ustid, email, adresszusatz, id as kundeadressid, id FROM adresse WHERE geloescht=0
          order by name");
      break;
    case "auftraglieferschein":
      $table->Query("SELECT typ as liefertyp, name as liefername, ort as lieferort, plz as lieferplz, strasse as lieferstrasse, abteilung as lieferabteilung, unterabteilung
          as lieferunterabteilung, adresszusatz as lieferadresszusatz, id as lieferadressid  FROM adresse WHERE geloescht=0 order by name");
      break;
    default:
      $table->Query("SELECT typ,name, ort, plz, strasse, abteilung, unterabteilung, ustid, email, adresszusatz, id as kundeadressid, id FROM adresse WHERE geloescht=0 order by name");
  }

  $table->DisplayWithDelivery('PAGE');

  $this->app->BuildNavigation=false;
}



function AdresseKundevorlage()
{
  $this->AdresseMenu();
  $id = $this->app->Secure->GetGET('id');
  // prufe ob es schon einen eintrag gibt
  $check = $this->app->DB->Select("SELECT id FROM kundevorlage WHERE adresse='$id' LIMIT 1");
  if( !($check > 0 && is_numeric($check)))
  {
    $this->app->DB->Insert("INSERT INTO kundevorlage (id,adresse) VALUES ('','$id')");
  }

  $check = $this->app->DB->Select("SELECT id FROM kundevorlage WHERE adresse='$id' LIMIT 1");
  $this->app->Secure->GET['id']=$check;
  $this->app->Tpl->Set('AKTIV_TAB1',"selected");
  $widget = new WidgetKundevorlage($this->app,'PAGE');
  $widget->Edit();
  $this->app->Secure->GET['id']=$id;
}

function AdresseAddPosition()
{
  $sid = $this->app->Secure->GetPOST('sid');
  $id = $this->app->Secure->GetGET('id');
  $menge = $this->app->Secure->GetGET("menge");
  $datum  = $this->app->Secure->GetGET("datum");
  $datum  = $this->app->String->Convert($datum,"%1.%2.%3","%3-%2-%1");
  $tmpid = $this->app->erp->AddAdressePosition($id, $sid,$menge,$datum);

  $art  = $this->app->Secure->GetGET("art");

  if(!$this->app->erp->CheckDateValidate($datum)) $datum=date('Y-m-d');

  if($art==='abo'){
    $this->app->DB->Update("UPDATE abrechnungsartikel SET wiederholend=1,startdatum='$datum',zahlzyklus=1 WHERE id='$tmpid' LIMIT 1");
  }
  else if ($art==='einmalig'){
    $this->app->DB->Update("UPDATE abrechnungsartikel SET wiederholend=0,preisart='einmalig' WHERE id='$tmpid' LIMIT 1");
  }
  
  $this->app->DB->Update("UPDATE abrechnungsartikel SET angelegtvon='".$this->app->User->GetID()."',angelegtam=NOW() WHERE id='$tmpid' LIMIT 1");

  $this->app->Location->execute("index.php?module=adresse&action=artikel&id=$id");
}

function AdresseLieferantvorlage()
{

  //zahlungsweise   zahlungszieltage  zahlungszieltageskonto  zahlungszielskonto  versandart
  //zahlungsweiselieferant  zahlungszieltagelieferant   zahlungszieltageskontolieferant   zahlungszielskontolieferant   versandartlieferant
  $arr = $this->app->DB->SelectArr("SELECT id,kundennummerlieferant FROM adresse WHERE lieferantennummer >0");

  foreach($arr as $key=>$value)
  {
    if($value['kundennummerlieferant']=="")
    {
      $id = $value['id'];
      $kundennummer = $this->app->DB->Select("SELECT kundennummer FROM lieferantvorlage WHERE adresse='$id' LIMIT 1");
      $zahlungsweiselieferant = $this->app->DB->Select("SELECT zahlungsweise FROM lieferantvorlage WHERE adresse='$id' LIMIT 1");
      $zahlungszieltagelieferant = $this->app->DB->Select("SELECT zahlungszieltage FROM lieferantvorlage WHERE adresse='$id' LIMIT 1");
      $zahlungszieltageskontolieferant = $this->app->DB->Select("SELECT zahlungszielskonto FROM lieferantvorlage WHERE adresse='$id' LIMIT 1");
      $versandartlieferant = $this->app->DB->Select("SELECT versandart FROM lieferantvorlage WHERE adresse='$id' LIMIT 1");

      if($kundennummer !="")	
      {
        echo "UPDATE adresse SET kundennummerlieferant='$kundennummer',zahlungsweiselieferant='$zahlungsweiselieferant',
             zahlungszieltagelieferant='$zahlungszieltagelieferant',zahlungszieltageskontolieferant='$zahlungszieltageskontolieferant',
             versandartlieferant='$versandartlieferant' WHERE id='$id';";
      } 
    }

  }


  $this->AdresseMenu();
  $id = $this->app->Secure->GetGET('id');
  // prufe ob es schon einen eintrag gibt
  $check = $this->app->DB->Select("SELECT id FROM lieferantvorlage WHERE adresse='$id' LIMIT 1");
  if( !($check > 0 && is_numeric($check)))
  {
    $this->app->DB->Insert("INSERT INTO lieferantvorlage (id,adresse) VALUES ('','$id')");
  }

  $check = $this->app->DB->Select("SELECT id FROM lieferantvorlage WHERE adresse='$id' LIMIT 1");
  $this->app->Secure->GET['id']=$check;
  $this->app->Tpl->Set('AKTIV_TAB1',"selected");
  $widget = new WidgetLieferantvorlage($this->app,'PAGE');
  $widget->Edit();
  $this->app->Secure->GET['id']=$id;
}

  /**
   * @param int $addressId
   *
   * @return float
   */
public function getAboMonthSum($addressId) {
  if(empty($addressId)) {
    return 0.00;
  }
  $sum = (float)$this->app->DB->Select(
    sprintf(
      "SELECT SUM(
          abo.menge * abo.preis * (1 - rabatt / 100)
          * 
          IF(
              abo.preisart = 'jahr' OR abo.preisart = '360tage', 
              IF(abo.zahlzyklus <= 1, 1/12,1 / (abo.zahlzyklus * 12)),
              IF(
                  abo.preisart = 'wochen', 
                  IF(abo.zahlzyklus <= 1,  7 / 30, 1 / (abo.zahlzyklus * 30 / 7)) ,
                  IF(abo.preisart = 'einmalig', 
                     0,
                        IF(abo.preisart = 'monat' OR abo.preisart = '30tage',
                          1,
                          IF(abo.zahlzyklus <= 1, 1, 1/ (abo.zahlzyklus))
                    )
                  )
              )
          )
      )
      FROM abrechnungsartikel AS abo
      WHERE abo.adresse = %d 
        AND (abo.startdatum <= CURDATE() OR IFNULL(abo.startdatum,'0000-00-00') = '0000-00-00')
        AND (abo.enddatum >= CURDATE() OR IFNULL(abo.enddatum,'0000-00-00') = '0000-00-00')",
      $addressId
    )
  );

  return $sum;
}


function AdresseArtikelPosition($withmenu = true)
{
  if($withmenu) {
    $this->AdresseMenu();
  }
  $id = $this->app->Secure->GetGET('id');
  /* neu anlegen formular */
  $artikelart = $this->app->Secure->GetPOST("artikelart");
  $bezeichnung = $this->app->Secure->GetPOST("bezeichnung");
  $beschreibung = $this->app->Secure->GetPOST("beschreibung");
  $vpe = $this->app->Secure->GetPOST("vpe");
  $umsatzsteuerklasse = $this->app->Secure->GetPOST("umsatzsteuerklasse");
  $waehrung = $this->app->Secure->GetPOST("waehrung");
  $projekt= $this->app->Secure->GetPOST("projekt");
  $preis = $this->app->Secure->GetPOST("preis");
  $preis = str_replace(',','.',$preis);
  $menge = $this->app->Secure->GetPOST("menge");
  $menge = str_replace(',','.',$menge);
  $art = $this->app->Secure->GetPOST("art");
  $lieferdatum = $this->app->Secure->GetPOST("lieferdatum");
  $zahlzyklus = $this->app->Secure->GetPOST("zahlzyklus");
  $wiederholend= $this->app->Secure->GetPOST("wiederholend");
  $startdatum= $this->app->Secure->GetPOST("startdatum");

  if($lieferdatum=="") $lieferdatum=date("d.m.Y");

  $cmd= $this->app->Secure->GetGET('cmd');

  switch($cmd)
  {

    case "getArtikelData":
      $id= $this->app->Secure->GetPOST("artikel");
      $adresse = $this->app->Secure->GetPOST("adresse");
      $artikel = $this->app->DB->SelectArr("SELECT * FROM artikel WHERE nummer='$id' AND nummer!='' LIMIT 1");
      $artikel[0]['nettopreis'] = $this->app->erp->GetVerkaufspreis($artikel[0]['id'],1,$adresse);
      echo json_encode($artikel[0]);
      $this->app->ExitXentral();
    break;

    case "getAboartikel":
      $id= $this->app->Secure->GetPOST('id');
      $adresse = $this->app->Secure->GetPOST("adresse");
      $artikel = $this->app->DB->SelectArr("SELECT aba.*, a.nummer FROM abrechnungsartikel aba inner JOIN artikel a ON (a.id = aba.artikel) WHERE aba.id='$id' AND aba.adresse='$adresse' LIMIT 1");
      $AboGruppen_tmp = $this->app->DB->SelectArr("SELECT id,beschreibung FROM abrechnungsartikel_gruppe where (adresse = '$adresse' OR adresse = 0) ORDER BY sort");
      if(is_array($AboGruppen_tmp)) {
        $AboGruppen = '<option>Bitte auswählen</option>';
      }else{
        $AboGruppen = '';
      }
      foreach($AboGruppen_tmp as $value){
        if($value['id'] == $artikel[0]['gruppe']){
          $selected = " selected=\"selected\"";
        }else{
          $selected='';
        }
        $AboGruppen .= '<option value="' . $value['id'] . '"  '.$selected.'>' . $value['beschreibung'] . '</option>';
      }

      if(is_array($artikel[0])) {
        $artikel[0]['startdatum'] = $this->app->String->Convert($artikel[0]['startdatum'], "%3-%2-%1", "%1.%2.%3");
        $artikel[0]['lieferdatum'] = $this->app->String->Convert($artikel[0]['lieferdatum'], "%3-%2-%1", "%1.%2.%3");
        $artikel[0]['abgerechnetbis'] = $this->app->String->Convert($artikel[0]['abgerechnetbis'], "%3-%2-%1", "%1.%2.%3");
        $artikel[0]['abgrechnetam'] = $this->app->String->Convert($artikel[0]['abgrechnetam'], "%3-%2-%1", "%1.%2.%3");
        $artikel[0]['enddatum'] = $this->app->String->Convert($artikel[0]['enddatum'], "%3-%2-%1", "%1.%2.%3");
        $artikel[0]['gruppen'] = $AboGruppen;
        echo json_encode($artikel[0]);
      }else{
        $basis['startdatum'] = date("d.m.Y");
        $basis['lieferdatum'] = "00.00.0000";
        $basis['abgerechnetbis'] = "00.00.0000";
        $basis['abgrechnetam'] = "00.00.0000";
        $basis['enddatum'] = "00.00.0000";
        $basis['preisart'] = "monat";
        $basis['preis'] = '0.00';
        $basis['menge'] = '0.00';
        $basis['status'] = "1";
        $basis['dokument'] = "rechnung";
        $basis['gruppen'] = $AboGruppen;
        echo json_encode($basis);
      }
      $this->app->ExitXentral();
    break;


    case "moveAboArtikel":
      $id= $this->app->Secure->GetPOST('id');
      $direction = $this->app->Secure->GetPOST("direction");
      // wir schauen erstmal ob der Eintrag in einer Gruppe ist, und holen dann alle Artikel dieser gruppe
      $artikel_list = $this->app->DB->SelectArr("SELECT id FROM abrechnungsartikel where gruppe=(Select gruppe from abrechnungsartikel where id='$id') order by sort asc");
      $counter=0;
      foreach ($artikel_list as $value){
        if($value['id'] == $id){
          $moveItem = $counter;
        }else{
          $counter++;
        }
        $artikel[] = $value['id'];
      }

      if($direction === 'down'){
        $neuArtikelSortierung = $this->down($artikel,$moveItem);
      } else{
        $neuArtikelSortierung = $this->up($artikel,$moveItem);
      }

      foreach ($neuArtikelSortierung as $key => $value){
        //$neuePos=0;
        $neuePos = $key+1;
        $update = $this->app->DB->Update("UPDATE abrechnungsartikel set sort='$neuePos' where id='$value'");
      }
      echo json_encode(array(
          'status' => 1
      ));
      $this->app->ExitXentral();
    break;
    case "saveAboartikel":
      $id= $this->app->Secure->GetPOST('id');
      $adresse = $this->app->Secure->GetPOST("adresse");
      $artikel = $this->app->Secure->GetPOST("artikel");
      $artikelid = $this->app->Secure->GetPOST("artikelid");
      $artikelueberschreiben = $this->app->Secure->GetPOST("artikelueberschreiben");
      $artikelneuanlage = $this->app->Secure->GetPOST("artikelneuanlage");
      $preisart= $this->app->Secure->GetPOST("preisart");
      $rabatt= $this->app->Secure->GetPOST("rabatt");
      $dokument= $this->app->Secure->GetPOST("dokument");
      $gruppe= $this->app->Secure->GetPOST("gruppe");
      $sort= $this->app->Secure->GetPOST("sort");
      $startdatum= $this->app->String->Convert($this->app->Secure->GetPOST("startdatum"),"%1.%2.%3","%3-%2-%1");
      $enddatum= $this->app->String->Convert($this->app->Secure->GetPOST("enddatum"),"%1.%2.%3","%3-%2-%1");
      $abgerechnetbis= $this->app->String->Convert($this->app->Secure->GetPOST("abgerechnetbis"),"%1.%2.%3","%3-%2-%1");
      $abgrechnetam= $this->app->String->Convert($this->app->Secure->GetPOST("abgrechnetam"),"%1.%2.%3","%3-%2-%1");
      $bemerkung= $this->app->Secure->GetPOST("bemerkung");
      $experte= $this->app->Secure->GetPOST("experte");
      $bezeichnung= $this->app->Secure->GetPOST("bezeichnung");
      $beschreibungersetzten= $this->app->Secure->GetPOST("beschreibungersetzten");

      $beschreibung= $this->app->Secure->GetPOST("beschreibung");

      if(!$this->app->erp->CheckDateValidate($startdatum)) $startdatum=date('Y-m-d');

      // prüfen ob ein neuer Artikel gesetzt ist
      if($artikelneuanlage == '1'){
        $tmp_id = explode(" ",$artikel);
        $tmp_id = $tmp_id[0];

        $artikeltmp = $this->app->DB->SelectArr("SELECT id,name_de,anabregs_text FROM artikel WHERE nummer='$tmp_id' LIMIT 1");
        $artikeltmp[0]['waehrung'] = $this->app->DB->Select("SELECT waehrung FROM adresse WHERE id = '".$adresse."'");

        if($artikeltmp[0]['waehrung'] == ''){
          $waehrung = "EUR";
        }
        else {
          $waehrung=$artikeltmp[0]['waehrung'];
        }

        $anzahlGruppe = $this->app->DB->Select("SELECT count(gruppe) FROM abrechnungsartikel WHERE gruppe='$gruppe' AND adresse='$adresse'");

        if($sort == ''){$sort=$anzahlGruppe +1;}

        $this->app->DB->Insert("INSERT INTO abrechnungsartikel (
              id,artikel,bezeichnung,beschreibung,menge,preis, preisart,rabatt, dokument, sort,lieferdatum, steuerklasse, status,projekt,wiederholend,zahlzyklus,adresse,startdatum,enddatum,gruppe,experte,waehrung,abgerechnetbis, abgrechnetam,bemerkung, beschreibungersetzten)
          VALUES (
          '',
          '{$artikeltmp[0]['id']}',
          '$bezeichnung',
          '$beschreibung',
          '$menge',
          '$preis',
          '$preisart',
          '$rabatt',
          '$dokument',
          '$sort',
          '$lieferdatum',
          '$umsatzsteuerklasse',
          'angelegt',
          '$projekt',
          '$wiederholend',
          '$zahlzyklus',
          '$adresse',
          '$startdatum',
          '$enddatum',
          '$gruppe',
          '$experte',
          '$waehrung',
          '$abgerechnetbis',
          '$abgrechnetam',
          '$bemerkung',
          '$beschreibungersetzten'
          )");
      }else{
        $this->app->DB->Update("UPDATE abrechnungsartikel SET
          artikel='$artikelid',
          bezeichnung='$bezeichnung',
          beschreibung = '$beschreibung',
          menge = '$menge',
          preis = '$preis',
          preisart = '$preisart',
          rabatt = '$rabatt',
          dokument = '$dokument',
          gruppe = '$gruppe',
          sort = '$sort',
          startdatum = '$startdatum',
          zahlzyklus = '$zahlzyklus',
          enddatum = '$enddatum',
          abgerechnetbis = '$abgerechnetbis',
          abgrechnetam = '$abgrechnetam',
          bemerkung = '$bemerkung',
          experte = '$experte',
          beschreibungersetzten = '$beschreibungersetzten'

          WHERE id='$id' LIMIT 1");
      }
      echo json_encode(array(
          'status' => 1
      ));
      $this->app->ExitXentral();
      break;


    case 'savegruppe':
      $sid= $this->app->Secure->GetPOST('id');
      $ansprechpartner= $this->app->Secure->GetPOST('ansprechpartner');
      $beschreibung= $this->app->Secure->GetPOST('beschreibung');
      $beschreibung2= $this->app->Secure->GetPOST('beschreibung2');
      $rabatt = $this->app->Secure->GetPOST('rabatt');

      if($rabatt != ""){
        $rabatt = str_replace(',','.',$rabatt);
      }

      $rechnung= $this->app->Secure->GetPOST('rechnung');
      //if($rechnung!="1") $rechnung=0;

      $gruppensumme= $this->app->Secure->GetPOST('gruppensumme');
      if($gruppensumme!='1') {
        $gruppensumme=0;
      }

      $rechnungadresse= $this->app->Secure->GetPOST('rechnungadresse');
      $rechnungadresse = explode(' ',$rechnungadresse);
      $rechnungadresse = $rechnungadresse[0];
      $rechnungadresse = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer='$rechnungadresse' AND kundennummer!='' LIMIT 1");

      if($rechnungadresse <=0) $rechnungadresse = 0;

      $sort= $this->app->Secure->GetPOST('sort');

      $projekt= $this->app->Secure->GetPOST('projekt');
      $projekt = explode(' ',$projekt);
      $projekt = $projekt[0];
      $projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' AND abkuerzung!='' LIMIT 1");

      $sammelrechnung = trim($this->app->Secure->GetPOST('sammelrechnung'));
      if($sammelrechnung != ''){
        $sammelrechnung = explode(' ', $sammelrechnung);
        $sammelrechnung = $sammelrechnung[0];
        $sammelrechnung = $this->app->DB->Select("SELECT id FROM adresse_abosammelrechnungen WHERE id = '$sammelrechnung' LIMIT 1");
      }else{
        $sammelrechnung = 0;
      }


      if($sid > 0)
      {
        $this->app->DB->Update("UPDATE abrechnungsartikel_gruppe SET beschreibung='$beschreibung',beschreibung2='$beschreibung2',rabatt = '$rabatt',ansprechpartner='$ansprechpartner',extrarechnung='$rechnung',projekt='$projekt',sort='$sort',gruppensumme='$gruppensumme',rechnungadresse='$rechnungadresse',sammelrechnung='$sammelrechnung' WHERE id='$sid' LIMIT 1");
      } else {
        $this->app->DB->Insert("INSERT INTO abrechnungsartikel_gruppe (id,beschreibung,beschreibung2,rabatt,ansprechpartner,extrarechnung,projekt,adresse,sort,gruppensumme,rechnungadresse,sammelrechnung) 
          VALUES ('','$beschreibung','$beschreibung2','$rabatt','$ansprechpartner','$rechnung','$projekt','$id','$sort','$gruppensumme','$rechnungadresse','$sammelrechnung') ");
      }
      echo json_encode(array(
          'status' => 1
      ));
      $this->app->ExitXentral();
    break;

    case 'getgruppe':
      $sid= $this->app->Secure->GetPOST('id');
      $tmp = $this->app->DB->SelectRow("SELECT * FROM abrechnungsartikel_gruppe WHERE id='$sid' LIMIT 1");
      $tmp['status']=1;
      if($tmp['projekt'] > 0){
        $tmp['projekt'] = $this->app->DB->Select("SELECT CONCAT(abkuerzung,' ',name) FROM projekt WHERE id='" . $tmp['projekt'] . "' LIMIT 1");
      }
      else{
        $tmp['projekt'] = '';
      }

      if($tmp['rechnungadresse'] > 0){
        $tmp['rechnungadresse'] = $this->app->DB->Select("SELECT CONCAT(kundennummer,' ',name,if(ort!='',CONCAT(' (',ort,')'),'')) FROM adresse WHERE id='" . $tmp['rechnungadresse'] . "' LIMIT 1");
      }
      else{
        $tmp['rechnungadresse'] = '';
      }

      if($tmp['sammelrechnung'] > 0){
        $tmp['sammelrechnung'] = $this->app->DB->Select("SELECT CONCAT(id, ' ', bezeichnung) FROM adresse_abosammelrechnungen WHERE id = '" . $tmp['sammelrechnung'] . "' LIMIT 1");
      }
      else{
        $tmp['sammelrechnung'] = '';
      }

      $tmp['rabatt'] = str_replace('.',',',$tmp['rabatt']);


      echo json_encode($tmp);
      $this->app->ExitXentral();
    break;

    case 'deletegruppe':
      $sid= $this->app->Secure->GetPOST('id');
      $this->app->DB->Update("UPDATE `abrechnungsartikel` SET `gruppe`=0 WHERE `gruppe`='$sid'");
      $this->app->DB->Update("UPDATE `subscription_cycle_autosubscription` SET `subscription_group_id`=0 WHERE `subscription_group_id`='$sid'");
      $this->app->DB->Delete("DELETE FROM `abrechnungsartikel_gruppe` WHERE `id`='$sid' LIMIT 1");
      $tmp['status']=1;
      $tmp['statusText']='Gruppe gelöscht';
      echo json_encode($tmp);
      $this->app->ExitXentral();
    break;

  }


  $anlegen_artikelneu = $this->app->Secure->GetPOST('anlegen_artikelneu');


  if($anlegen_artikelneu!='')
  { 

    if($bezeichnung!='' && $menge!='' && $preis!='')
    { 

      $neue_nummer = $this->app->erp->NeueArtikelNummer($artikelart,$this->app->User->GetFirma(),$projekt);

      // anlegen als artikel
      $this->app->DB->Insert("INSERT INTO artikel (id,typ,nummer,projekt,name_de,umsatzsteuer,adresse,firma)  
          VALUES ('','$artikelart','$neue_nummer','$projekt','$bezeichnung','$umsatzsteuerklasse','$lieferant','".$this->app->User->GetFirma()."')");

      $artikel_id = $this->app->DB->GetInsertID();
      // einkaufspreis anlegen

      $this->app->DB->Insert("INSERT INTO verkaufspreise (id,artikel,adresse,objekt,projekt,preis,ab_menge,angelegt_am,bearbeiter)
          VALUES ('','$artikel_id','$id','Standard','$projekt','$preis','$menge',NOW(),'".$this->app->User->GetName()."')");

      $lieferdatum = $this->app->String->Convert($lieferdatum,'%1.%2.%3','%3-%2-%1');
      $startdatum= $this->app->String->Convert($startdatum,'%1.%2.%3','%3-%2-%1');

      if($art==='abo') {
        $wiederholend=1;
      } else {
        $wiederholend=0;
      }

       if(!$this->app->erp->CheckDateValidate($startdatum)) $startdatum=date('Y-m-d');
      $this->app->DB->Insert("INSERT INTO abrechnungsartikel (id,artikel,bezeichnung,nummer,menge,preis, sort,lieferdatum, steuerklasse, status,projekt,wiederholend,zahlzyklus,adresse,startdatum) 
          VALUES ('','$artikel_id','$bezeichnung','$neue_nummer','$menge','$preis','$sort','$lieferdatum','$umsatzsteuerklasse','angelegt','$projekt','$wiederholend','$zahlzyklus','$id','$startdatum')");

      $this->app->Location->execute("index.php?module=adresse&action=artikel&id=$id");
    }
    $this->app->Tpl->Set('NEUMESSAGE',"<div class=\"error\">Bestellnummer, bezeichnung, Menge und Preis sind Pflichtfelder!</div>");
  }

  $ajaxbuchen = $this->app->Secure->GetPOST('ajaxbuchen');
  if($ajaxbuchen!='')
  {
    $artikel = $this->app->Secure->GetPOST('artikel');
    $nummer = $this->app->Secure->GetPOST('nummer');
    $projekt = $this->app->Secure->GetPOST('projekt');
    $projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' LIMIT 1");
    $sort = $this->app->DB->Select("SELECT MAX(sort) FROM angebot_position WHERE auftrag='$id' LIMIT 1");
    $sort = $sort + 1;
    $artikel_id = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='$nummer' LIMIT 1");
    $bezeichnung = $artikel;
    $neue_nummer = $nummer;
    $waehrung = 'EUR';
    $umsatzsteuerklasse = $this->app->DB->Select("SELECT umsatzsteuerklasse FROM artikel WHERE nummer='$nummer' LIMIT 1");
    $vpe = 'einzeln';

    //        $this->app->DB->Insert("INSERT INTO angebot_position (id,angebot,artikel,bezeichnung,nummer,menge,preis, waehrung, sort,lieferdatum, umsatzsteuer, status,projekt,vpe) 
    //          VALUES ('','$id','$artikel_id','$bezeichnung','$neue_nummer','$menge','$preis','$waehrung','$sort','$lieferdatum','$umsatzsteuerklasse','angelegt','$projekt','$vpe')");
  }

  $cmd = $this->app->Secure->GetGET('cmd');
  if($cmd === 'smlsave'){

    $smlid = (int)$this->app->Secure->GetPOST('id');
    $bezeichnung = trim($this->app->Secure->GetPOST('bezeichnung'));
    $smlrabatt = trim($this->app->Secure->GetPOST('smlrabatt'));
    $abweichende_rechnungsadresse = trim($this->app->Secure->GetPOST('abwrechnungsadresse'));
    $projekt = trim($this->app->Secure->GetPOST('projekt'));
    $adressid = trim($this->app->Secure->GetPOST('aid'));

    $error = '';

    if($bezeichnung == ''){
      $error .= "Bitte Bezeichnung ausfüllen\n";
    }

    if($smlrabatt != ''){
      $smlrabatt = str_replace(',','.',$smlrabatt);
    }

    if($abweichende_rechnungsadresse != ''){
      $abwrg = explode(' ', $abweichende_rechnungsadresse);
      $abwrgid = $abwrg[0];

      $abwrgid = $this->app->DB->Select("SELECT id FROM adresse WHERE id = '$abwrgid' LIMIT 1");
      if($abwrgid != ''){
      }else{
        $error .= 'Bitte gültige abweichende Rechnungsadresse ausfüllen'."\n";
      }
    }

    if($projekt != ''){
      $projektid = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung = '$projekt' LIMIT 1");
      if($projektid != ''){
      }else{
        $error .= 'Bitte gültiges Projekt ausfüllen'."\n";
      }
    }

    if($adressid != ''){
      $adressid = $this->app->DB->Select("SELECT id FROM adresse WHERE id = '$adressid' LIMIT 1");
      if($adressid != ''){
      }else{
        $error .= 'Keine gültige Adresse'."\n";
      }
    }

    if($error == ''){
      if($smlid){
        $this->app->DB->Update("UPDATE adresse_abosammelrechnungen SET bezeichnung = '$bezeichnung', rabatt = '$smlrabatt', abweichende_rechnungsadresse = '$abwrgid', projekt = '$projektid' WHERE id = '$smlid'");

        echo json_encode(array('status'=>1));
        $this->app->ExitXentral();
      }
      $this->app->DB->Insert("INSERT INTO adresse_abosammelrechnungen (bezeichnung, rabatt, abweichende_rechnungsadresse, projekt, adresse) VALUES ('$bezeichnung', '$smlrabatt', '$abwrgid', '$projektid', '$adressid')");
      echo json_encode(array('status'=>1));
      $this->app->ExitXentral();
    }
    echo json_encode(array('status'=>0,'statusText'=>$error));
    $this->app->ExitXentral();
  }
  if($cmd === 'smledit'){
    $smlid = (int)$this->app->Secure->GetPOST('id');
      
    $data = $this->app->DB->SelectRow("SELECT abs.id, abs.bezeichnung, abs.rabatt, abs.abweichende_rechnungsadresse, abs.projekt FROM adresse_abosammelrechnungen as abs WHERE abs.id = '$smlid' LIMIT 1");

    if($data){
      if($data['abweichende_rechnungsadresse'] == 0){
        $data['abweichende_rechnungsadresse'] = '';
      }else{
        if($data['abweichende_rechnungsadresse'] != ''){
          $abwadressid = $this->app->DB->Select("SELECT id FROM adresse WHERE id = '".$data['abweichende_rechnungsadresse']."' LIMIT 1");
          if($abwadressid != ""){
            $abwadressname = $this->app->DB->Select("SELECT name FROM adresse WHERE id = '$abwadressid' LIMIT 1");
            if($abwadressname != ""){
              $abwkundennr = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE id = '$abwadressid' LIMIT 1");
              $abwlieferantennr = $this->app->DB->Select("SELECT lieferantennummer FROM adresse WHERE id = '$abwadressid' LIMIT 1");

              $restadresse = '';
              $restadresse .= '(Kdr: '.$abwkundennr.' ';

              if($abwlieferantennr != ''){
                $restadresse .= 'Liefr: '.$abwlieferantennr;
              }

              $restadresse .= ')';

              $data['abweichende_rechnungsadresse'] = $abwadressid.' '.$abwadressname." ".$restadresse;

            }
          }
        }
      }


      if($data['projekt'] == 0){
        $data['projekt'] = '';
      }else{
        if($data['projekt'] > 0){
          $projektabkuerzung = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '".$data['projekt']."' LIMIT 1");
          if($projektabkuerzung != ''){
            $data['projekt'] = $projektabkuerzung;
          }else{
            $data['projekt'] = '';
          }
        }
      }

      if($data['rabatt'] != ''){
        $data['rabatt'] = str_replace('.', ',', $data['rabatt']);
      }

    }else{
      $data['id'] = 0;
      $data['bezeichnung'] = '';
      $data['rabatt'] = '';
      $data['abweichende_rechnungsadresse'] = '';
      $data['projekt'] = '';
    }

    echo json_encode($data);
    $this->app->ExitXentral();


  }
  if($cmd === "smldelete"){
    $smlid = (int) $this->app->Secure->GetPOST('id');
    $this->app->DB->Update("DELETE FROM adresse_abosammelrechnungen WHERE id = '$smlid'");
        
    echo json_encode(array('status'=>1));
    $this->app->ExitXentral();
  }



  if(1)
  {
    $this->app->Tpl->Set('ARTIKELART',$this->app->erp->GetSelect($this->app->erp->GetArtikelart(),$artikelart));
    $this->app->Tpl->Set('VPE',$this->app->erp->GetSelect($this->app->erp->GetVPE(),$vpe));
    $this->app->Tpl->Set('WAEHRUNG',$this->app->erp->GetSelect($this->app->erp->GetWaehrung(),$vpe));
    $this->app->Tpl->Set('UMSATZSTEUERKLASSE',$this->app->erp->GetSelect($this->app->erp->GetUmsatzsteuerklasse(),$umsatzsteuerklasse));
    $this->app->Tpl->Set('PROJEKT',$this->app->erp->GetProjektSelect($projekt));
    $this->app->Tpl->Set('PREIS',$preis);
    $this->app->Tpl->Set('MENGE',$menge);
    $this->app->Tpl->Set('LIEFERDATUM',$lieferdatum);
    $this->app->Tpl->Set('ZAHLZYKLUS',$zahlzyklus);
    $this->app->Tpl->Set('BEZEICHNUNG',$bezeichung);

    $this->app->Tpl->Set('SUBSUBHEADING','Neuen Artikel anlegen');
    //      $this->app->Tpl->Parse('INHALT',"aboabrechnungsartikel_artikelneu.tpl");
    //     $this->app->Tpl->Set(EXTEND,"<input type=\"submit\" value=\"Artikel anlegen\" name=\"anlegen_artikelneu\">");
    $this->app->Tpl->Parse('UEBERSICHT','rahmen70.tpl');
    $this->app->Tpl->Set('EXTEND','');
    $this->app->Tpl->Set('INHALT','');
    $this->app->YUI->DatePicker('startdatum');
    $this->app->YUI->DatePicker('enddatum');
    $this->app->YUI->DatePicker('abgerechnetbis');
    $this->app->YUI->CkEditor('beschreibung','belege');
    $this->app->YUI->CkEditor('editbeschreibung2','belege',array('height'=>'100'));

    /* ende neu anlegen formular */
    /* ende neu anlegen formular */
    // child table einfuegen

    //Wurde mit LiveTabelle ersetzt
   /*$menu = array(//"up"=>"upartikel",
        //                          "down"=>"downartikel",
        //"add"=>"addstueckliste",
        "edit"=>"positioneneditpopup",
        "del"=>"delartikel");
    // wiederholende artikel
    $sql = "SELECT aa.bezeichnung,art.nummer, au.name as bearbeiter, if(aa.angelegtam='0000-00-00','-',DATE_FORMAT(aa.angelegtam,'%d.%m.%Y')) as 'angelegt am', if(aa.abgerechnetbis='0000-00-00','-',DATE_FORMAT(aa.abgerechnetbis,'%d.%m.%Y')) as 'abgerechnet bis', 
      if(aa.enddatum='0000-00-00','-',DATE_FORMAT(aa.enddatum,'%d.%m.%Y')) as enddatum,
      aa.preis as preis, aa.waehrung, aa.menge as menge, if(aa.wiederholend=1 OR aa.preisart='monat' OR aa.preisart='jahr' OR aa.preisart='monatx','wdh','einmalig') as art, aa.dokument,aa.id as id
      FROM abrechnungsartikel aa LEFT JOIN artikel art ON art.id=aa.artikel LEFT JOIN user u ON u.id=aa.angelegtvon LEFT JOIN adresse au ON au.id=u.adresse
      WHERE aa.adresse='$id'";

    $this->app->YUI->SortList('TAB1',$this,$menu,$sql,false);*/

    //    $this->app->YUI->TableSearch('TAB1',"adresse_abo");


    $this->app->YUI->AutoComplete('e_projekt', 'projektname', 1);
    $this->app->YUI->AutoComplete('e_abwrechnungsadresse', 'adresse');
    $this->app->YUI->AutoComplete('editsammelrechnung','abosammelrechnungen','',"&adresse=$id");


    $this->app->Tpl->Set('ADRESSE',$id);
    $this->app->YUI->TableSearch('TAB1', 'adressealleabos', 'show','','',basename(__FILE__), __CLASS__);
    $this->app->YUI->TableSearch('SORTPOPUP', 'adressealleabossort', 'show','','',basename(__FILE__), __CLASS__);
    $this->app->YUI->TableSearch('TAB2','abrechnungsartikel_gruppe', 'show','','',basename(__FILE__), __CLASS__);
    $this->app->YUI->TableSearch('TAB3','abrechnungsartikel', 'show','','',basename(__FILE__), __CLASS__);
    $this->app->YUI->TableSearch('TAB4', 'abosammelrechnungen', 'show','','',basename(__FILE__), __CLASS__);


    $this->app->YUI->AutoComplete('editansprechpartner','ansprechpartner','',"&adresse=$id");
    $this->app->Tpl->Set('MONATLICH', number_format($this->getAboMonthSum($id),2,',','.'));
    $this->app->Tpl->Parse('PAGE','adresse_abo.tpl');
  }
}


function AdresseSEPAMandat()
{
  $projekt = '';
  $id = $this->app->Secure->GetGET('id');

  if(class_exists('SepaMandatCustom'))
  {
    $pdf = new SepaMandatCustom($this->app,$projekt);
  }else{
    $pdf = new SepaMandat($this->app,$projekt);
  }



  $data = $this->app->DB->SelectArr("SELECT name,strasse, ansprechpartner,ort,plz,land,email,kundennummer, inhaber, bank, swift, iban,firmensepa,mandatsreferenzart,mandatsreferenz FROM adresse WHERE id='$id' LIMIT 1");
  $pdf->firmensepa=$data[0]['firmensepa'];
  $pdf->mandatsreferenzart=$data[0]['mandatsreferenzart'];


  $musterlinie = '_____________________________________';

  $pdf->firma=$this->app->erp->ReadyForPDF($data[0]['name']);
  if($pdf->firma=='') {
    $pdf->firma = $musterlinie;
  }
  $pdf->name=$this->app->erp->ReadyForPDF($data[0]['ansprechpartner']);
  if($pdf->name=='') {
    $pdf->name=$musterlinie;
  }
  $pdf->strasse=$this->app->erp->ReadyForPDF($data[0]['strasse']);
  if($pdf->strasse=='') {
    $pdf->strasse=$musterlinie;
  }
  $pdf->plzOrt=$this->app->erp->ReadyForPDF($data[0]['land']).'-'.$this->app->erp->ReadyForPDF($data[0]['plz'])." ".$this->app->erp->ReadyForPDF($data[0]['ort']);
  if($pdf->plzOrt=='-' || $pdf->plzOrt=='- ') {
    $pdf->plzOrt=$musterlinie;
  }
  $pdf->email=$this->app->erp->ReadyForPDF($data[0]['email']);
  if($pdf->email=='') {
    $pdf->email=$musterlinie;
  }

  $pdf->kundenNr=$this->app->erp->ReadyForPDF($data[0]['kundennummer']);
  //$pdf->benutzername="info@embedded-projects.net";

  $pdf->glID=$this->app->erp->Firmendaten('sepaglaeubigerid');

  if($data[0]['mandatsreferenz']==''){
    $pdf->mandatsRef = $this->app->erp->ReadyForPDF($data[0]['kundennummer']);
  }
  else{
    $pdf->mandatsRef = $data[0]['mandatsreferenz'];
  }

  $pdf->swift=$data[0]['swift'];
  if($pdf->swift=='') {
    $pdf->swift='_____________________________________';
  }
  $pdf->iban=$data[0]['iban'];
  if($pdf->iban=='') {
    $pdf->iban='_____________________________________';
  }
  $pdf->bank=$data[0]['bank'];
  if($pdf->bank=='') {
    $pdf->bank='_____________________________________';
  }

  $pdf->ermaechText='Ich ermaechtige die '.$this->app->erp->GetFirmaName().", Zahlungen von meinem Konto mittels Lastschrift einzuziehen. Zugleich weise ich mein Kreditinstitut an, die von der ".$this->app->erp->GetFirmaName()." ".$this->app->erp->Firmendaten("strasse")." ".$this->app->erp->Firmendaten("plz")." ".$this->app->erp->Firmendaten('ort').' auf mein Konto gezogenen Lastschriften einzuloesen.';

  if($pdf->firmensepa!='1')
  {
    $pdf->hinweis='Hinweis: Ich kann (Wir können) innerhalb von acht Wochen, beginnend mit dem Belastungsdatum, die Erstattung des belasteten Betrages verlangen. Es gelten dabei die mit meinem (unserem) Kreditinstitut vereinbarten Bedingungen.';
  } else {
    $pdf->hinweis='Hinweis: Dieses Lastschriftmandat dient nur dem Einzug von Lastschriften, die auf Konten von Unternehmen gezogen sind. Ich / Wir sind nicht berechtigt, nach der erfolgten Einlösung eine Erstattung des belasteten Betrags zu verlangen. Ich bin / Wir sind berechtigt, mein / unser Kreditinstitut bis zum Fälligkeitstag anzuweisen, Lastschriften nicht einzulösen.';
  }

  $pdf->render();

  $name = $this->app->erp->UmlauteEntfernen($this->app->erp->ReadyForPDF($data[0]['name']));
  $name = str_replace(' ','',$name);
  $name = str_replace(',','',$name);
  $name = str_replace('.','',$name);
  $kundennummer = $data[0]['kundennummer'];

  $filename = $tmp.date('Ymd').'_'.$kundennummer.'_'.$name.'_SEPAMANDAT.pdf';
  $pdf->Output($filename,'D');
  $this->app->ExitXentral();
}

function AdresseArtikel()
{
  $this->AdresseMenu();
  $id = $this->app->Secure->GetGET('id');

  // neues arbeitspaket
  //$widget = new WidgetAbrechnungsartikel(&$this->app,'TAB2');
  //$widget->Create();


  // child table einfuegen

  $menu = array('up'=>'upartikel',
      'down'=>'downartikel',
      //"add"=>"addstueckliste",
      'edit'=>'artikeleditpopup',
      'del'=>'delartikel');

  // wiederholende artikel
  $this->app->Tpl->Set('SUBSUBHEADING','wiederholende Artikel');
  $sql = "SELECT aa.bezeichnung, DATE_FORMAT(aa.abgerechnetbis,'%d.%m.%Y') as abgerechnet, 
    aa.preis as preis, aa.waehrung, aa.menge as menge, aa.id as id
    FROM abrechnungsartikel aa
    WHERE aa.adresse='$id' AND aa.wiederholend=1";
  $this->app->YUI->SortList('INHALT',$this,$menu,$sql,false);
  $this->app->Tpl->Parse('TAB1','rahmen70.tpl');
  $this->app->Tpl->Set('INHALT','');


  // einmalige artikel
  $this->app->Tpl->Set('SUBSUBHEADING','einmalige Artikel');
  $sql = "SELECT aa.bezeichnung, DATE_FORMAT(aa.abgerechnetbis,'%d.%m.%Y') as abgerechnet, 
    aa.preis as preis, aa.waehrung, aa.menge as menge, aa.id as id
    FROM abrechnungsartikel aa
    WHERE aa.adresse='$id' AND aa.wiederholend=0 AND aa.abgerechnet=0";
  $this->app->YUI->SortList('INHALT',$this,$menu,$sql,false);
  $this->app->Tpl->Parse('TAB1','rahmen70.tpl');

  $this->app->Tpl->Set('AKTIV_TAB1','selected');
  $this->app->Tpl->Parse('PAGE','artikeluebersicht.tpl');
}

function AdresseArtikelEditPopup()
{
  $id = $this->app->Secure->GetGET('id');

  // nach page inhalt des dialogs ausgeben
  $widget = new WidgetAbrechnungsartikel($this->app,'PAGE');
  $sid = $this->app->DB->Select("SELECT adresse FROM abrechnungsartikel WHERE id='$id' LIMIT 1");
  $widget->form->SpecialActionAfterExecute('close_refresh',
      "index.php?module=adresse&action=artikel&id=$sid");
  $widget->Edit();
  $this->app->BuildNavigation=false;
}

function UpArtikel()
{
  $this->app->YUI->SortListEvent('up','abrechnungsartikel','adresse');
  $this->AdresseArtikel();
}

function DownArtikel()
{
  $this->app->YUI->SortListEvent('down','abrechnungsartikel','adresse');
  $this->AdresseArtikel();
}


function DelArtikel()
{
  $this->app->YUI->SortListEvent('del','abrechnungsartikel','adresse');
  $this->AdresseArtikelPosition();
}

function AdresseVerein()
{
  $id = $this->app->Secure->GetGET('id');
  $submit = $this->app->Secure->GetPOST('submit');
  $this->AdresseMenu();

  $data['verein_mitglied_seit'] = $this->app->Secure->GetPOST('verein_mitglied_seit');
  $data['verein_mitglied_bis'] = $this->app->Secure->GetPOST('verein_mitglied_bis');
  $data['verein_spendenbescheinigung'] = $this->app->Secure->GetPOST('verein_spendenbescheinigung');
  $data['verein_mitglied_aktiv'] = $this->app->Secure->GetPOST('verein_mitglied_aktiv');

  if($data['verein_spendenbescheinigung']!='1') {
    $data['verein_spendenbescheinigung']=0;
  }
  if($data['verein_mitglied_aktiv']!='1') {
    $data['verein_mitglied_aktiv']=0;
  }

  $data['verein_mitglied_seit'] = $this->app->String->Convert($data['verein_mitglied_seit'],"%1.%2.%3","%3-%2-%1");
  $data['verein_mitglied_bis'] = $this->app->String->Convert($data['verein_mitglied_bis'],"%1.%2.%3","%3-%2-%1");

  $this->app->YUI->DatePicker('verein_mitglied_seit');
  $this->app->YUI->DatePicker('verein_mitglied_bis');

  if($submit!='')
  {
    $this->app->DB->Update("UPDATE adresse SET 
      verein_mitglied_seit='".$data['verein_mitglied_seit']."',
      verein_mitglied_bis='".$data['verein_mitglied_bis']."',
      verein_spendenbescheinigung='".$data['verein_spendenbescheinigung']."',
      verein_mitglied_aktiv='".$data['verein_mitglied_aktiv']."' 
      WHERE id='$id'");
  } 


  $data = $this->app->DB->SelectRow("SELECT * FROM adresse WHERE id='$id'");

  if($data['verein_spendenbescheinigung']=='1') {
    $this->app->Tpl->Set('VEREIN_SPENDENBESCHEINIGUNG','checked');
  }
  if($data['verein_mitglied_aktiv']=='1') {
    $this->app->Tpl->Set('VEREIN_MITGLIED_AKTIV','checked');
  }
  $this->app->Tpl->Set('VEREIN_MITGLIED_SEIT',str_replace('..','',$this->app->String->Convert($data['verein_mitglied_seit'],"%3-%2-%1","%1.%2.%3")));
  $this->app->Tpl->Set('VEREIN_MITGLIED_BIS',str_replace('..','',$this->app->String->Convert($data['verein_mitglied_bis'],"%3-%2-%1","%1.%2.%3")));

  $this->app->Tpl->Parse('PAGE','adresse_verein.tpl');
}

  function AdresseMinidetailLieferadressen(){
    $id = $this->app->Secure->GetGET('id');

    $interne_bemerkung = $this->app->DB->Select("SELECT interne_bemerkung FROM lieferadressen WHERE id = '$id' AND interne_bemerkung != '' LIMIT 1");
    $hinweis = $this->app->DB->Select("SELECT hinweis FROM lieferadressen WHERE id = '$id' AND interne_bemerkung != '' LIMIT 1");

    $this->app->Tpl->Set('TABELLE', "<table width='100%'><tr><td style='background-color:#e0e0e0'><b>Interne Bemerkung</b></td></tr>");

    if($interne_bemerkung != ''){
        $this->app->Tpl->Add('TABELLE',"<tr><td>".$interne_bemerkung."</td></tr>");
    }else{
      $this->app->Tpl->Add('TABELLE', "<tr><td><div class=\"info\">Keine Daten vorhanden!</div></td></tr>");
    }

    $this->app->Tpl->Add('TABELLE', "<table width='100%'><tr><td style='background-color:#e0e0e0'><b>Lieferhinweis</b></td></tr>");
    if($hinweis != ''){
        $this->app->Tpl->Add('TABELLE',"<tr><td>".$hinweis."</td></tr>");
    }else{
      $this->app->Tpl->Add('TABELLE', "<tr><td><div class=\"info\">Keine Daten vorhanden!</div></td></tr>");
    }

    $this->app->Tpl->Add('TABELLE', '</table>');

    $this->app->Tpl->Output('adresse_lieferadressen_minidetail.tpl');
    $this->app->ExitXentral();
  }

  function AdresseMinidetailAnsprechpartner(){
    $id = $this->app->Secure->GetGET('id');

    $interne_bemerkung = $this->app->DB->Select("SELECT interne_bemerkung FROM ansprechpartner WHERE id = '$id' AND interne_bemerkung != '' LIMIT 1");
    if($interne_bemerkung != ""){
      $this->app->Tpl->Set("TABELLE", "<table width='100%'><tr><td style='background-color:#e0e0e0'><b>Interne Bemerkung</b></td></tr><tr><td>".$interne_bemerkung."</td></tr></table>");
    }else{
      $this->app->Tpl->Set("TABELLE", "<div class=\"info\">Keine Daten vorhanden!</div>");
    }

    $this->app->Tpl->Output("adresse_lieferadressen_minidetail.tpl");
    $this->app->ExitXentral();
  }


  function down($a,$x) {
    if( (!empty($a)?count($a):0)-1 > $x ) {
      $b = array_slice($a,0,$x,true);
      $b[] = $a[$x+1];
      $b[] = $a[$x];
      $b += array_slice($a,$x+2,(!empty($a)?count($a):0),true);
      return($b);
    }
    return $a;
  }

  function up($a,$x) {
    if( $x > 0 && $x < (!empty($a)?count($a):0) ) {
      $b = array_slice($a,0,($x-1),true);
      $b[] = $a[$x];
      $b[] = $a[$x-1];
      $b += array_slice($a,($x+1),(!empty($a)?count($a):0),true);
      return($b);
    }
    return $a;
  }

  public function AdresseAnschriftString($id,$ansprechpartner=false)
  {
    $type = 'adresse';
    if($ansprechpartner){
      $type = 'ansprechpartner';
    }

    $vorlage = $this->app->erp->Firmendaten('reihenfolge_zwischenspeicher');
    $tmp='';
    if($vorlage!='')
    {
      if($type==='ansprechpartner')
      {
        $data = $this->app->DB->SelectArr(
          sprintf(
          'SELECT a.* ,t.bezeichnung as typbezeichnung 
            FROM adresse a 
            LEFT JOIN adresse_typ t on t.type=a.typ 
            WHERE a.id=%d 
            LIMIT 1',
          (int)$id
          )
        );
        $data[0]['name']  = $this->app->DB->Select(
          sprintf(
          "SELECT name FROM adresse WHERE id=%d LIMIT 1",
            (int)$data[0]['adresse']
          )
        );
      } else {
        $data = $this->app->DB->SelectArr("SELECT * FROM adresse WHERE id='$id' LIMIT 1");
      }
      if(!empty($data))
      {
        foreach($data[0] as $feld=>$value)
        {
          $vorlage = str_replace('{ADRESSE_'.strtoupper($feld).'}',$value,$vorlage);
        }
        $vorlage = preg_replace('/^\h*\v+/m', '', $vorlage);
        $vorlage = str_replace("\r\n", "\\n", $vorlage);
        $tmp = $vorlage;
      }
    } else {
      if($id > 0)
      {
        if($type==='ansprechpartner')
        {
          $result = $this->app->DB->SelectArr(
            sprintf(
              'SELECT *,name as ansprechpartner,ansprechpartner_land as land 
            FROM ansprechpartner WHERE id=%d LIMIT 1',
              (int)$id
            )
          );
          $result[0]['name']  = $this->app->DB->Select(
            sprintf(
            'SELECT name FROM adresse WHERE id=%d LIMIT 1',
              $result[0]['adresse']
            )
          );
        } else {
          $result = $this->app->DB->SelectArr(
            sprintf('SELECT * FROM adresse WHERE id=%d LIMIT 1',
              $id
            )
          );
        }

        if($result[0]['name']!="") $tmp .= $result[0]['name']."\\n";
        if($result[0]['ansprechpartner']!="") $tmp .= $result[0]['ansprechpartner']."\\n";
        if($result[0]['abteilung']!="") $tmp .= $result[0]['abteilung']."\\n";
        if($result[0]['unterabteilung']!="") $tmp .= $result[0]['unterabteilung']."\\n";
        if($result[0]['adresszusatz']!="") $tmp .= $result[0]['adresszusatz']."\\n";
        if($result[0]['strasse']!="") $tmp .= $result[0]['strasse']."\\n";
        $tmp .= $result[0]['land']."-".$result[0]['plz']." ".$result[0]['ort'];
      }
    }
    return $this->app->erp->ReadyForPDF($tmp);
  }

  /**
   * @param int $id
   *
   * @return int
   */
  public function CopyAdresse($id){
    $this->app->DB->MysqlCopyRow('adresse','id',$id);
    $idNew = $this->app->DB->GetInsertID();
    //$roles = $this->app->DB->SelectArr("SELECT * FROM adresse_rolle WHERE adresse = '$id'");
    $this->app->DB->Insert("INSERT INTO adresse_rolle (adresse, projekt, subjekt, praedikat, objekt, parameter, von, bis) 
                            SELECT $idNew, projekt, subjekt, praedikat, objekt, parameter, von, bis FROM adresse_rolle WHERE adresse = '$id'");

    return $idNew;
  }

  /**
   * Query for adresse minidetail
   * CRM view inside adresse page is in adresse.php
   * @param int $adresseId  AdressID
   * @param int $maxResults SQL-Limit; Maximale Anzahl der Ergebnisse
   *
   * @return string
   */
  protected function GetAddressCrmSql($adresseId, $maxResults = 20)
  {
    $adresseId = (int)$adresseId;
    $limit = (int)$maxResults;

    $sql = '
      SELECT
        DATE_FORMAT(a.datum, "%d.%m.%Y %H:%i") AS datum,
        if(ifnull(a.internebezeichnung,\'\') = \'\', a.title, concat(a.title,\'<br /><i style="color:grey">\',a.internebezeichnung,\'</i>\')) AS bezeichnung,
        a.ansprechpartner,
        a.abkuerzung AS projekt,
        a.bearbeiter,
        a.art,
        a.gesendet,
        a.pdf
      FROM 
      (
        (
          SELECT
            d.id,
            CONCAT(DATE_FORMAT(d.datum, "%Y-%m-%d"), " ", IF(d.uhrzeit IS NULL OR DATE_FORMAT(d.uhrzeit, "%H:%i")="00:00", "", DATE_FORMAT(d.uhrzeit, "%H:%i")) ) as datum,
            d.betreff as title,if(d.typ = \'email\',if(d.ansprechpartner <> \'\',d.ansprechpartner,d.email_an),d.ansprechpartner) as ansprechpartner,
            p.abkuerzung as abkuerzung,
            if(bearbeiter!="",bearbeiter,a2.name) as bearbeiter,
            CONCAT(UCASE(LEFT(d.typ, 1)), SUBSTRING(d.typ, 2)) as art,
            CONCAT(IF(d.sent = 1, "JA", "NEIN"),"<a data-type=dokumente data-id=", d.id, "></a>") as gesendet,
            concat("<a href=\"index.php?module=dateien&action=send&id=",(SELECT datei FROM datei_stichwoerter WHERE subjekt="anhang" AND objekt="dokument" AND parameter = d.id LIMIT 1),"\"><img src=./themes/' . $this->app->Conf->WFconf['defaulttheme'] . '/images/pdf.svg></a>") as pdf,
            concat("1","-",d.id) as did,
            d.content as suchtext,
            d.internebezeichnung
          FROM
            dokumente d
          LEFT JOIN projekt p ON p.id=d.projekt
          LEFT JOIN adresse a2 ON a2.id=adresse_from
          WHERE
            adresse_to = ' . $adresseId . '
        )

        UNION ALL
        (
          SELECT
            ds.id,
            CONCAT(DATE_FORMAT(ds.zeit, "%Y-%m-%d")," ", IF(DATE_FORMAT(ds.zeit, "%H:%i")="00:00", "", DATE_FORMAT(ds.zeit, "%H:%i"))) as datum,
            ds.betreff  as title,ds.ansprechpartner ,
            p.abkuerzung as abkuerzung,
            ds.bearbeiter  as bearbeiter,
            CONCAT(UCASE(LEFT(ds.dokument, 1)), SUBSTRING(ds.dokument, 2),"<span style=\"display:none;\" class=\"editlink\">index.php?module=",ds.dokument,"&action=edit&id=",ds.parameter,"</span>") as art,
            CONCAT(IF(ds.versendet = 1, "JA", "NEIN"),"<a data-type=dokumente_send data-id=", ds.id, "></a>") as gesendet,
            concat("<a href=\"index.php?module=",ds.dokument,"&action=pdf&id=",ds.parameter,"\"><img src=./themes/' . $this->app->Conf->WFconf['defaulttheme'] . '/images/pdf.svg></a>") as pdf,
            concat("2","-",ds.id) as did,
            ds.text as suchtext,
            ifnull(d1.internebezeichnung,
            ifnull(d2.internebezeichnung,
            ifnull(d3.internebezeichnung,
            ifnull(d4.internebezeichnung,
            ifnull(d5.internebezeichnung,
            ifnull(d6.internebezeichnung,
             \'\'))))))  as internebezeichnung
          FROM
            dokumente_send ds
            LEFT JOIN lieferschein d1 ON ds.parameter = d1.id AND ds.dokument = \'lieferschein\'
            LEFT JOIN auftrag d2 ON ds.parameter = d2.id AND ds.dokument = \'auftrag\'
            LEFT JOIN rechnung d3 ON ds.parameter = d3.id AND ds.dokument = \'rechnung\'
            LEFT JOIN gutschrift d4 ON ds.parameter = d4.id AND ds.dokument = \'gutschrift\'
            LEFT JOIN angebot d5 ON ds.parameter = d5.id AND ds.dokument = \'angebot\'
            LEFT JOIN bestellung d6 ON ds.parameter = d6.id AND ds.dokument = \'bestellung\'
            LEFT JOIN projekt p ON p.id=ds.projekt
          WHERE
            ds.adresse = ' . $adresseId . '
        )
        
        UNION ALL
        (
          SELECT
            k.id,
            CONCAT(DATE_FORMAT(k.von, "%Y-%m-%d")," ", IF(DATE_FORMAT(k.von, "%H:%i")="00:00", "", DATE_FORMAT(k.von, "%H:%i"))) as datum,
            k.bezeichnung COLLATE utf8_general_ci as title,\'\' as ansprechpartner,
            p.abkuerzung as abkuerzung,
            a2.name COLLATE utf8_general_ci as bearbeiter,
            "Kalender" as art,
            CONCAT("<a data-type=kalender data-id=", k.id, "></a>") as gesendet,
            "" as pdf,
            concat("6","-",k.id) as did,
            k.beschreibung COLLATE utf8_general_ci as suchtext,
            \'\' as internebezeichnung
          FROM
            kalender_event k 
            LEFT JOIN adresse a2 ON k.adresseintern = a2.id
            LEFT JOIN projekt p ON p.id=k.projekt
          WHERE
            k.adresse = ' . $adresseId . '
        )
        ';



    if($this->app->erp->RechteVorhanden('wiedervorlage', 'list')){
      if($this->app->erp->GetKonfiguration('adresse_crm_collateerror') && method_exists($this->app->YUI, 'ConvertLatin1UTF')){
        $sql .= '
          UNION ALL
          (
            SELECT
              w.id,
              CONCAT(DATE_FORMAT(datum_erinnerung, "%Y-%m-%d"), " ", IF(zeit_erinnerung IS NULL OR DATE_FORMAT(zeit_erinnerung, "%H:%i")="00:00", "", DATE_FORMAT(zeit_erinnerung, "%H:%i")) ) as datum,
              ' . $this->app->YUI->ConvertLatin1UTF('w.bezeichnung') . '   as title,\'\' as ansprechpartner,
              ' . $this->app->YUI->ConvertLatin1UTF('p.abkuerzung') . '   as abkuerzung,
              adr.name COLLATE utf8_general_ci as bearbeiter,
              CONCAT("Wiedervorlage") as art,
              CONCAT("<a data-type=wiedervorlage data-id=", w.id, "></a>") as gesendet,
              "" as pdf,
              concat("5","-",w.id) as did,
              ' . $this->app->YUI->ConvertLatin1UTF('w.beschreibung') . '  as suchtext,
              \'\' as internebezeichnung
            FROM
              wiedervorlage w left join adresse adr on w.bearbeiter = adr.id
              LEFT JOIN projekt p ON p.id=w.projekt
            WHERE
              w.adresse = ' . $adresseId . '
          )';
      }else{
        $sql .= '
          UNION ALL
          (
            SELECT
              w.id,
              CONCAT(DATE_FORMAT(datum_erinnerung, "%Y-%m-%d"), " ", IF(zeit_erinnerung IS NULL OR DATE_FORMAT(zeit_erinnerung, "%H:%i")="00:00", "", DATE_FORMAT(zeit_erinnerung, "%H:%i")) ) as datum,
              w.bezeichnung  COLLATE utf8_general_ci as title,
              \'\' as ansprechpartner,
              p.abkuerzung  COLLATE utf8_general_ci as abkuerzung,
              adr.name COLLATE utf8_general_ci as bearbeiter,
              CONCAT("Wiedervorlage") as art,
              CONCAT("<a data-type=wiedervorlage data-id=", w.id, "></a>") as gesendet,
              "" as pdf,
              concat("5","-",w.id) as did,
              w.beschreibung COLLATE utf8_general_ci as suchtext,
              \'\' as internebezeichnung
            FROM
              wiedervorlage w left join adresse adr on w.bearbeiter = adr.id
              LEFT JOIN projekt p ON p.id=w.projekt
            WHERE
              w.adresse = ' . $adresseId . '
          )';
      }
    }

    $sql .= 'UNION ALL
                 (
                   SELECT
                     t.id,
                     tn.zeit,
                     tn.betreff,
                     ifnull((SELECT name FROM ansprechpartner ap WHERE ap.adresse = a.id AND ap.email = tn.mail LIMIT 1),tn.mail) as ansprechpartner,
                     p.abkuerzung,
                     tn.verfasser,
                     \'Ticketnachricht\' as art,
                     CONCAT(IF(tn.versendet = 1, "JA", "NEIN"),"<a data-type=ticket_nachricht data-id=", t.id, "></a>") as gesendet,
                     \'\' as PDF,
                     concat("4","-",tn.id) as did,
                     CONCAT(tn.text,t.notiz) as suchtext,
                     \'\' as intern
                  FROM
                      ticket_nachricht tn
                  INNER JOIN ticket t ON
                      tn.ticket = t.schluessel
                  INNER JOIN adresse a ON t.adresse = a.id
                  LEFT JOIN projekt p ON t.projekt = p.id
                  WHERE t.adresse = '.$adresseId.' AND !(tn.versendet = 1 AND tn.zeitausgang IS NULL)  
                )
                ';

    $sql .= ') AS a ';
    $sql .= 'ORDER BY a.datum DESC ';
    $sql .= 'LIMIT 0, ' . $maxResults;

    return $sql;
  }
}