OpenXE/www/pages/firmendaten.php
2024-10-04 16:40:36 +02:00

3190 lines
148 KiB
PHP

<?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
class Firmendaten {
/** @var Application */
var $app;
/** @var Xentral\Components\Template\Template $tmpl */
protected $tmpl;
/** @var array */
protected $payments;
const MODULE_NAME = 'Firmendaten';
public $javascript = [
'./classes/Modules/Company/www/js/companydata.js',
];
public $stylesheet = [
'./classes/Modules/Company/www/css/companydata.css',
];
/**
* @param Application $app
* @param string $name
* @param array $erlaubtevars
*
* @return array
*/
public function TableSearch($app, $name, $erlaubtevars)
{
switch($name) {
case 'company_document_setting':
$allowed['firmendaten'] = array('documentsettings');
$documents = $this->getDocuments();
$colDocument = '';
foreach($documents as $documentKey => $document) {
$colDocument .= sprintf("IF(dci.doctype = '%s', '%s',", $documentKey, $document);
}
$colDocument .= 'dci.doctype'. str_repeat(')', (!empty($documents)?count($documents):0));
// headings
$heading = array('', 'Belegart', 'zus&auml;tzliche Sprachen', 'Projekt', 'Aktiv','', 'Men&uuml;');
$width = array('1%', '10%', '20%', '15%', '5%', '1%', '1%');
$findcols = array('dcit.id', $colDocument, 'translations', 'project', 'dci.active','color', 'dci.id');
$searchsql = array('dcit.language_code','pr.abkuerzung');
$menu = "<table>";
$menu .= "<tr>";
$menu .= "<td nowrap>";
$menu .= '<a href="javascript:;" class="companydocument-edit" data-companydocument-id="%value%">';
$menu .= "<img alt=\"ändern\" src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">";
$menu .= "</a>&nbsp;";
$menu .= '<a href="javascript:;" class="companydocument-copy" data-companydocument-id="%value%">';
$menu .= "<img alt=\"kopieren\" data-id=\"%value%\" class=\"copy\" src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">";
$menu .= "</a>&nbsp;";
$menu .= '<a href="javascript:;" class="companydocument-delete" data-companydocument-id="%value%">';
$menu .= "<img alt=\"löschen\" data-id=\"%value%\" class=\"delete\" src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">";
$menu .= "</a>&nbsp;";
$menu .= "</td>";
$menu .= "</tr>";
$menu .= "</table>";
$trcol = 5;
// SQL statement
$sql = "SELECT dci.id,
CONCAT('<input type=\"checkbox\" name=\"selection[]\" value=\"',dci.id,'\" />'),
$colDocument,
GROUP_CONCAT(IF(dcit.active = 1,dcit.language_code,CONCAT('<span class=\"grey\">',dcit.language_code,'</span>')) ORDER BY dcit.language_code SEPARATOR ',')
AS translations
, pr.abkuerzung as project, IF(dci.active = 1, 'ja','-'),IF(dci.active = 1 AND IFNULL(cp.count_elements,0) > 1,'#F1B19F','') AS color ,dci.id
FROM document_customization_infoblock AS dci
LEFT JOIN document_customization_infoblock_translation AS dcit ON dci.id = dcit.document_customization_infoblock_id
LEFT JOIN (
SELECT doctype, project_id, COUNT(id) AS count_elements
FROM document_customization_infoblock
WHERE active = 1
GROUP BY doctype, project_id
) AS cp ON dci.doctype = cp.doctype AND dci.project_id = cp.project_id
LEFT JOIN projekt AS pr ON dci.project_id = pr.id";
// fester filter
$where = '';
$groupby = 'GROUP BY dci.id';
$count = 'SELECT COUNT(id) FROM document_customization_infoblock';
break;
}
$erg = [];
foreach($erlaubtevars as $k => $v) {
if(isset($$v)) {
$erg[$v] = $$v;
}
}
return $erg;
}
/**
* Firmendaten constructor.
*
* @param Application $app
* @param bool $intern
*/
public function __construct($app, $intern = false) {
$this->app=$app;
$this->payments = [
'eckarte' => 'EC-Karte',
'ratenzahlung' => 'Ratenzahlung',
'sofortueberweisung' => 'Sofort&uuml;berweisung',
'secupay' => 'Secupay',
'amazon' => 'Amazon',
'kreditkarte' => 'Kreditkarte',
'paypal' => 'Paypal',
'bar' => 'Barzahlung',
'lastschrift' => 'Lastschrift',
'vorkasse' => 'Vorkasse',
'nachnahme' => 'Nachnahme'
];
if($intern) {
return;
}
$this->app->ActionHandlerInit($this);
$this->app->ActionHandler("edit","FirmendatenEdit");
$this->app->ActionHandler("briefpapier","FirmendatenBriefpapierDownload");
$this->app->ActionHandler("logo","FirmendatenLogoDownload");
$this->app->ActionHandler("nextnumber","FirmendatenNextNumber");
$this->app->ActionHandler("layout","FirmendatenLayout");
$this->app->ActionHandler("briefpapiervorlage","FirmendatenBriefpapiervorlage");
$this->app->ActionHandler("testmail","FirmendatenTestmail");
$this->app->ActionHandler("documentsettings","documentSettings");
$this->app->ActionHandlerListen($app);
$this->app->Tpl->Set('FARBE',"[FARBE5]");
}
/**
* @param int $color
*
* @return int
*/
function ColorOK($color)
{
$r = $color % 256;
$color = (int)floor($color / 256);
$g = $color % 256;
$color = (int)floor($color / 256);
$b = $color % 256;
return $r+$g+$b;
}
/**
* @param string $bild
* @param string $name
*
* @return string
*/
function CheckImage($bild, $name)
{
$data = explode(',', $bild);
unset($bild);
$encodedData = str_replace(' ','+',$data[1]);
$decodedData = base64_decode($encodedData);
$filename = $this->app->erp->GetTmp().$name;
if(!file_put_contents($filename, $decodedData)){
return '';
}
$type = mime_content_type($filename);
switch($type) {
case 'image/jpg':
case 'image/jpeg':
break;
case 'image/png':
break;
case 'image/gif':
break;
default:
return '';
break;
}
$palette = League\ColorExtractor\Palette::fromFilename($filename);
if(@is_file($filename)) {
@unlink($filename);
}
if($palette && (!empty($palette)?count($palette):0) == 1) {
$color = array_keys($palette);
return League\ColorExtractor\Color::fromIntToHex(reset($color));
}
// $palette is an iterator on colors sorted by pixel count
for($offset = 150; $offset > 0; $offset -= 30) {
$maxc = 768;
$creturn = '';
$i = 0;
foreach ($palette as $color => $count) {
$i++;
if ($i > 100 || ($count < 10 && $i > 20)) {
break;
}
$colorc = $this->ColorOK($color);
//echo $count.' '. $colorc." ".$color." ".League\ColorExtractor\Color::fromIntToHex($color)."\r\n";
if ($colorc < 300 && $colorc > 0 + $offset && $colorc < 765 - $offset) {
//echo $count . ' ' . $colorc . " " . $color . " " . League\ColorExtractor\Color::fromIntToHex($color) . "\r\n";
return League\ColorExtractor\Color::fromIntToHex($color);
}
if ($colorc < $maxc) {
$maxc = $colorc;
$creturn = $color;
}
}
}
return League\ColorExtractor\Color::fromIntToHex($creturn);
}
function FirmendatenMenu()
{
$this->app->erp->MenuEintrag('index.php?module=firmendaten&action=edit','Einstellungen');
//$this->app->erp->MenuEintrag('index.php?module=firmendaten&action=farbwelten','Farbwelten');
$this->app->erp->MenuEintrag('index.php?module=firmendaten&action=documentsettings','Belege Infoboxen');
}
/**
* @param string $color
*
* @return string
*/
function FarbeDunkel($color)
{
$color = strtolower(trim($color,'#'));
$r = hexdec(substr($color, 0,2));
$g = hexdec(substr($color, 2,2));
$b = hexdec(substr($color, 4,2));
$r = dechex(floor($r * 0.7));
$g = dechex(floor($g * 0.7));
$b = dechex(floor($b * 0.7));
if(strlen($r) < 2) {
$r = '0'.$r;
}
if(strlen($g) < 2) {
$g = '0'.$g;
}
if(strlen($b) < 2) {
$b = '0'.$b;
}
return '#'.strtoupper($r.$g.$b);
}
/**
* @param string $color
*
* @return string
*/
function CorrectColor($color)
{
$color = strtolower(trim($color,'#'));
$r = hexdec(substr($color, 0,2));
$g = hexdec(substr($color, 2,2));
$b = hexdec(substr($color, 4,2));
$ok =$this->ColorOK($b*65536+$g*256+$r);
$f = 1;
if($ok >= 765) {
return '#DDDDDD';
}
if($ok > 600) {
$f = 0.8;
}
$r = dechex(floor($r * $f));
$g = dechex(floor($g * $f));
$b = dechex(floor($b * $f));
if(strlen($r) < 2) {
$r = '0'.$r;
}
if(strlen($g) < 2) {
$g = '0'.$g;
}
if(strlen($b) < 2) {
$b = '0'.$b;
}
return '#'.strtoupper($r.$g.$b);
}
public function FirmendatenFarbwelten()
{
$cmd = $this->app->Secure->GetGET('cmd');
if($cmd === 'checkimage') {
$color = $this->CorrectColor(
$this->CheckImage($this->app->Secure->GetPOST('bild'),
$this->app->Secure->GetPOST('name')
)
);
$color2 = $this->FarbeDunkel($color);
header('Content-Type: application/json');
echo json_encode(array('color'=>$color,'color2'=>$color2));
$this->app->ExitXentral();
}
if($cmd === 'checkfarbe') {
$color = $this->app->Secure->GetPOST('farbe');
$color2 = $this->FarbeDunkel($color);
header('Content-Type: application/json');
echo json_encode(array('color'=>$color,'color2'=>$color2));
$this->app->ExitXentral();
}
if($this->app->Secure->GetPOST('speichern')) {
$bild = $this->app->Secure->GetPOST('bild');
$dateiname = $this->app->Secure->GetPOST('dateiname');
$color = $this->app->Secure->GetPOST('firmenfarbehell');
$firmenhoherformularkontrast = (int)$this->app->Secure->GetPOST('firmenhoherformularkontrast');
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$firmenhoherformularkontrast' WHERE name = 'firmenhoherformularkontrast'");
if($color != '') {
$colordunkel = $this->FarbeDunkel($color);
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$colordunkel' WHERE name = 'firmenfarbedunkel'");
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$color' WHERE name = 'firmenfarbehell'");
$this->app->DB->Update("UPDATE firmendaten SET firmenfarbedunkel = '$colordunkel'");
$this->app->DB->Update("UPDATE firmendaten SET firmenfarbehell = '$color'");
}
if($bild != '') {
$data = explode(',', $bild);
unset($bild);
$encodedData = str_replace(' ','+',$data[1]);
unset($data);
$this->app->DB->Update("UPDATE firmendaten SET firmenlogo = '$encodedData'");
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = 1 WHERE name = 'firmenlogoaktiv'");
unset($encodedData);
}
$this->app->Location->execute('index.php?module=firmendaten&action=farbwelten');
}
$this->FirmendatenMenu();
if(isset($this->app->Conf->WFtestmode) && $this->app->Conf->WFtestmode==true) {
$logo = './themes/new/images/xentral_logo_testmode.png';
}
elseif(is_file('./themes/new/images/logo_cache.png')) {
$logo = './themes/new/images/logo_cache.png';
}
elseif($this->app->erp->Firmendaten('firmenlogoaktiv')=='1'){
$logo = './index.php?module=welcome&action=logo';
}
elseif($this->app->erp->Firmendaten('iconset_dunkel')=='1'){
$logo = './themes/new/images/xentral_logo_white.png';
}
else {
$logo = './themes/new/images/xentral_logo.png';
}
$this->app->Tpl->Add('DATEI',"<span id=\"profilbild\" style=\"padding:0;margin:0;height:50px;width:200px;display:inline-block;position:relative;background-repeat:no-repeat; background-image: url('".$logo."'); \"></span>");
$this->app->Tpl->Set('FIRMENFARBEHELL', $this->app->erp->Firmendaten('firmenfarbehell'));
$this->app->Tpl->Set('FIRMENHOHERFORMULARKONSTRAST', $this->app->erp->Firmendaten('firmenhoherformularkontrast')?' checked="checked" ':'');
$this->app->YUI->ColorPicker('firmenfarbehell');
$themes = array(
'Gelb'=>array('image'=>'./images/farbwelten/farbwelt_gelb.png','color'=>'#E0C701','hoherkontrast'=>0)
,'Orange'=>array('image'=>'./images/farbwelten/farbwelt_orange.png','color'=>'#D4852E','hoherkontrast'=>0)
,'Rot'=>array('image'=>'./images/farbwelten/farbwelt_rot.png','color'=>'#B42927','hoherkontrast'=>0)
,'Rosa'=>array('image'=>'./images/farbwelten/farbwelt_rosa.png','color'=>'#CC9999','hoherkontrast'=>0)
,'Lila'=>array('image'=>'./images/farbwelten/farbwelt_lila.png','color'=>'#9E7098','hoherkontrast'=>0)
,'Blau (taubenblau)'=>array('image'=>'./images/farbwelten/farbwelt_taubenblau.png','color'=>'#608CB5', 'hoherkontrast'=>0)
,'Blau (beerenblau)'=>array('image'=>'./images/farbwelten/farbwelt_beerenblau.png','color'=>'#6579A5','hoherkontrast'=>0)
,'T&uuml;rkis'=>array('image'=>'./images/farbwelten/farbwelt_tuerkis.png','color'=>'#42B8C4','hoherkontrast'=>0)
,'Blau (dunkel)'=>array('image'=>'./images/farbwelten/farbwelt_dunkelblau.png','color'=>'#01367C','hoherkontrast'=>0)
,'Gr&uuml;n (hell)'=>array('image'=>'./images/farbwelten/farbwelt_hellgruen.png','color'=>'#7AB31E','hoherkontrast'=>0)
,'Gr&uuml;n (dunkel)'=>array('image'=>'./images/farbwelten/farbwelt_dunkelgruen.png','color'=>'#405E10','hoherkontrast'=>0)
,'Grau'=>array('image'=>'./images/farbwelten/farbwelt_grau.png','color'=>'#999999','hoherkontrast'=>0)
,'Schwarz'=>array('image'=>'./images/farbwelten/farbwelt_schwarz.png','color'=>'#404040','hoherkontrast'=>1)
);
$counter = 0;
$this->app->Tpl->Add('THEMESVORSCHAU',
'<div class="row">
<div class="row-height">');
foreach($themes as $k => $v) {
if($counter%4 == 0){
$this->app->Tpl->Add('THEMESVORSCHAU',
'</div>
</div>');
$this->app->Tpl->Add('THEMESVORSCHAU',
'<div class="row">
<div class="row-height">');
}
$this->app->Tpl->Add('THEMESVORSCHAU',
'<div class="col-xs-12 col-md-3 col-md-height">
<div class="inside inside-full-height">
<fieldset>
<legend>'.$k.'</legend>
<img src="'.$v['image'].'" onclick="$(\'#firmenfarbehell\').val(\''.$v['color'].'\');$(\'#firmenhoherformularkontrast\').prop(\'checked\','.($v['hoherkontrast']?'true':'false').');$(\'#firmenfarbehell\').trigger(\'change\');" />
</fieldset>
</div>
</div>');
$counter += 1;
}
$this->app->Tpl->Add('THEMESVORSCHAU',
'</div>
</div>');
$this->app->erp->Headlines('Grundeinstellungen', 'Farbwelten');
$this->app->Tpl->Parse('PAGE','firmendaten_farbwelten.tpl');
}
public function FirmendatenNextNumber()
{
$cmd = $this->app->Secure->GetGET('cmd');
$nummer = $this->app->Secure->GetGET('nummer');
$allowedNumbers = [
'angebot',
'auftrag',
'rechnung',
'lieferschein',
'retoure',
'gutschrift',
'bestellung',
'arbeitsnachweis',
'reisekosten',
'proformarechnung',
'produktion',
'anfrage',
'kundennummer',
'projektnummer',
'lieferantennummer',
'mitarbeiternummer',
'artikelnummer',
'preisanfrage',
'verbindlichkeit',
'lieferantengutschrift',
'receiptdocument',
];
if(in_array($cmd, $allowedNumbers)) {
$this->app->erp->FirmendatenSet('next_'.$cmd, $nummer);
}
$this->app->Location->execute('index.php?module=firmendaten&action=edit#tabs-6');
}
public function FirmendatenTestmail()
{
if($this->app->erp->Firmendaten('testmailempfaenger')=='') {
$msg = $this->app->erp->base64_url_encode(
'<div class="error">Die Testmail wurde nicht versendet, da das Feld "Testmail Empfänger" keinen Wert hat! Bitte tragen Sie dort z.B. Ihre E-Mailadresse ein.</div>'
);
}
else if(
$this->app->erp->MailSend(
$this->app->erp->Firmendaten('email'),
$this->app->erp->Firmendaten('absendername'),
$this->app->erp->Firmendaten('testmailempfaenger'),
$this->app->erp->Firmendaten('testmailempfaenger'),
'OpenXE ERP: Testmail',
'Dies ist eine Testmail',
'',0,true,'','',
true
)
) {
$msg = $this->app->erp->base64_url_encode(
'<div class="info">Die Testmail wurde erfolgreich versendet. '.$this->app->erp->mail_error.'</div>'
);
}
else {
$msg = $this->app->erp->base64_url_encode(
'<div class="error">Fehler beim Versenden der Testmail: '.$this->app->erp->mail_error.'</div>'
);
}
$this->app->Location->execute("index.php?module=firmendaten&action=edit&msg=$msg#tabs-4");
}
public function FirmendatenLogoDownload()
{
$id = $this->app->DB->Select("SELECT MAX(f.id) FROM firma f INNER JOIN firmendaten fd ON f.id = fd.firma LIMIT 1");
if(!$id) {
$id = $this->app->DB->Select("SELECT MAX(firma) FROM firmendaten LIMIT 1");
}
$logo = $this->app->DB->Select("SELECT logo FROM firmendaten WHERE firma='$id'");
$logo_type = $this->app->erp->Firmendaten('logo_type');
$endung = str_replace('image/','',$logo_type);
header('Content-type: '.$logo_type);
header('Content-Disposition: attachment; filename="logo.'.$endung.'"');
echo base64_decode($logo);
$this->app->ExitXentral();
}
public function FirmendatenBriefpapierDownload()
{
$id = $this->app->DB->Select("SELECT MAX(f.id) FROM firma f INNER JOIN firmendaten fd ON f.id = fd.firma LIMIT 1");
if(!$id) {
$id = $this->app->DB->Select("SELECT MAX(firma) FROM firmendaten LIMIT 1");
}
$cmd = $this->app->Secure->GetGET('cmd');
switch ($cmd) {
case 'briefpapier2':
$briefpapier = $this->app->DB->Select("SELECT briefpapier2 FROM firmendaten WHERE firma='$id'");
$filename = 'breifpapier2.pdf';
break;
case 'briefpapier1':
default:
$briefpapier = $this->app->DB->Select("SELECT briefpapier FROM firmendaten WHERE firma='$id'");
$filename = 'breifpapier1.pdf';
break;
}
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="' . $filename . '"');
echo base64_decode($briefpapier);
$this->app->ExitXentral();
}
/**
* @return array
*/
protected function getPaymentMethods()
{
return [
'rechnung',
'vorkasse',
'nachnahme',
'lastschrift',
'bar',
'paypal',
'kreditkarte',
'amazon',
'amazon_bestellung',
'secupay',
'sofortueberweisung',
'ratenzahlung',
'eckarte',
];
}
/**
* @return array
*/
protected function getPaymentmethodsToHide()
{
return $this->app->DB->SelectFirstCols(
sprintf(
"SELECT DISTINCT type
FROM zahlungsweisen
WHERE aktiv = 1 AND projekt = 0 AND type IN ('%s')",
implode("', '", $this->getPaymentMethods())
)
);
}
public function FirmendatenEdit()
{
// Make sure the default values are all there, otherwise they are not editable
$this->app->erp->StandardFirmendatenWerte();
if($this->app->Secure->GetPOST('installnewpayent')) {
$this->checkPaymentModules(true);
}
$this->FirmendatenMenu();
$this->app->erp->Headlines('Grundeinstellungen','Bearbeiten');
$this->app->erp->MenuEintrag("index.php?module=einstellungen&action=list","Zur&uuml;ck zur &Uuml;bersicht");
$this->app->erp->MenuEintrag("index.php?module=firmendaten&action=edit","&Uuml;bersicht");
$this->app->YUI->CkEditor("signatur","all");
$this->app->YUI->CkEditor("mailgrussformel","all");
if($this->app->erp->Firmendaten("briefhtml")=="1")
{
$this->app->YUI->CkEditor("freitext1inhalt","belege");
$this->app->YUI->CkEditor("freitext2inhalt","belege");
}
$this->app->YUI->HideFormular('zeiterfassung_schliessen',array('unchecked'=>'zeiterfassung_schliessen','checked'=>'dummy'));
if($this->app->erp->Firmendaten("briefhtml")=="1")
{
$this->app->YUI->CkEditor("angebot_header","belege");
$this->app->YUI->CkEditor("angebot_footer","belege");
$this->app->YUI->CkEditor("auftrag_header","belege");
$this->app->YUI->CkEditor("auftrag_footer","belege");
$this->app->YUI->CkEditor("rechnung_header","belege");
$this->app->YUI->CkEditor("rechnung_footer","belege");
$this->app->YUI->CkEditor("lieferschein_header","belege");
$this->app->YUI->CkEditor("lieferschein_footer","belege");
$this->app->YUI->CkEditor("gutschrift_header","belege");
$this->app->YUI->CkEditor("gutschrift_footer","belege");
$this->app->YUI->CkEditor("bestellung_header","belege");
$this->app->YUI->CkEditor("bestellung_footer","belege");
$this->app->YUI->CkEditor("arbeitsnachweis_header","belege");
$this->app->YUI->CkEditor("arbeitsnachweis_footer","belege");
$this->app->YUI->CkEditor("provisionsgutschrift_header","belege");
$this->app->YUI->CkEditor("provisionsgutschrift_footer","belege");
$this->app->YUI->CkEditor("proformarechnung_header","belege");
$this->app->YUI->CkEditor("proformarechnung_footer","belege");
$this->app->YUI->CkEditor("eu_lieferung_vermerk","belege");
$this->app->YUI->CkEditor("export_lieferung_vermerk","belege");
$this->app->YUI->CkEditor("footer_reihenfolge_angebot","belege");
$this->app->YUI->CkEditor("footer_reihenfolge_auftrag","belege");
$this->app->YUI->CkEditor("footer_reihenfolge_rechnung","belege");
$this->app->YUI->CkEditor("footer_reihenfolge_gutschrift","belege");
$this->app->YUI->CkEditor("footer_reihenfolge_lieferschein","belege");
$this->app->YUI->CkEditor("footer_reihenfolge_bestellung","belege");
$this->app->YUI->CkEditor("footer_reihenfolge_proformarechnung","belege");
}
$this->app->Tpl->Set('MYSQLVERSION',$this->app->DB->Select('SELECT VERSION( ) AS mysql_version'));
if($this->app->erp->Firmendaten("version")==''){
$this->app->erp->FirmendatenSet("version", $this->app->erp->RevisionPlain());
}
$lizenz = $this->app->erp->Firmendaten("lizenz");
$schluessel = $this->app->erp->Firmendaten("schluessel");
if($lizenz=='' || $schluessel=='')
{
if(is_file('../wawision.inc.php'))
{
$WAWISION = [];
include_once('../wawision.inc.php');
$this->app->erp->FirmendatenSet('lizenz',$WAWISION['serial']);
$this->app->erp->FirmendatenSet('schluessel',$WAWISION['authkey']);
}
}
$id = $this->app->DB->Select("SELECT MAX(f.id) FROM firma f INNER JOIN firmendaten fd ON f.id = fd.firma LIMIT 1");
if(!$id){
$id = $this->app->DB->Select('SELECT max(id) FROM firma LIMIT 1');
}
$this->app->YUI->AutoComplete("projekt","projektname",1);
$this->app->YUI->AutoComplete("adresse_vorlage","adresse");
$this->app->YUI->AutoComplete("angebot_pipewiedervorlage","wiedervorlage_stages");
$this->app->YUI->AutoComplete("group_sales", "gruppekennziffer");
$this->app->YUI->AutoComplete("group_employee", "gruppekennziffer");
$this->app->Tpl->Set('NEXT_ANGEBOT_MAX',$this->app->DB->Select("SELECT MAX(belegnr) FROM angebot WHERE DATE_FORMAT(datum,'%Y')=DATE_FORMAT(NOW(),'%Y')"));
$this->app->Tpl->Set('NEXT_RECHNUNG_MAX',$this->app->DB->Select("SELECT MAX(belegnr) FROM rechnung WHERE DATE_FORMAT(datum,'%Y')=DATE_FORMAT(NOW(),'%Y')"));
$this->app->Tpl->Set('NEXT_AUFTRAG_MAX',$this->app->DB->Select("SELECT MAX(belegnr) FROM auftrag WHERE DATE_FORMAT(datum,'%Y')=DATE_FORMAT(NOW(),'%Y')"));
$this->app->Tpl->Set('NEXT_LIEFERSCHEIN_MAX',$this->app->DB->Select("SELECT MAX(belegnr) FROM lieferschein WHERE DATE_FORMAT(datum,'%Y')=DATE_FORMAT(NOW(),'%Y')"));
$this->app->Tpl->Set('NEXT_GUTSCHRIFT_MAX',$this->app->DB->Select("SELECT MAX(belegnr) FROM gutschrift WHERE DATE_FORMAT(datum,'%Y')=DATE_FORMAT(NOW(),'%Y')"));
$this->app->Tpl->Set('NEXT_BESTELLUNG_MAX',$this->app->DB->Select("SELECT MAX(belegnr) FROM bestellung WHERE DATE_FORMAT(datum,'%Y')=DATE_FORMAT(NOW(),'%Y')"));
// $this->app->Tpl->Set('NEXT_ARBEITSNACHWEIS_MAX',$this->app->DB->Select("SELECT MAX(belegnr) FROM arbeitsnachweis WHERE DATE_FORMAT(datum,'%Y')=DATE_FORMAT(NOW(),'%Y')"));
$this->app->Tpl->Set('NEXT_KUNDENNUMMER_MAX',$this->app->DB->Select("SELECT MAX(kundennummer) FROM adresse"));
$this->app->Tpl->Set('NEXT_LIEFERANTENNUMMER_MAX',$this->app->DB->Select("SELECT MAX(lieferantennummer) FROM adresse"));
$this->app->Tpl->Set('NEXT_MITARBEITERNUMMER_MAX',$this->app->DB->Select("SELECT MAX(mitarbeiternummer) FROM adresse"));
$this->app->Tpl->Set('NEXT_WAREN_MAX',$this->app->DB->Select("SELECT MAX(nummer) FROM artikel WHERE typ='produkt' OR typ=''"));
$this->app->Tpl->Set('NEXT_PRODUKTION_MAX',$this->app->DB->Select("SELECT MAX(nummer) FROM artikel WHERE typ='produktion'"));
$this->app->Tpl->Set('NEXT_SONSTIGES_MAX',$this->app->DB->Select("SELECT MAX(nummer) FROM artikel WHERE typ='material' OR typ='fremdleistung' OR typ='gebuehr'"));
$this->app->erp->checkActiveCronjob('cleaner', 'MESSAGECLEANER', false);
// Hole Post-Daten
$data = $this->getPostData();
$testmail = $this->app->Secure->GetPOST("testmail");
$submit = $this->app->Secure->GetPOST("submitFirmendaten");
$submitfreifelder = $this->app->Secure->GetPOST("submitFirmendatenFreifelder");
if($submitfreifelder != '') {
$doubletes = [];
$firmendaten_werte = $this->app->DB->SelectArr("SELECT * FROM firmendaten_werte");
if($firmendaten_werte) {
foreach($firmendaten_werte as $v) {
$firmendaten_werte_spalten[$v['name']]['wert'] = $this->app->DB->real_escape_string($v['wert']);
if(!empty($firmendaten_werte_spalten[$v['name']]['id'])) {
$doubletes[$v['name']][] = $firmendaten_werte_spalten[$v['name']]['id'];
}
$firmendaten_werte_spalten[$v['name']]['id'] = $this->app->DB->real_escape_string($v['id']);
}
}
for($i = 1; $i <= 20; $i++) {
$n1 = 'adressefreifeld'.$i.'typ';
$n2 = 'adressefreifeld'.$i.'spalte';
$v1 = $this->app->Secure->GetPOST($n1);
$v2 = $this->app->Secure->GetPOST($n2);
/*$this->app->DB->Update("UPDATE firmendaten SET
$n1 = '".$v1."', $n2 = '".$v2."'
WHERE firma='$id' LIMIT 1");*/
$this->app->erp->FirmendatenSet($n1,$v1);
$this->app->erp->FirmendatenSet($n2,$v2);
if(isset($firmendaten_werte_spalten)) {
if(isset($firmendaten_werte_spalten[$n1]) && $firmendaten_werte_spalten[$n1]['wert'] != $v1) {
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$v1' WHERE id = '".$firmendaten_werte_spalten[$n1]['id']."' LIMIT 1");
if(!empty($doubletes[$n1])) {
$this->app->DB->Delete(
sprintf(
"DELETE FROM firmendaten_werte WHERE id <> %d AND name != '%s' AND id IN (%s)",
$firmendaten_werte_spalten[$n1]['id'], $this->app->DB->real_escape_string($n1),
implode(', ', $doubletes[$n1])
)
);
unset($doubletes[$n1]);
}
unset($firmendaten_werte_spalten[$n1]);
}
if(isset($firmendaten_werte_spalten[$n2]) && $firmendaten_werte_spalten[$n2]['wert'] != $v2) {
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$v2' WHERE id = '".$firmendaten_werte_spalten[$n2]['id']."' LIMIT 1");
if(!empty($doubletes[$n2])) {
$this->app->DB->Delete(
sprintf(
"DELETE FROM firmendaten_werte WHERE id <> %d AND name != '%s' AND id IN (%s)",
$firmendaten_werte_spalten[$n2]['id'], $this->app->DB->real_escape_string($n2),
implode(', ', $doubletes[$n2])
)
);
unset($doubletes[$n2]);
}
unset($firmendaten_werte_spalten[$n2]);
}
}
}
for($i = 1; $i <= 20; $i++) {
$n1 = 'projektfreifeld'.$i.'typ';
$n2 = 'projektfreifeld'.$i.'spalte';
$v1 = $this->app->Secure->GetPOST($n1);
$v2 = $this->app->Secure->GetPOST($n2);
/* $this->app->DB->Update("UPDATE firmendaten SET
$n1 = '".$v1."', $n2 = '".$v2."'
WHERE firma='$id' LIMIT 1"); */
$this->app->erp->FirmendatenSet($n1,$v1);
$this->app->erp->FirmendatenSet($n2,$v2);
if(isset($firmendaten_werte_spalten)) {
if(isset($firmendaten_werte_spalten[$n1]) && $firmendaten_werte_spalten[$n1]['wert'] != $v1) {
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$v1' WHERE id = '".$firmendaten_werte_spalten[$n1]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$n1]);
if(!empty($doubletes[$n1])) {
$this->app->DB->Delete(
sprintf(
"DELETE FROM firmendaten_werte WHERE id <> %d AND name != '%s' AND id IN (%s)",
$firmendaten_werte_spalten[$n1]['id'], $this->app->DB->real_escape_string($n1),
implode(', ', $doubletes[$n1])
)
);
unset($doubletes[$n1]);
}
}
if(isset($firmendaten_werte_spalten[$n2]) && $firmendaten_werte_spalten[$n2]['wert'] != $v2) {
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$v2' WHERE id = '".$firmendaten_werte_spalten[$n2]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$n2]);
if(!empty($doubletes[$n2])) {
$this->app->DB->Delete(
sprintf(
"DELETE FROM firmendaten_werte WHERE id <> %d AND name != '%s' AND id IN (%s)",
$firmendaten_werte_spalten[$n2]['id'], $this->app->DB->real_escape_string($n2),
implode(', ', $doubletes[$n2])
)
);
unset($doubletes[$n2]);
}
}
}
}
$toupdate = null;
/*
for($in = 1; $in <= 40; $in++) {
$toupdate[] = 'freifeld'.$in;
}
for($in = 1; $in <= 20; $in++) {
$toupdate[] = 'projektfreifeld'.$in;
}
for($in = 1; $in <= 20; $in++) {
$toupdate[] = 'adressefreifeld'.$in;
}
$sql2a = null;
foreach($toupdate as $v) {
$data[$v] = $this->app->Secure->GetPOST($v);
$sql2a[] = $v ." = '".$data[$v]."' ";
}
$sql2 = "UPDATE firmendaten SET ".implode(',',$sql2a)." WHERE firma = '$id' LIMIT 1";
unset($sql2a);
$this->app->DB->Update($sql2);*/
for($in = 1; $in <= 40; $in++) {
$field = 'freifeld'.$in;
$this->app->erp->FirmendatenSet($field,$this->app->Secure->GetPOST($field));
}
for($in = 1; $in <= 20; $in++) {
$field = 'projektfreifeld'.$in;
$this->app->erp->FirmendatenSet($field,$this->app->Secure->GetPOST($field));
$field = 'adressefreifeld'.$in;
$this->app->erp->FirmendatenSet($field,$this->app->Secure->GetPOST($field));
}
if($this->app->DB->error()) {
foreach($toupdate as $v) {
$data[$v] = $this->app->Secure->GetPOST($v);
$this->app->DB->Update("UPDATE firmendaten SET ".$v." = '".($data[$v])."'"." WHERE firma = '$id' LIMIT 1");
}
}
$toupdate[] = 'parameterundfreifelder';
for($in = 1; $in <= 40; $in++) {
$freifeldarr = array('typ','spalte','sort','an','ab','re','gs','ls','be','pr','pa','pd');
foreach($freifeldarr as $v) {
$toupdate[] = 'freifeld'.$in.$v;
}
}
for($in = 1; $in <= 20; $in++) {
$freifeldarr = array('typ','spalte','sort');
foreach($freifeldarr as $v)
{
$toupdate[] = 'adressefreifeld'.$in.$v;
}
$toupdate[] = 'adressefreifeld'.$in;
}
for($in = 1; $in <= 20; $in++) {
$freifeldarr = array('sort','tabelle','breite');
foreach($freifeldarr as $v)
{
$toupdate[] = 'projektfreifeld'.$in.$v;
}
}
if(isset($firmendaten_werte_spalten))
{
foreach($toupdate as $key)
{
$data[$key] = $this->app->Secure->GetPOST($key);
if(isset($firmendaten_werte_spalten[$key]) && $firmendaten_werte_spalten[$key]['wert'] != $data[$key]) {
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '".$data[$key]."' WHERE id = '".$firmendaten_werte_spalten[$key]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$key]);
if(!empty($doubletes[$key])) {
$this->app->DB->Delete(
sprintf(
"DELETE FROM firmendaten_werte WHERE id <> %d AND name != '%s' AND id IN (%s)",
$firmendaten_werte_spalten[$key]['id'], $this->app->DB->real_escape_string($key),
implode(', ', $doubletes[$key])
)
);
unset($doubletes[$key]);
}
}
}
}
}
if($submit!='')
{
$versandmail_zwischenspeichern = $this->app->erp->Firmendaten('versandmail_zwischenspeichern','', true);
$error = '';
$logo_error = '';
$briefpapier_error = '';
$firmenlogo_error = '';
// Seite 2
if(!empty($_FILES['firmenlogo']['tmp_name']) && $_FILES['firmenlogo']['size']>0)
{
$firmenlogo_error = $this->app->erp->checkImage($_FILES['firmenlogo'],0,0,0,3);
if($firmenlogo_error=='')
{
if(!($firmenlogo = $this->app->erp->uploadSettigsFile($_FILES['firmenlogo'],'firmenlogo'))){
$firmenlogo = $this->app->erp->uploadFileIntoDB($_FILES['firmenlogo']);
}
$this->app->DB->Update("UPDATE firmendaten SET firmenlogo='{$firmenlogo['file']}' WHERE firma='$id'");
}
else{
$error .= "$firmenlogo_error<br>";
}
}
if(!empty($_FILES['logo']['tmp_name']) && $_FILES['logo']['size']>0) {
$logo_error = $this->app->erp->checkImage($_FILES['logo']);
if($logo_error=='') {
if(!($logo = $this->app->erp->uploadSettigsImage($_FILES['logo'],'logo'))){
$logo = $this->app->erp->uploadImageIntoDB($_FILES['logo']);
}
$data['hintergrund'] = 'logo';
$data['briefpapier2vorhanden'] = 0;
$this->app->erp->FirmendatenSet('logo_type',$logo['type']);
$this->app->erp->FirmendatenSet('hintergrund','logo');
$this->app->DB->Update("UPDATE firmendaten SET logo='{$logo['image']}' WHERE firma='$id' LIMIT 1");
}
else{
$error .= "$logo_error<br>";
}
}
if ($data['hintergrund'] === 'logo') {
//pruefe ob logo vorhanden
$logo = $this->app->erp->getSettingsFile('logo');
if(strlen($logo)<10){
$error .= 'Geben Sie bitte ein Logo zum Hochladen an.<br>';
}
}
// Seite 2
if(!empty($_FILES['briefpapier2']['tmp_name']) && $_FILES['briefpapier2']['size']>0) {
$briefpapier2_error = $this->app->erp->checkFile($_FILES['briefpapier2'],'application/pdf');
if($briefpapier2_error=='') {
if(!($briefpapier2 = $this->app->erp->uploadSettigsFile($_FILES['briefpapier2'],'briefpapier2')))
{
$briefpapier2 = $this->app->erp->uploadFileIntoDB($_FILES['briefpapier2']);
}
$data['hintergrund'] = 'briefpapier';
$data['briefpapier2vorhanden'] = 1;
$this->app->erp->FirmendatenSet('hintergrund','briefpapier');
$this->app->DB->Update("UPDATE firmendaten SET briefpapier2='{$briefpapier2['file']}' WHERE firma='$id'");
}
else{
$error .= "$briefpapier2_error<br>";
}
}
// Seite 1
if(!empty($_FILES['briefpapier']['tmp_name']) && $_FILES['briefpapier']['size']>0) {
$briefpapier_error = $this->app->erp->checkFile($_FILES['briefpapier'],'application/pdf');
if($briefpapier_error=='') {
if(!($briefpapier = $this->app->erp->uploadSettigsFile($_FILES['briefpapier'],'briefpapier2'))){
$briefpapier = $this->app->erp->uploadFileIntoDB($_FILES['briefpapier']);
}
$data['hintergrund'] = 'briefpapier';
$this->app->erp->FirmendatenSet('briefpapier_type',$briefpapier['type']);
$this->app->erp->FirmendatenSet('hintergrund','briefpapier');
$this->app->DB->Update("UPDATE firmendaten SET briefpapier='{$briefpapier['file']}' WHERE firma='$id'");
}
else{
$error .= "$briefpapier_error<br>";
}
}
else{
$briefpapier = $this->app->erp->getSettingsFile('briefpapier');
}
if(isset($data['sprachebevorzugen'])){
$this->savePreferredLanguage($data['sprachebevorzugen']);
}
// Schriftarten-Upload
if(!empty($_FILES['schriftart_upload'])){
$fontUploadSuccessful = null;
$fontUploadName = $this->app->Secure->GetPOST('schriftart_upload_bezeichnung');
$fontUploadSize =
(int)$_FILES['schriftart_upload']['size']['normal'] +
(int)$_FILES['schriftart_upload']['size']['kursiv'] +
(int)$_FILES['schriftart_upload']['size']['fett'] +
(int)$_FILES['schriftart_upload']['size']['fettkursiv'];
// Es wurde mindestens eine Datei hochgeladen
if ($fontUploadSize > 0) {
try {
// Wenn keine Exception geworfen wurde, dann ist alles hochgeladen.
$this->HandleFontUpload($fontUploadName, $_FILES['schriftart_upload']);
$data['schriftart'] = $fontUploadName;
$fontUploadSuccessful = true;
} catch (Exception $e) {
$error .= $e->getMessage() . '<br>';
$fontUploadSuccessful = false;
}
}
}
if($error=='')
{
$vorhanden = $this->app->DB->Select("SELECT id FROM firmendaten WHERE firma='$id' LIMIT 1");
if(!is_numeric($vorhanden)) {
$this->app->DB->Insert("INSERT INTO firmendaten (firma) VALUES ('$id')");
}
// Update Bilder
// suche max nummern
//suche projekt ID von abkuerzung
$data['projekt'] = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='{$data['projekt']}' LIMIT 1");
// wenn cloud hole data[lizenz] data[schluessel]
if(!($this->app->Conf->WFcloud==true)) {
$extendsql = "lizenz='{$data['lizenz']}',
schluessel='{$data['schluessel']}'";
$this->app->DB->Update("UPDATE firmendaten SET $extendsql WHERE firma='$id' LIMIT 1");
}
$firmendaten_werte = $this->app->DB->SelectArr("SELECT * FROM firmendaten_werte");
if(!empty($firmendaten_werte)) {
foreach($firmendaten_werte as $v) {
$firmendaten_werte_spalten[$v['name']]['wert'] = $this->app->DB->real_escape_string($v['wert']);
$firmendaten_werte_spalten[$v['name']]['id'] = $this->app->DB->real_escape_string($v['id']);
}
}
$toupdate = array('absender','sichtbar','rechnung_gutschrift_ansprechpartner','knickfalz','standardaufloesung','standardversanddrucker','standardetikettendrucker','etikettendrucker_wareneingang','barcode','aufgaben_bondrucker'
,'schriftgroesse','betreffszeile','dokumententext','tabellenbeschriftung','tabelleninhalt','zeilenuntertext','freitext','infobox','brieftext','spaltenbreite','seite_von_sichtbar','seite_von_ausrichtung','footersichtbar','briefpapier2vorhanden'
,'hintergrund','benutzername','abstand_adresszeileoben','abstand_boxrechtsoben','abstand_boxrechtsoben_lr','abstand_betreffzeileoben','abstand_artikeltabelleoben','abstand_name_beschreibung','artikel_suche_kurztext'
,'adresse_freitext1_suche','artikel_freitext1_suche','artikel_suche_variante_von','artikel_artikelnummer_suche'
,'standard_datensaetze_datatables','waehrung','branch'
,'warnung_doppelte_nummern','wareneingang_zwischenlager','boxausrichtung'
,'footer_breite1','footer_breite2','footer_breite3','footer_breite4','steuersatz_normal','steuersatz_ermaessigt','angebot_ohnebriefpapier','auftrag_ohnebriefpapier','rechnung_ohnebriefpapier',
'lieferschein_ohnebriefpapier','gutschrift_ohnebriefpapier','bestellung_ohnebriefpapier','arbeitsnachweis_ohnebriefpapier','externereinkauf'
,'projektnummerimdokument','mailanstellesmtp','herstellernummerimdokument','artikeleinheit','artikeleinheit_standard','auftrag_bezeichnung_bearbeiter','auftrag_bezeichnung_bestellnummer','bezeichnungkundennummer'
,'auftrag_bezeichnung_vertrieb','standardmarge','schriftart'
,'zahlung_rechnung','zahlung_vorkasse','zahlung_nachnahme','zahlung_bar','zahlung_paypal','zahlung_amazon','zahlung_lastschrift','zahlung_kreditkarte','zahlung_ratenzahlung','zahlung_rechnung_sofort_de','zahlung_rechnung_de'
,'zahlung_vorkasse_de','zahlung_bar_de','zahlung_lastschrift_de','zahlung_nachnahme_de','zahlung_paypal_de','zahlung_amazon_de','zahlung_kreditkarte_de','zahlung_ratenzahlung_de','zahlungszieltage','zahlungszieltageskonto'
,'zahlungszielskonto','kleinunternehmer','schnellanlegen','bestellvorschlaggroessernull','immernettorechnungen','rechnung_header','rechnung_footer',
'lieferschein_header','lieferschein_footer','auftrag_header','auftrag_footer','angebot_header','angebot_footer','gutschrift_header','gutschrift_footer','bestellung_header','bestellung_footer',
'arbeitsnachweis_header','arbeitsnachweis_footer','provisionsgutschrift_header','provisionsgutschrift_footer','proformarechnung_header','proformarechnung_footer','eu_lieferung_vermerk','export_lieferung_vermerk'
,'wareneingang_kamera_waage','layout_iconbar','passwort','host','port','mailssl','signatur','email','absendername','bcc1','bcc2','bcc3'
,'firmenfarbe','name','strasse','plz','ort','steuernummer','projekt','steuer_positionen_export','tabsnavigationfarbe','tabsnavigationfarbeschrift'
,"buchhaltung_berater","buchhaltung_mandant","buchhaltung_wj_beginn","buchhaltung_sachkontenlaenge", "fibu_buchungen_startdatum", "rechnung_skonto_kontorahmen", "rechnung_schnelleingabe_konto"
);
if(isset($sql2a)){
unset($sql2a);
}
foreach($toupdate as $v) {
$check = $this->app->DB->SELECT("SHOW COLUMNS FROM firmendaten WHERE Field = '$v'");
if ($check) {
$this->app->DB->Update("UPDATE firmendaten SET ".$v." = '".($data[$v])."'"." WHERE firma = '$id' LIMIT 1");
}
}
if (isset($firmendaten_werte_spalten)) {
foreach($toupdate as $key) {
if(isset($firmendaten_werte_spalten[$key])) {
if ($firmendaten_werte_spalten[$key]['wert'] != $data[$key]) {
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '".$data[$key]."' WHERE id = '".$firmendaten_werte_spalten[$key]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$key]);
if(!empty($doubletes[$key])) {
$this->app->DB->Delete(
sprintf(
"DELETE FROM firmendaten_werte WHERE id <> %d AND name != '%s' AND id IN (%s)",
$firmendaten_werte_spalten[$key]['id'], $this->app->DB->real_escape_string($key),
implode(', ', $doubletes[$key])
)
);
unset($doubletes[$key]);
}
}
} else {
// Create new value in firmendaten_werte
$sql = "INSERT INTO firmendaten_werte (name, wert) VALUES('$key', '".$data[$key]."')";
$this->app->DB->Update($sql);
}
}
}
for($i = 0; $i <= 3; $i++) {
for($j = 0; $j <= 5; $j++) {
$toupdate2['footer_'.$i.'_'.$j] = $data['footer'][$i][$j];
}
}
foreach($toupdate2 as $k => $v) {
$check = $this->app->DB->SELECT("SHOW COLUMNS FROM firmendaten WHERE Field = '$k'");
if ($check) {
$this->app->DB->Update("UPDATE firmendaten SET ".$k." = '".$v."'"." WHERE firma = '$id' LIMIT 1");
}
}
if(isset($firmendaten_werte_spalten)) {
foreach($toupdate2 as $key => $v) {
if(isset($firmendaten_werte_spalten[$key]) && $firmendaten_werte_spalten[$key]['wert'] != $toupdate2[$key])
{
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '".$toupdate2[$key]."' WHERE id = '".$firmendaten_werte_spalten[$key]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$key]);
if(!empty($doubletes[$key])) {
$this->app->DB->Delete(
sprintf(
"DELETE FROM firmendaten_werte WHERE id <> %d AND name != '%s' AND id IN (%s)",
$firmendaten_werte_spalten[$key]['id'], $this->app->DB->real_escape_string($key),
implode(', ', $doubletes[$key])
)
);
unset($doubletes[$key]);
}
}
}
}
$checkDoublettes = [];
for($i = 1; $i <= 5; $i++) {
$n1 = 'artikeltabellezusatz'.$i;
$n2 = 'adressetabellezusatz'.$i;
$n3 = 'auftragtabellezusatz'.$i;
$n4 = 'rechnungtabellezusatz'.$i;
$n5 = 'lieferscheintabellezusatz'.$i;
$n6 = 'produktiontabellezusatz'.$i;
$n7 = 'bestellungtabellezusatz'.$i;
$v1 = $this->app->Secure->GetPOST($n1);
$v2 = $this->app->Secure->GetPOST($n2);
$v3 = $this->app->Secure->GetPOST($n3);
$v4 = $this->app->Secure->GetPOST($n4);
$v5 = $this->app->Secure->GetPOST($n5);
$v6 = $this->app->Secure->GetPOST($n6);
$v7 = $this->app->Secure->GetPOST($n7);
if(isset($firmendaten_werte_spalten)) {
if(isset($firmendaten_werte_spalten[$n1]) && $firmendaten_werte_spalten[$n1]['wert'] != $v1) {
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$v1' WHERE id = '".$firmendaten_werte_spalten[$n1]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$n1]);
$checkDoublettes[] = $n1;
}
if(isset($firmendaten_werte_spalten[$n2]) && $firmendaten_werte_spalten[$n2]['wert'] != $v2)
{
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$v2' WHERE id = '".$firmendaten_werte_spalten[$n2]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$n2]);
$checkDoublettes[] = $n2;
}
if(isset($firmendaten_werte_spalten[$n3]) && $firmendaten_werte_spalten[$n3]['wert'] != $v3)
{
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$v3' WHERE id = '".$firmendaten_werte_spalten[$n3]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$n3]);
$checkDoublettes[] = $n3;
}
if(isset($firmendaten_werte_spalten[$n4]) && $firmendaten_werte_spalten[$n4]['wert'] != $v4)
{
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$v4' WHERE id = '".$firmendaten_werte_spalten[$n4]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$n4]);
$checkDoublettes[] = $n4;
}
if(isset($firmendaten_werte_spalten[$n5]) && $firmendaten_werte_spalten[$n5]['wert'] != $v5)
{
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$v5' WHERE id = '".$firmendaten_werte_spalten[$n5]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$n5]);
$checkDoublettes[] = $n5;
}
if(isset($firmendaten_werte_spalten[$n6]) && $firmendaten_werte_spalten[$n6]['wert'] != $v6)
{
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$v6' WHERE id = '".$firmendaten_werte_spalten[$n6]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$n6]);
$checkDoublettes[] = $n6;
}
if(isset($firmendaten_werte_spalten[$n7]) && $firmendaten_werte_spalten[$n7]['wert'] != $v7)
{
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '$v7' WHERE id = '".$firmendaten_werte_spalten[$n7]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$n7]);
$checkDoublettes[] = $n7;
}
}
}
if(!empty($checkDoublettes) && !empty($doubletes)) {
foreach($checkDoublettes as $key) {
if(!empty($doubletes[$key])){
$this->app->DB->Delete(
sprintf(
"DELETE FROM firmendaten_werte WHERE id <> %d AND name != '%s' AND id IN (%s)",
$firmendaten_werte_spalten[$key]['id'], $this->app->DB->real_escape_string($key),
implode(', ', $doubletes[$key])
)
);
unset($doubletes[$key]);
}
}
}
$fields = $this->app->erp->GetFirmaFields();
$fields[] = 'produktionsverhalten';
$fields[] = 'taxfromdoctypesettings';
$sqla = null;
foreach($fields as $key) {
if(isset($firmendaten_werte_spalten)) {
if(isset($firmendaten_werte_spalten[$key]) && $firmendaten_werte_spalten[$key]['wert'] != $data[$key])
{
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '".$data[$key]."' WHERE id = '".$firmendaten_werte_spalten[$key]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$key]);
if(!empty($doubletes[$key])){
$this->app->DB->Delete(
sprintf(
"DELETE FROM firmendaten_werte WHERE id <> %d AND name != '%s' AND id IN (%s)",
$firmendaten_werte_spalten[$key]['id'], $this->app->DB->real_escape_string($key),
implode(', ', $doubletes[$key])
)
);
unset($doubletes[$key]);
}
}
}
$sqla[] = " $key='{$data[$key]}' ";
}
/*
$sql = "UPDATE firmendaten SET ".implode(', ',$sqla)." WHERE firma='$id' LIMIT 1";
$this->app->DB->Update($sql);
*/
// if($this->app->DB->error()) {
foreach($fields as $key) {
$check = $this->app->DB->SELECT("SHOW COLUMNS FROM firmendaten WHERE Field = '$key'");
if ($check) {
$this->app->DB->Update("UPDATE firmendaten SET $key='{$data[$key]}' WHERE firma='$id' LIMIT 1");
}
}
// }
$fields_checkbox = $this->app->erp->GetFirmaFieldsCheckbox();
if(isset($sqla)){
unset($sqla);
}
foreach($fields_checkbox as $key) {
$_data[$key] = $data[$key];
if($_data[$key] === 'checked'){
$_data[$key] = 1;
}
$_data[$key] = (int)$_data[$key];
$sqla[] = " $key='{$_data[$key]}' ";
if(isset($firmendaten_werte_spalten) && isset($firmendaten_werte_spalten[$key]) && $firmendaten_werte_spalten[$key]['wert'] != $_data[$key])
{
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '".$_data[$key]."' WHERE id = '".$firmendaten_werte_spalten[$key]['id']."' LIMIT 1");
if(in_array($key,array('begrenzen_belege','begrenzen_artikeltabelle','begrenzen_adressetabelle')))
{
$this->app->erp->SetKonfigurationValue('firmendaten_'.$key.'_gesetzt', 1);
}
unset($firmendaten_werte_spalten[$key]);
}
}
/*
$sql = "UPDATE firmendaten SET ".implode(', ',$sqla)." WHERE firma='$id' LIMIT 1";
$this->app->DB->Update($sql);
*/
// if($this->app->DB->error()) {
foreach($fields_checkbox as $key) {
$_data[$key] = $data[$key];
if($_data[$key] === 'checked'){
$_data[$key] = 1;
}
$_data[$key] = (int)$_data[$key];
$check = $this->app->DB->SELECT("SHOW COLUMNS FROM firmendaten WHERE Field = '$key'");
if ($check) {
$this->app->DB->Update("UPDATE firmendaten SET $key='{$_data[$key]}' WHERE firma='$id' LIMIT 1");
}
}
// }
$firmendaten = $this->app->DB->SelectArr("SELECT * FROM firmendaten WHERE firma='$id' LIMIT 1");
if($firmendaten && isset($firmendaten_werte_spalten)) {
foreach($firmendaten[0] as $key => $v) {
if($key !== 'id' && isset($data[$key])) {
if(isset($firmendaten_werte_spalten[$key]) && $firmendaten_werte_spalten[$key]['wert'] != $data[$key]) {
$this->app->DB->Update("UPDATE firmendaten_werte SET wert = '".$data[$key]."' WHERE id = '".$firmendaten_werte_spalten[$key]['id']."' LIMIT 1");
unset($firmendaten_werte_spalten[$key]);
if(!empty($doubletes[$key])){
$this->app->DB->Delete(
sprintf(
"DELETE FROM firmendaten_werte WHERE id <> %d AND name != '%s' AND id IN (%s)",
$firmendaten_werte_spalten[$key]['id'], $this->app->DB->real_escape_string($key),
implode(', ', $doubletes[$key])
)
);
unset($doubletes[$key]);
}
}
}
}
}
$this->app->DB->Update("UPDATE firma SET name='{$data['name']}', standardprojekt='{$data['projekt']}' WHERE id='$id' LIMIT 1");
$this->app->Tpl->Set('MESSAGE', "<div class=\"error2\">Ihre Daten wurden erfolgreich gespeichert.</div>");
$this->FillFormFromDB($id);
}
else {
// Im Fehlerfall sollen das Formular mit den POST-Daten gefuellt werden
$this->app->Tpl->Set('MESSAGE', "<div class=\"error\">$error</div>");
$this->fillForm($data);
}
if(!$versandmail_zwischenspeichern && $this->app->erp->Firmendaten('versandmail_zwischenspeichern','',true) &&
!$this->app->DB->Select("SELECT id FROM prozessstarter WHERE parameter = 'versandmailsundrueckmeldung' AND aktiv = 1")){
$this->app->DB->Update("UPDATE prozessstarter SET aktiv = 1 WHERE parameter = 'versandmailsundrueckmeldung' LIMIT 1");
}
}
else{
$this->FillFormFromDB($id);
}
if($this->app->erp->Firmendaten('versandmail_zwischenspeichern',"",true)){
$this->app->erp->checkActiveCronjob('versandmailsundrueckmeldung', 'MESSAGEMAILS', false);
}
if (isset($fontUploadSuccessful) && $fontUploadSuccessful === true){
$this->app->Tpl->Add('MESSAGE',
sprintf('<div class="info">Die Schriftart &quot;%s&quot; wurde erfolgreich hochgeladen und in den Einstellungen hinterlegt. Bitte Testen Sie die Einstellung durch Generierung eines Belegs.</div>', $fontUploadName)
);
}
$hintergrund=$this->app->erp->Firmendaten("hintergrund");
$hintergrund_size = 0;
switch($hintergrund) {
case "briefpapier":
$hintergrund_size = strlen($this->app->erp->getSettingsFile('briefpapier'));
break;
case "logo":
$hintergrund_size = strlen($this->app->erp->getSettingsFile('logo'));
break;
}
if($hintergrund_size/1000 > 100){
$this->app->Tpl->Add('MESSAGE', '<div class="warning">Die Dateigröße von ca. ' . round($hintergrund_size / 1000) . ' KB vom ' . ucfirst($hintergrund) . ' ist zu groß. Das ' . ucfirst($hintergrund) . ' sollte unter 100 KB sein.</div>');
}
if($this->app->erp->Firmendaten('lizenz', true)) {
$this->app->Tpl->Set('UPDATESTARTENBUTTON','&nbsp;<a href="update.php"><input type="button" value="{|Update starten|}" /></a>');
}
$getPaymentmethodsToHide = $this->getPaymentmethodsToHide();
if(!empty($getPaymentmethodsToHide)) {
$this->app->Tpl->Add(
'MESSAGEZAHLUNGSWEISEN',
'<div class="info">Bitte stellen Sie die Zahlungstexte in den
<a href="index.php?module=zahlungsweisen&action=list" target="_blank">Zahlungsweisen</a> ein.
</div>'
);
foreach($getPaymentmethodsToHide as $paymentMethod) {
$this->app->Tpl->Add('TR_ZAHLUNG_'.strtoupper($paymentMethod), ' class="hide" ');
}
}
if(!empty($this->getNotInstalledPayments())) {
$this->app->Tpl->Add(
'MESSAGEZAHLUNGSWEISEN',
'<div class="info">
Ab der Version 20.1 sind alle Zahlweisen in das Modul Zahlweisen verlagert worden.
Sie sehen diese Meldung weil Sie vor der Version 20.1 mit Xentral gestartet hatten.
Wenn Sie auf das neue Modul welchseln möchten
(bitte nur nachdem Sie es in einem Testsystem geprüft hatten)
können Sie das gerne hier mit dem Button durchführen.
<div class="clear"></div>
<input type="submit"
value="Auf neues Modul Zahlungsweise unwiderruflich wechseln"
id="installnewpayent" name="installnewpayent" />
<div class="clear"></div>
</div>'
);
}
$this->app->YUI->AutoComplete('steuersatz_normal','steuersatz',1);
$this->app->YUI->AutoComplete('steuersatz_ermaessigt','steuersatz',1);
$this->app->YUI->DatePicker('fibu_buchungen_startdatum');
$this->app->YUI->AutoComplete('rechnung_skonto_kontorahmen', 'sachkonto');
$this->app->YUI->AutoComplete('rechnung_schnelleingabe_konto', 'konto');
$this->app->Tpl->Parse('PAGE','firmendaten.tpl');
}
/**
* @param int $id
*/
function fillFormFromDB($id)
{
$vorhanden = $this->app->DB->Select("SELECT id FROM firmendaten WHERE firma='$id' LIMIT 1");
if(!is_numeric($vorhanden))
{
// Falls das Formular zum ersten mal aufgerufen wird
$this->app->Tpl->Set('SICHTBAR' , "checked");
$this->app->Tpl->Set('HINTERGRUNDKEIN', "checked");
}else
{
// Lade Formular aus DB
$data = $this->app->DB->SelectArr("SELECT * FROM firmendaten WHERE firma='$id' LIMIT 1");
$firmendaten_werte = $this->app->DB->SelectArr("SELECT * FROM firmendaten_werte");
if($firmendaten_werte)
{
foreach($firmendaten_werte as $v) {
if(!isset($data[0][$v['name']])){
$data[0][$v['name']] = $v['wert'];
}
// Fill all fields
$this->app->Tpl->Set(strtoupper($v['name']), $v['wert']);
}
}
//Brief Absender
$this->app->Tpl->Set('ABSENDER' , $data[0]['absender']);
$this->app->Tpl->Set('SICHTBAR' , $this->parseCheckbox($data[0]['sichtbar']));
$this->app->Tpl->Set('RECHNUNG_GUTSCHRIFT_ANSPRECHPARTNER' , $this->parseCheckbox($data[0]['rechnung_gutschrift_ansprechpartner']));
$this->app->Tpl->Set('KNICKFALZ' , $this->parseCheckbox($data[0]['knickfalz']));
$this->app->Tpl->Set('STANDARDAUFLOESUNG', $this->parseCheckbox($data[0]['standardaufloesung']));
//$this->app->Tpl->Set('FIRMENLOGOAKTIV' , $this->parseCheckbox($data[0]['firmenlogoaktiv']));
$this->app->Tpl->Set('ARTIKELSUCHEKURZTEXT' , $this->parseCheckbox($data[0]['artikel_suche_kurztext']));
$this->app->Tpl->Set('ARTIKELSUCHEVARIANTEVON' , $this->parseCheckbox($data[0]['artikel_suche_variante_von']));
$this->app->Tpl->Set('ARTIKEL_FREITEXT1_SUCHE' , $this->parseCheckbox($data[0]['artikel_freitext1_suche']));
$this->app->Tpl->Set('ADRESSE_FREITEXT1_SUCHE' , $this->parseCheckbox($data[0]['adresse_freitext1_suche']));
$this->app->Tpl->Set('PARAMETERUNDFREIFELDER' , $this->parseCheckbox($data[0]['parameterundfreifelder']));
$this->app->Tpl->Set('ARTIKEL_ARTIKELNUMMER_SUCHE' , $this->parseCheckbox($data[0]['artikel_artikelnummer_suche']));
for($in = 1; $in <= 40; $in++){
$this->app->Tpl->Set('FREIFELD'.$in , $data[0]['freifeld'.$in]);
}
for($in = 1; $in <= 20; $in++){
$this->app->Tpl->Set('PROJEKTFREIFELD'.$in , $data[0]['projektfreifeld'.$in]);
}
$this->app->Tpl->Set('STANDARD_DATENSAETZE_DATATABLES' , $data[0]['standard_datensaetze_datatables']);
$this->app->Tpl->Set('STEUERSATZNORMAL' , $data[0]['steuersatz_normal']);
$this->app->Tpl->Set('STEUERSATZERMAESSIGT' , $data[0]['steuersatz_ermaessigt']);
$this->app->Tpl->Set('WAEHRUNG' , $data[0]['waehrung']);
$this->app->Tpl->Set('LIZENZ' , $data[0]['lizenz']);
$this->app->Tpl->Set('SCHLUESSEL' , $data[0]['schluessel']);
$this->app->Tpl->Set('BRANCH' , $data[0]['branch']);
$this->app->Tpl->Set('VERSION' , $data[0]['version']);
$this->app->Tpl->Set('BOXAUSRICHTUNG' , $data[0]['boxausrichtung']);
$this->app->Tpl->Set('FOOTERBREITE1' , $data[0]['footer_breite1']);
$this->app->Tpl->Set('FOOTERBREITE2' , $data[0]['footer_breite2']);
$this->app->Tpl->Set('FOOTERBREITE3' , $data[0]['footer_breite3']);
$this->app->Tpl->Set('FOOTERBREITE4' , $data[0]['footer_breite4']);
$this->app->Tpl->Set('WARNUNG_DOPPELTE_NUMMERN' , $this->parseCheckbox($data[0]['warnung_doppelte_nummern']));
$this->app->Tpl->Set('WARENEINGANG_ZWISCHENLAGER' , $this->parseCheckbox($data[0]['wareneingang_zwischenlager']));
//Formatierung
$this->app->Tpl->Set('BARCODE' , $this->parseCheckbox($data[0]['barcode']));
$this->app->Tpl->Set('SCHRIFTGROESSE' , ($data[0]['schriftgroesse']));
$this->app->Tpl->Set('BETREFFSZEILE' , ($data[0]['betreffszeile']));
$this->app->Tpl->Set('DOKUMENTENTEXT' , ($data[0]['dokumententext']));
$this->app->Tpl->Set('TABELLENBESCHRIFTUNG' , ($data[0]['tabellenbeschriftung']));
$this->app->Tpl->Set('TABELLENINHALT' , ($data[0]['tabelleninhalt']));
$this->app->Tpl->Set('ZEILENUNTERTEXT' , ($data[0]['zeilenuntertext']));
$this->app->Tpl->Set('FREITEXT' , ($data[0]['freitext']));
$this->app->Tpl->Set('BRIEFTEXT' , ($data[0]['brieftext']));
$this->app->Tpl->Set('INFOBOX' , ($data[0]['infobox']));
$this->app->Tpl->Set('SPALTENBREITE' , ($data[0]['spaltenbreite']));
$this->app->Tpl->Set('ABSTANDADRESSZEILEOBEN' , ($data[0]['abstand_adresszeileoben']));
$this->app->Tpl->Set('ABSTANDBOXRECHTSOBEN' , ($data[0]['abstand_boxrechtsoben']));
$this->app->Tpl->Set('ABSTANDBOXRECHTSOBENLR' , ($data[0]['abstand_boxrechtsoben_lr']));
$this->app->Tpl->Set('ABSTANDBETREFFZEILEOBEN' , ($data[0]['abstand_betreffzeileoben']));
$this->app->Tpl->Set('ABSTANDARTIKELTABELLEOBEN' , ($data[0]['abstand_artikeltabelleoben']));
$this->app->Tpl->Set('ABSTANDNAMEBESCHREIBUNG' , ($data[0]['abstand_name_beschreibung']));
$this->app->Tpl->Set('ARTIKELEINHEITSTANDARD' , ($data[0]['artikeleinheit_standard']));
$this->app->Tpl->Set('AUFTRAG_BEZEICHNUNG_BEARBEITER' , ($data[0]['auftrag_bezeichnung_bearbeiter']));
$this->app->Tpl->Set('AUFTRAG_BEZEICHNUNG_VERTRIEB' , ($data[0]['auftrag_bezeichnung_vertrieb']));
$this->app->Tpl->Set('AUFTRAG_BEZEICHNUNG_BESTELLNUMMER' , ($data[0]['auftrag_bezeichnung_bestellnummer']));
$this->app->Tpl->Set('BEZEICHNUNGKUNDENNUMMER' , ($data[0]['bezeichnungkundennummer']));
// Footer
$this->app->Tpl->Set('FOOTER00' , $data[0]['footer_0_0']);
$this->app->Tpl->Set('FOOTER01' , $data[0]['footer_0_1']);
$this->app->Tpl->Set('FOOTER02' , $data[0]['footer_0_2']);
$this->app->Tpl->Set('FOOTER03' , $data[0]['footer_0_3']);
$this->app->Tpl->Set('FOOTER04' , $data[0]['footer_0_4']);
$this->app->Tpl->Set('FOOTER05' , $data[0]['footer_0_5']);
$this->app->Tpl->Set('FOOTER10' , $data[0]['footer_1_0']);
$this->app->Tpl->Set('FOOTER11' , $data[0]['footer_1_1']);
$this->app->Tpl->Set('FOOTER12' , $data[0]['footer_1_2']);
$this->app->Tpl->Set('FOOTER13' , $data[0]['footer_1_3']);
$this->app->Tpl->Set('FOOTER14' , $data[0]['footer_1_4']);
$this->app->Tpl->Set('FOOTER15' , $data[0]['footer_1_5']);
$this->app->Tpl->Set('FOOTER20' , $data[0]['footer_2_0']);
$this->app->Tpl->Set('FOOTER21' , $data[0]['footer_2_1']);
$this->app->Tpl->Set('FOOTER22' , $data[0]['footer_2_2']);
$this->app->Tpl->Set('FOOTER23' , $data[0]['footer_2_3']);
$this->app->Tpl->Set('FOOTER24' , $data[0]['footer_2_4']);
$this->app->Tpl->Set('FOOTER25' , $data[0]['footer_2_5']);
$this->app->Tpl->Set('FOOTER30' , $data[0]['footer_3_0']);
$this->app->Tpl->Set('FOOTER31' , $data[0]['footer_3_1']);
$this->app->Tpl->Set('FOOTER32' , $data[0]['footer_3_2']);
$this->app->Tpl->Set('FOOTER33' , $data[0]['footer_3_3']);
$this->app->Tpl->Set('FOOTER34' , $data[0]['footer_3_4']);
$this->app->Tpl->Set('FOOTER35' , $data[0]['footer_3_5']);
$this->app->Tpl->Set('RECHNUNG_HEADER' , $data[0]['rechnung_header']);
$this->app->Tpl->Set('LIEFERSCHEIN_HEADER' , $data[0]['lieferschein_header']);
$this->app->Tpl->Set('GUTSCHRIFT_HEADER' , $data[0]['gutschrift_header']);
$this->app->Tpl->Set('ANGEBOT_HEADER' , $data[0]['angebot_header']);
$this->app->Tpl->Set('AUFTRAG_HEADER' , $data[0]['auftrag_header']);
$this->app->Tpl->Set('BESTELLUNG_HEADER' , $data[0]['bestellung_header']);
$this->app->Tpl->Set('ARBEITSNACHWEIS_HEADER' , $data[0]['arbeitsnachweis_header']);
$this->app->Tpl->Set('PROVISIONSGUTSCHRIFT_HEADER' , $data[0]['provisionsgutschrift_header']);
$this->app->Tpl->Set('PROFORMARECHNUNG_HEADER' , $data[0]['proformarechnung_header']);
$this->app->Tpl->Set('RECHNUNG_FOOTER' , $data[0]['rechnung_footer']);
$this->app->Tpl->Set('LIEFERSCHEIN_FOOTER' , $data[0]['lieferschein_footer']);
$this->app->Tpl->Set('GUTSCHRIFT_FOOTER' , $data[0]['gutschrift_footer']);
$this->app->Tpl->Set('ANGEBOT_FOOTER' , $data[0]['angebot_footer']);
$this->app->Tpl->Set('AUFTRAG_FOOTER' , $data[0]['auftrag_footer']);
$this->app->Tpl->Set('BESTELLUNG_FOOTER' , $data[0]['bestellung_footer']);
$this->app->Tpl->Set('ARBEITSNACHWEIS_FOOTER' , $data[0]['arbeitsnachweis_footer']);
$this->app->Tpl->Set('PROVISIONSGUTSCHRIFT_FOOTER' , $data[0]['provisionsgutschrift_footer']);
$this->app->Tpl->Set('PROFORMARECHNUNG_FOOTER' , $data[0]['proformarechnung_footer']);
$this->app->Tpl->Set('EU_LIEFERUNG_VERMERK' , $data[0]['eu_lieferung_vermerk']);
$this->app->Tpl->Set('EXPORT_LIEFERUNG_VERMERK' , $data[0]['export_lieferung_vermerk']);
$this->app->Tpl->Set('STANDARDVERSANDDRUCKER' , $this->app->erp->GetSelectDrucker($data[0]['standardversanddrucker']));
$this->app->Tpl->Set('STANDARDETIKETTENDRUCKER' , $this->app->erp->GetSelectEtikettenDrucker($data[0]['standardetikettendrucker']));
$this->app->Tpl->Set('ETIKETTENDRUCKERWARENEINGANG' , $this->app->erp->GetSelectEtikettenDrucker($data[0]['etikettendrucker_wareneingang']));
$this->app->Tpl->Set('AUFGABEN_BONDRUCKER' , $this->app->erp->GetSelectBonDrucker($data[0]['aufgaben_bondrucker']));
$this->app->Tpl->Set('SPRACHEBEVORZUGEN', $this->languageSelectOptions($this->getPreferredLanguage()));
$stichwoerter = $this->app->erp->getDateiTypen('artikel');
foreach ($stichwoerter as $stichwort){
$selected = '';
if ($stichwort['wert'] === $data[0]['wareneingangbildtypvorauswahl']){
$selected = 'selected';
}
$this->app->Tpl->Add('WARENEINGANBILDTYPVORAUSWAHL','<option value="'.$stichwort['wert'].'" '.$selected.'>'.$stichwort['beschriftung'].'</option>');
}
$scanVerhalten = [
'nurseriennummern' => 'Nur Seriennummern erfassen',
'erstseriennummern' => 'Erst Seriennummern dann Bemerkungen erfassen',
'abwechselnd' => 'Seriennummern und Bemerkungen abwechselnd erfassen'];
foreach ($scanVerhalten as $verhalten => $bezeichnung){
$selected = '';
if ($verhalten === $data[0]['wareneingangscanverhalten']){
$selected = 'selected';
}
$this->app->Tpl->Add('WARENEINGANGSCANVERHALTENAUSWAHL',"<option value=\"$verhalten\" $selected>$bezeichnung</option>");
}
$this->app->Tpl->Set('FOOTERSICHTBAR' , $this->parseCheckbox($data[0]['footersichtbar']));
$this->app->Tpl->Set('BRIEFPAPIER2VORHANDEN' , $this->parseCheckbox($data[0]['briefpapier2vorhanden']));
$this->app->Tpl->Set('ANGEBOT_OHNEBRIEFPAPIER' , $this->parseCheckbox($data[0]['angebot_ohnebriefpapier']));
$this->app->Tpl->Set('AUFTRAG_OHNEBRIEFPAPIER' , $this->parseCheckbox($data[0]['auftrag_ohnebriefpapier']));
$this->app->Tpl->Set('RECHNUNG_OHNEBRIEFPAPIER' , $this->parseCheckbox($data[0]['rechnung_ohnebriefpapier']));
$this->app->Tpl->Set('LIEFERSCHEIN_OHNEBRIEFPAPIER' , $this->parseCheckbox($data[0]['lieferschein_ohnebriefpapier']));
$this->app->Tpl->Set('GUTSCHRIFT_OHNEBRIEFPAPIER' , $this->parseCheckbox($data[0]['gutschrift_ohnebriefpapier']));
$this->app->Tpl->Set('BESTELLUNG_OHNEBRIEFPAPIER' , $this->parseCheckbox($data[0]['bestellung_ohnebriefpapier']));
$this->app->Tpl->Set('ARBEITSNACHWEIS_OHNEBRIEFPAPIER' , $this->parseCheckbox($data[0]['arbeitsnachweis_ohnebriefpapier']));
$this->app->Tpl->Set('EXTERNEREINKAUF' , $this->parseCheckbox($data[0]['externereinkauf']));
$this->app->Tpl->Set('PROJEKTNUMMERIMDOKUMENT' , $this->parseCheckbox($data[0]['projektnummerimdokument']));
$this->app->Tpl->Set('MAILANSTELLESMTP' , $this->parseCheckbox($data[0]['mailanstellesmtp']));
$this->app->Tpl->Set('HERSTELLERNUMMERIMDOKUMENT' , $this->parseCheckbox($data[0]['herstellernummerimdokument']));
$this->app->Tpl->Set('ARTIKELEINHEIT' , $this->parseCheckbox($data[0]['artikeleinheit']));
$this->app->Tpl->Set('AUFTRAG_BEZEICHNUNG_BEARBEITER' , $data[0]['auftrag_bezeichnung_bearbeiter']);
$this->app->Tpl->Set('AUFTRAG_BEZEICHNUNG_VETRIEB' , $data[0]['auftrag_bezeichnung_vertrieb']);
$this->app->Tpl->Set('AUFTRAG_BEZEICHNUNG_BESTELLNUMMER' , $data[0]['auftrag_bezeichnung_bestellnummer']);
$this->app->Tpl->Set('BEZEICHNUNGKUNDENNUMMER' , $data[0]['bezeichnungkundennummer']);
$this->app->Tpl->Set('STANDARDMARGE' , $data[0]['standardmarge']);
$this->app->Tpl->Set('SEITEVONSICHTBAR' , $this->parseCheckbox($data[0]['seite_von_sichtbar']));
$this->app->Tpl->Set('SEITEVONAUSRICHTUNG' , $data[0]['seite_von_ausrichtung']);
$this->app->Tpl->Set('SCHRIFTART' , $data[0]['schriftart']);
$this->app->Tpl->Set('FIRMENFARBEHELL',$data[0]['firmenfarbehell']);
$this->app->Tpl->Set('FIRMENFARBEDUNKEL',$data[0]['firmenfarbedunkel']);
$this->app->Tpl->Set('FIRMENFARBEGANZDUNKEL',$data[0]['firmenfarbeganzdunkel']);
$this->app->Tpl->Set('NAVIGATIONFARBE',$data[0]['navigationfarbe']);
$this->app->Tpl->Set('NAVIGATIONFARBESCHRIFT',$data[0]['navigationfarbeschrift']);
$this->app->Tpl->Set('TABSNAVIGATIONFARBE',$data[0]['tabsnavigationfarbe']);
$this->app->Tpl->Set('TABSNAVIGATIONFARBESCHRIFT',$data[0]['tabsnavigationfarbeschrift']);
$this->app->Tpl->Set('UNTERNAVIGATIONFARBE',$data[0]['unternavigationfarbe']);
$this->app->Tpl->Set('UNTERNAVIGATIONFARBESCHRIFT',$data[0]['unternavigationfarbeschrift']);
$this->app->Tpl->Set('ZAHLUNG_RECHNUNG' , $this->parseCheckbox($data[0]['zahlung_rechnung']));
$this->app->Tpl->Set('ZAHLUNG_VORKASSE' , $this->parseCheckbox($data[0]['zahlung_vorkasse']));
$this->app->Tpl->Set('ZAHLUNG_NACHNAHME' , $this->parseCheckbox($data[0]['zahlung_nachnahme']));
$this->app->Tpl->Set('ZAHLUNG_LASTSCHRIFT' , $this->parseCheckbox($data[0]['zahlung_lastschrift']));
$this->app->Tpl->Set('ZAHLUNG_BAR' , $this->parseCheckbox($data[0]['zahlung_bar']));
$this->app->Tpl->Set('ZAHLUNG_KREDITKARTE' , $this->parseCheckbox($data[0]['zahlung_kreditkarte']));
$this->app->Tpl->Set('ZAHLUNG_PAYPAL' , $this->parseCheckbox($data[0]['zahlung_paypal']));
$this->app->Tpl->Set('ZAHLUNG_AMAZON' , $this->parseCheckbox($data[0]['zahlung_amazon']));
$this->app->Tpl->Set('ZAHLUNG_RATENZAHLUNG' , $this->parseCheckbox($data[0]['zahlung_ratenzahlung']));
$this->app->Tpl->Set('KLEINUNTERNEHMER' , $this->parseCheckbox($data[0]['kleinunternehmer']));
$this->app->Tpl->Set('SCHNELLANLEGEN' , $this->parseCheckbox($data[0]['schnellanlegen']));
$this->app->Tpl->Set('BESTELLVORSCHLAGSGROESSERNULL' , $this->parseCheckbox($data[0]['bestellvorschlaggroessernull']));
$this->app->Tpl->Set('IMMERNETTORECHNUNGEN' , $this->parseCheckbox($data[0]['immernettorechnungen']));
$this->app->Tpl->Set('ZAHLUNG_RECHNUNG_SOFORT_DE', $data[0]['zahlung_rechnung_sofort_de']);
$this->app->Tpl->Set('ZAHLUNG_RECHNUNG_DE', $data[0]['zahlung_rechnung_de']);
$this->app->Tpl->Set('STEUER_POSITIONEN_EXPORT', $data[0]['steuer_positionen_export']);
$fields = $this->app->erp->GetFirmaFields();
foreach($fields as $key) {
$this->app->Tpl->Set(strtoupper($key), $data[0][$key]);
if(in_array($key,array('begrenzenanzahl_belege','begrenzenanzahl_artikeltabelle','begrenzenanzahl_adressetabelle'))) {
if(empty($data[0][$key])) {
$this->app->Tpl->Set('VOR'.strtoupper($key),'<!--');
$this->app->Tpl->Set('NACH'.strtoupper($key),'-->');
}
}
}
$fields = null;
for($ki = 1; $ki <= 40; $ki++) {
$fields[]='freifeld'.$ki.'typ';
$fields[]='freifeld'.$ki.'spalte';
$fields[]='freifeld'.$ki.'sort';
}
for($ki = 1; $ki <= 20; $ki++) {
$fields[]='projektfreifeld'.$ki.'typ';
$fields[]='projektfreifeld'.$ki.'spalte';
$fields[]='projektfreifeld'.$ki.'sort';
$fields[]='projektfreifeld'.$ki.'tabelle';
$fields[]='projektfreifeld'.$ki.'breite';
}
for($ki = 1; $ki <= 20; $ki++) {
$fields[]='adressefreifeld'.$ki;
$fields[]='adressefreifeld'.$ki.'sort';
}
foreach($fields as $key) {
$this->app->Tpl->Set(strtoupper($key), $data[0][$key]);
}
$tmp = null;
$belege = array('an','ab','re','gs','ls','be','pr','pa','pd');
foreach($belege as $value) {
for($i=1;$i<=40;$i++) {
$tmp[] = 'freifeld' . $i . $value;
}
}
foreach($tmp as $key) {
$this->app->Tpl->Set(strtoupper($key), $this->parseCheckbox($data[0][$key]));
}
$fields_checkbox = $this->app->erp->GetFirmaFieldsCheckbox();
foreach($fields_checkbox as $key) {
$this->app->Tpl->Set(strtoupper($key), $this->parseCheckbox($data[0][$key]));
}
$this->app->Tpl->Set('VERSANDART', $this->app->erp->GetSelectAsso($this->app->erp->GetVersandartAuftrag(),$data[0]['versandart']));
$this->app->Tpl->Set('ZAHLUNGSWEISE', $this->app->erp->GetSelectAsso($this->app->erp->GetZahlungsweise(),$data[0]['zahlungsweise']));
$this->app->Tpl->Set('ZAHLUNGSWEISELIEFERANT', $this->app->erp->GetSelectAsso($this->app->erp->GetZahlungsweise(),$data[0]['zahlungsweiselieferant']));
$this->app->Tpl->Set('WAEHRUNG', $this->app->erp->GetSelectAsso(
$this->app->erp->GetWaehrung(),(string)$data[0]['waehrung'] === '' ? 'EUR' : $data[0]['waehrung'])
);
$this->app->Tpl->Set('ZAHLUNG_VORKASSE_DE', $data[0]['zahlung_vorkasse_de']);
$this->app->Tpl->Set('ZAHLUNG_NACHNAHME_DE', $data[0]['zahlung_nachnahme_de']);
$this->app->Tpl->Set('ZAHLUNG_BAR_DE', $data[0]['zahlung_bar_de']);
$this->app->Tpl->Set('ZAHLUNG_PAYPAL_DE', $data[0]['zahlung_paypal_de']);
$this->app->Tpl->Set('ZAHLUNG_LASTSCHRIFT_DE', $data[0]['zahlung_lastschrift_de']);
$this->app->Tpl->Set('ZAHLUNG_KREDITKARTE_DE', $data[0]['zahlung_kreditkarte_de']);
$this->app->Tpl->Set('ZAHLUNG_AMAZON_DE', $data[0]['zahlung_amazon_de']);
$this->app->Tpl->Set('ZAHLUNG_RATENZAHLUNG_DE', $data[0]['zahlung_ratenzahlung_de']);
$this->app->Tpl->Set('ZAHLUNGSZIELTAGE', $data[0]['zahlungszieltage']);
$this->app->Tpl->Set('ZAHLUNGSZIELTAGESKONTO', $data[0]['zahlungszieltageskonto']);
$this->app->Tpl->Set('ZAHLUNGSZIELSKONTO', $data[0]['zahlungszielskonto']);
$this->app->Tpl->Set('WARENEINGANG_KAMERA_WAAGE', $this->parseCheckbox($data[0]['wareneingang_kamera_waage']));
$this->app->Tpl->Set('LAYOUT_ICONBAR', $this->parseCheckbox($data[0]['layout_iconbar']));
$this->app->Tpl->Set('NEXT_ANGEBOT' , $data[0]['next_angebot']);
$this->app->Tpl->Set('NEXT_AUFTRAG' , $data[0]['next_auftrag']);
$this->app->Tpl->Set('NEXT_LIEFERSCHEIN' , $data[0]['next_lieferschein']);
$this->app->Tpl->Set('NEXT_RETOURE' , $data[0]['next_retoure']);
$this->app->Tpl->Set('NEXT_RECHNUNG' , $data[0]['next_rechnung']);
$this->app->Tpl->Set('NEXT_GUTSCHRIFT' , $data[0]['next_gutschrift']);
$this->app->Tpl->Set('NEXT_BESTELLUNG' , $data[0]['next_bestellung']);
$this->app->Tpl->Set('NEXT_ARBEITSNACHWEIS' , $data[0]['next_arbeitsnachweis']);
$this->app->Tpl->Set('NEXT_KUNDENNUMMER' , $data[0]['next_kundennummer']);
$this->app->Tpl->Set('NEXT_PROJEKTNUMMER' , $data[0]['next_projektnummer']);
$this->app->Tpl->Set('NEXT_LIEFERANTENNUMMER' , $data[0]['next_lieferantennummer']);
$this->app->Tpl->Set('NEXT_MITARBEITERNUMMER' , $data[0]['next_mitarbeiternummer']);
$this->app->Tpl->Set('NEXT_ARTIKELNUMMER' , $data[0]['next_artikelnummer']);
$this->app->Tpl->Set('NEXT_WAREN' , $data[0]['next_waren']);
$this->app->Tpl->Set('NEXT_SONSTIGES' , $data[0]['next_sonstiges']);
$this->app->Tpl->Set('NEXT_PRODUKTION' , $data[0]['next_produktion']);
$this->app->Tpl->Set('NEXT_REISEKOSTEN', $data[0]['next_reisekosten']);
$this->app->Tpl->Set('NEXT_PROFORMARECHNUNG', $data[0]['next_proformarechnung']);
$this->app->Tpl->Set('NEXT_ANFRAGE' , $data[0]['next_anfrage']);
$this->app->Tpl->Set('NEXT_PREISANFRAGE' , $data[0]['next_preisanfrage']);
$this->app->Tpl->Set('NEXT_VERBINDLICHKEIT', $data[0]['next_verbindlichkeit']);
$this->app->Tpl->Set('NEXT_LIEFERANTENGUTSCHRIFT', $data[0]['next_lieferantengutschrift']);
$this->app->Tpl->Set('NEXT_RECEIPTDOCUMENT', $data[0]['next_receiptdocument']);
//Briefpapier Hintergrund
if($data[0]['hintergrund']==='logo') {
$this->app->Tpl->Set('HINTERGRUNDLOGO', "checked");
$this->app->Tpl->Set('HINTERGRUNDLOGOTEXT', "<a class=\"button\" href=\"index.php?module=firmendaten&action=logo\">Logo herunterladen</a>");
$this->app->Tpl->Set('HINTERGRUNDTEXT', "Logo (<a href=\"index.php?module=firmendaten&action=logo\">ansehen</a>)");
}
else if($data[0]['hintergrund']==='briefpapier') {
$this->app->Tpl->Set('HINTERGRUNDBRIEFPAPIER', "checked");
$this->app->Tpl->Set('HINTERGRUNDBRIEFPAPIERTEXT', "<a class=\"button\" href=\"index.php?module=firmendaten&action=briefpapier&cmd=briefpapier1\">PDF herunterladen</a>");
$this->app->Tpl->Set('HINTERGRUNDTEXT', "PDF (<a href=\"index.php?module=firmendaten&action=briefpapier\">ansehen</a>)");
}
else {
$this->app->Tpl->Set('HINTERGRUNDKEIN', "checked");
$this->app->Tpl->Set('HINTERGRUNDTEXT', "Kein");
}
if ((int)$data[0]['briefpapier2vorhanden'] === 1) {
$this->app->Tpl->Set('HINTERGRUNDBRIEFPAPIER2TEXT', "<a class=\"button\" href=\"index.php?module=firmendaten&action=briefpapier&cmd=briefpapier2\">PDF herunterladen</a>");
}
// Signatur
$this->app->Tpl->Set('SIGNATUR' , base64_decode($data[0]['signatur']));
$this->app->Tpl->Set('EMAIL', $this->app->erp->GetSelectEmail($data[0]['email']));
$this->app->Tpl->Set('ABSENDERNAME' , $data[0]['absendername']);
$this->app->Tpl->Set('BCC1' , $data[0]['bcc1']);
$this->app->Tpl->Set('BCC2' , $data[0]['bcc2']);
$this->app->Tpl->Set('BCC3' , $data[0]['bcc3']);
$this->app->Tpl->Set('FIRMENFARBE' , $data[0]['firmenfarbe']);
$this->app->Tpl->Set('NAME' , $data[0]['name']);
$this->app->Tpl->Set('STRASSE' , $data[0]['strasse']);
$this->app->Tpl->Set('PLZ' , $data[0]['plz']);
$this->app->Tpl->Set('ORT' , $data[0]['ort']);
$this->app->Tpl->Set('STEUERNUMMER' , $data[0]['steuernummer']);
$data[0]['projekt'] = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='{$data[0]['projekt']}' LIMIT 1");
$this->app->Tpl->Set('PROJEKT' , $data[0]['projekt']);
$this->app->Tpl->Set('STANDARDVERSANDDRUCKER' , $this->app->erp->GetSelectDrucker($data[0]['standardversanddrucker']));
$this->app->Tpl->Set('STANDARDETIKETTENDRUCKER' , $this->app->erp->GetSelectEtikettenDrucker($data[0]['standardetikettendrucker']));
$this->app->Tpl->Set('ETIKETTENDRUCKERWARENEINGANG' , $this->app->erp->GetSelectEtikettenDrucker($data[0]['etikettendrucker_wareneingang']));
$this->app->Tpl->Set('AUFGABEN_BONDRUCKER' , $this->app->erp->GetSelectBonDrucker($data[0]['aufgaben_bondrucker']));
if($this->app->Conf->WFcloud==true)
{
$this->app->Tpl->Set('LIZENZ',"Cloud Lizenz");
$this->app->Tpl->Set('SCHLUESSEL',"Cloud Schluessel");
}
$freifeldtyp = array('einzeilig'=>'einzeilig','mehrzeilig'=>'mehrzeilig','datum'=>'Datum','checkbox' => 'Checkbox','select'=>'Selectfeld');
$adressefreifeldspalten = array('0'=>'keine','1'=>'1','2'=>'2');
$projektfreifeldspalten = array('0'=>'keine','1'=>'1');
for($i = 1; $i <= 40; $i++) {
$fftyp = "";
$ffspalte ="";
foreach($freifeldtyp as $k => $v) {
$fftyp .= '<option value="' . $k . '"' . ($k == $data[0]['freifeld' . $i . 'typ'] ? ' selected="selected" ' : '') . '>' . $v . '</option>';
}
foreach($adressefreifeldspalten as $k => $v) {
$ffspalte .= '<option value="' . $k . '"' . ($k == $data[0]['freifeld' . $i . 'spalte'] ? ' selected="selected" ' : '') . '>' . $v . '</option>';
}
$tr = '<tr><td width="100">Freifeld '.$i.':</td><td><input type="text" name="freifeld'.$i.'" size="40" value="[FREIFELD'.$i.']" data-lang="artikel_freifeld'.$i.'"></td>
<td><select name="freifeld'.$i.'typ">'.$fftyp.'</select></td><td><select name="freifeld'.$i.'spalte">'.$ffspalte.'</select></td><td><input type="text" name="freifeld'.$i.'sort" size="3" value="[FREIFELD'.$i.'SORT]"></td>';
$tr .='<td height="28"><input type="checkbox" value="1" name="freifeld'.$i.'an" [FREIFELD'.$i.'AN]></td><td><input type="checkbox" value="1" name="freifeld'.$i.'ab" [FREIFELD'.$i.'AB]></td><td><input type="checkbox" value="1" name="freifeld'.$i.'re" [FREIFELD'.$i.'RE]></td><td><input type="checkbox" value="1" name="freifeld'.$i.'gs" [FREIFELD'.$i.'GS]></td><td><input type="checkbox" value="1" name="freifeld'.$i.'ls" [FREIFELD'.$i.'LS]></td><td><input type="checkbox" value="1" name="freifeld'.$i.'be" [FREIFELD'.$i.'BE]></td><td><input type="checkbox" value="1" name="freifeld'.$i.'pr" [FREIFELD'.$i.'PR]></td><td><input type="checkbox" value="1" name="freifeld'.$i.'pa" [FREIFELD'.$i.'PA]></td><td><input type="checkbox" value="1" name="freifeld'.$i.'pd" [FREIFELD'.$i.'PD]></td></tr>';
$this->app->Tpl->Add('ARTIKELFREIFELDER',$tr);
}
$artikelzusatzfelder = $this->app->erp->getZusatzfelderArtikel();
$adressezusatzfelder = $this->app->erp->getZusatzfelderAdresse();
$auftragzusatzfelder = $this->app->erp->getZusatzfelderAuftrag();
$rechnungzusatzfelder = $this->app->erp->getZusatzfelderRechnung();
$lieferscheinzusatzfelder = $this->app->erp->getZusatzfelderLieferschein();
$produktionzusatzfelder = $this->app->erp->getZusatzfelderProduktion();
$bestellungzusatzfelder = $this->app->erp->getZusatzfelderBestellung();
for($i = 1; $i <= 5; $i++)
{
foreach($artikelzusatzfelder as $k => $v)
{
$this->app->Tpl->Add('SELARTIKELTABELLEZUSATZ'.$i,'<option value="'.$k.'"'.($k == $data[0]['artikeltabellezusatz'.$i]?' selected="selected" ':'').'>'.$v.'</option>');
}
foreach($adressezusatzfelder as $k => $v)
{
$this->app->Tpl->Add('SELADRESSETABELLEZUSATZ'.$i,'<option value="'.$k.'"'.($k == $data[0]['adressetabellezusatz'.$i]?' selected="selected" ':'').'>'.$v.'</option>');
}
foreach($auftragzusatzfelder as $k => $v)
{
$this->app->Tpl->Add('SELAUFTRAGTABELLEZUSATZ'.$i,'<option value="'.$k.'"'.($k == $data[0]['auftragtabellezusatz'.$i]?' selected="selected" ':'').'>'.$v.'</option>');
}
foreach($rechnungzusatzfelder as $k => $v)
{
$this->app->Tpl->Add('SELRECHNUNGTABELLEZUSATZ'.$i,'<option value="'.$k.'"'.($k == $data[0]['rechnungtabellezusatz'.$i]?' selected="selected" ':'').'>'.$v.'</option>');
}
foreach($lieferscheinzusatzfelder as $k => $v)
{
$this->app->Tpl->Add('SELLIEFERSCHEINTABELLEZUSATZ'.$i,'<option value="'.$k.'"'.($k == $data[0]['lieferscheintabellezusatz'.$i]?' selected="selected" ':'').'>'.$v.'</option>');
}
foreach($produktionzusatzfelder as $k => $v)
{
$this->app->Tpl->Add('SELPRODUKTIONTABELLEZUSATZ'.$i,'<option value="'.$k.'"'.($k == $data[0]['produktiontabellezusatz'.$i]?' selected="selected" ':'').'>'.$v.'</option>');
}
foreach($bestellungzusatzfelder as $k => $v)
{
$this->app->Tpl->Add('SELBESTELLUNGTABELLEZUSATZ'.$i,'<option value="'.$k.'"'.($k == $data[0]['bestellungtabellezusatz'.$i]?' selected="selected" ':'').'>'.$v.'</option>');
}
}
for($i = 1; $i <= 20; $i++) {
foreach($freifeldtyp as $k => $v) {
$this->app->Tpl->Add('PROJEKTFREIFELD'.$i.'TYP','<option value="'.$k.'"'.($k == $data[0]['projektfreifeld'.$i.'typ']?' selected="selected" ':'').'>'.$v.'</option>');
}
foreach($projektfreifeldspalten as $k => $v) {
$this->app->Tpl->Add('PROJEKTFREIFELD'.$i.'SPALTE','<option value="'.$k.'"'.($k == $data[0]['projektfreifeld'.$i.'spalte']?' selected="selected" ':'').'>'.$v.'</option>');
}
}
for($i = 1; $i <= 20; $i++) {
foreach($freifeldtyp as $k => $v) {
$this->app->Tpl->Add('ADRESSEFREIFELD'.$i.'TYP','<option value="'.$k.'"'.($k == $data[0]['adressefreifeld'.$i.'typ']?' selected="selected" ':'').'>'.$v.'</option>');
}
foreach($adressefreifeldspalten as $k => $v) {
$this->app->Tpl->Add('ADRESSEFREIFELD'.$i.'SPALTE','<option value="'.$k.'"'.($k == $data[0]['adressefreifeld'.$i.'spalte']?' selected="selected" ':'').'>'.$v.'</option>');
}
}
$produktionsverhalten = $data[0]['produktionsverhalten'];
$produktionsverhaltenarr['explodieren'] = '{|Unterst&uuml;cklisten aufl&ouml;sen|}';
$produktionsverhaltenarr['ersteebene'] = '{|Unterst&uuml;cklisten nicht aufl&ouml;sen|}';
if($produktionsverhalten === 'unterproduktionen' || $this->app->erp->ModulVorhanden('unterproduktionen')) {
$produktionsverhaltenarr['unterproduktionen'] = '{|Unterproduktionen anlegen|}';
}
foreach($produktionsverhaltenarr as $k => $v) {
$this->app->Tpl->Add('PRODUKTIONSVERHALTEN','<option value="'.$k.'"'.($k == $produktionsverhalten?' selected="selected" ':'').'>'.$v.'</option>');
}
if(!empty($data[0]['taxfromdoctypesettings'])) {
$this->app->Tpl->Set('OPTIONTAXFROMDOCTYPESETTINGS', ' selected="selected" ');
}
// Fibu
$this->app->Tpl->Set('FIBU_BUCHUNGEN_STARTDATUM', $this->app->erp->ReplaceDatum(false,$data[0]['fibu_buchungen_startdatum'],false));
$this->app->Tpl->Set('RECHNUNG_SKONTO_KONTORAHMEN', $this->app->erp->ReplaceKontorahmen(false,$data[0]['rechnung_skonto_kontorahmen']));
$this->app->Tpl->Set('RECHNUNG_SCHNELLEINGABE_KONTO', $this->app->erp->ReplaceKonto(false,$data[0]['rechnung_schnelleingabe_konto']));
}
}
/**
* @param array $data
*/
function fillForm($data)
{
//Brief Absender
$this->app->Tpl->Set('ABSENDER' , $data['absender']);
$this->app->Tpl->Set('SICHTBAR' , $this->parseCheckbox($data['sichtbar']));
$this->app->Tpl->Set('RECHNUNG_GUTSCHRIFT_ANSPRECHPARTNER' , $this->parseCheckbox($data['rechnung_gutschrift_ansprechpartner']));
$this->app->Tpl->Set('KNICKFALZ' , $this->parseCheckbox($data['knickfalz']));
$this->app->Tpl->Set('STANDARDAUFLOESUNG' , $this->parseCheckbox($data['standardaufloesung']));
$this->app->Tpl->Set('ARTIKELSUCHEKURZTEXT' , $this->parseCheckbox($data['artikel_suche_kurztext']));
$this->app->Tpl->Set('ARTIKELSUCHEVARIANTEVON' , $this->parseCheckbox($data['artikel_suche_variante_von']));
$this->app->Tpl->Set('ADRESSE_FREITEXT1_SUCHE' , $this->parseCheckbox($data['adresse_freitext1_suche']));
$this->app->Tpl->Set('ADRESSE_FREITEXT1_SUCHE' , $this->parseCheckbox($data['adresse_freitext1_suche']));
$this->app->Tpl->Set('PARAMETERUNDFREIFELDER' , $this->parseCheckbox($data['parameterundfreifelder']));
for($in = 1; $in <= 40; $in++) {
$this->app->Tpl->Set('FREIFELD'.$in , $data['freifeld'.$in]);
}
for($in = 1; $in <= 20; $in++) {
$this->app->Tpl->Set('PROJEKTFREIFELD'.$in , $data['projektfreifeld'.$in]);
}
$this->app->Tpl->Set('STANDARD_DATENSAETZE_DATATABLES' , $data['standard_datensaetze_datatables']);
$this->app->Tpl->Set('STEUERSATZNORMAL' , $data['steuersatz_normal']);
$this->app->Tpl->Set('STEUERSATZERMAESSIGT' , $data['steuersatz_ermaessigt']);
$this->app->Tpl->Set('LIZENZ' , $data['lizenz']);
$this->app->Tpl->Set('SCHLUESSEL' , $data['schluessel']);
$this->app->Tpl->Set('BRANCH' , $data['branch']);
$this->app->Tpl->Set('VERSION' , $data['version']);
$this->app->Tpl->Set('WARNUNG_DOPPELTE_NUMMERN' , $this->parseCheckbox($data['warnung_doppelte_nummern']));
$this->app->Tpl->Set('WARENEINGANG_ZWISCHENLAGER' , $this->parseCheckbox($data['wareneingang_zwischenlager']));
$this->app->Tpl->Set('BOXAUSRICHTUNG' , $data['boxausrichtung']);
$this->app->Tpl->Set('FOOTERBREITE1' , $data['footer_breite1']);
$this->app->Tpl->Set('FOOTERBREITE2' , $data['footer_breite2']);
$this->app->Tpl->Set('FOOTERBREITE3' , $data['footer_breite3']);
$this->app->Tpl->Set('FOOTERBREITE4' , $data['footer_breite4']);
//Formatierung
$this->app->Tpl->Set('BARCODE' , $this->parseCheckbox($data['barcode']));
$this->app->Tpl->Set('SCHRIFTGROESSE' , ($data['schriftgroesse']));
$this->app->Tpl->Set('BETREFFSZEILE' , ($data['betreffszeile']));
$this->app->Tpl->Set('DOKUMENTENTEXT' , ($data['dokumententext']));
$this->app->Tpl->Set('TABELLENBESCHRIFTUNG' , ($data['tabellenbeschriftung']));
$this->app->Tpl->Set('TABELLENINHALT' , ($data['tabelleninhalt']));
$this->app->Tpl->Set('ZEILENUNTERTEXT' , ($data['zeilenuntertext']));
$this->app->Tpl->Set('FREITEXT' , ($data['freitext']));
$this->app->Tpl->Set('BRIFTEXT' , ($data['brieftext']));
$this->app->Tpl->Set('INFOBOX' , ($data['infobox']));
$this->app->Tpl->Set('SPALTENBREITE' , ($data['spaltenbreite']));
$this->app->Tpl->Set('ABSTANDADRESSZEILEOBEN' , ($data['abstand_adresszeileoben']));
$this->app->Tpl->Set('ABSTANDBOXRECHTSOBEN' , ($data['abstand_boxrechtsoben']));
$this->app->Tpl->Set('ABSTANDBOXRECHTSOBENLR' , ($data['abstand_boxrechtsoben_lr']));
$this->app->Tpl->Set('ABSTANDBETREFFZEILEOBEN' , ($data['abstand_betreffzeileoben']));
$this->app->Tpl->Set('ABSTANDARTIKELTABELLEOBEN' , ($data['abstand_artikeltabelleoben']));
$this->app->Tpl->Set('ABSTANDNAMEBESCHREIBUNG' , ($data['abstand_name_beschreibung']));
$this->app->Tpl->Set('ARTIKELEINHEIT_STANDARD' , ($data['artikeleinheit_standard']));
$this->app->Tpl->Set('AUFTRAG_BEZEICHNUNG_BEARBEITER', ($data['auftrag_bezeichnung_bearbeiter']));
$this->app->Tpl->Set('AUFTRAG_BEZEICHNUNG_VERTRIEB', ($data['auftrag_bezeichnung_vertrieb']));
$this->app->Tpl->Set('AUFTRAG_BEZEICHNUNG_BESTELLNUMMER', ($data['auftrag_bezeichnung_bestellnummer']));
$this->app->Tpl->Set('BEZEICHNUNGKUNDENNUMMER', ($data['bezeichnungkundennummer']));
//Footer
for($x=0; $x < 4; $x++) {
for ($y = 0; $y < 6; $y++) {
$this->app->Tpl->Set('FOOTER'.$x.$y, $data['footer'][$x][$y]);
}
}
$this->app->Tpl->Set('FOOTERSICHTBAR' , $this->parseCheckbox($data['footersichtbar']));
$this->app->Tpl->Set('STANDARDAUFLOESUNG' , $this->parseCheckbox($data['standardaufloesung']));
$this->app->Tpl->Set('BRIEFPAPIER2VORHANDEN' , $this->parseCheckbox($data['briefpapier2vorhanden']));
$this->app->Tpl->Set('SEITEVONSICHTBAR' , $this->parseCheckbox($data['seite_von_sichtbar']));
$this->app->Tpl->Set('SEITEVONAUSRICHTUNG' , $data['seite_von_ausrichtung']);
$this->app->Tpl->Set('ANGEBOT_OHNEBRIEFPAPIER' , $this->parseCheckbox($data['angebot_ohnebriefpapier']));
$this->app->Tpl->Set('AUFTRAG_OHNEBRIEFPAPIER' , $this->parseCheckbox($data['auftrag_ohnebriefpapier']));
$this->app->Tpl->Set('RECHNUNG_OHNEBRIEFPAPIER' , $this->parseCheckbox($data['rechnung_ohnebriefpapier']));
$this->app->Tpl->Set('LIEFERSCHEIN_OHNEBRIEFPAPIER' , $this->parseCheckbox($data['lieferschein_ohnebriefpapier']));
$this->app->Tpl->Set('GUTSCHRIFT_OHNEBRIEFPAPIER' , $this->parseCheckbox($data['gutschrift_ohnebriefpapier']));
$this->app->Tpl->Set('BESTELLUNG_OHNEBRIEFPAPIER' , $this->parseCheckbox($data['bestellung_ohnebriefpapier']));
$this->app->Tpl->Set('ARBEITSNACHWEIS_OHNEBRIEFPAPIER' , $this->parseCheckbox($data['arbeitsnachweis_ohnebriefpapier']));
$this->app->Tpl->Set('EXTERNEREINKAUF' , $this->parseCheckbox($data['externereinkauf']));
$this->app->Tpl->Set('PROJEKTNUMMERIMDOKUMENT' , $this->parseCheckbox($data['projektnummerimdokument']));
$this->app->Tpl->Set('MAILANSTELLESMTP' , $this->parseCheckbox($data['mailanstellesmtp']));
$this->app->Tpl->Set('HERSTELLERNUMMERIMDOKUMENT' , $this->parseCheckbox($data['herstellernummerimdokument']));
$this->app->Tpl->Set('ARTIKELEINHEIT' , $this->parseCheckbox($data['artikeleinheit']));
$this->app->Tpl->Set('AUFTRAG_BEZEICHNUNG_BEARBEITER' , $data['auftrag_bezeichnung_bearbeiter']);
$this->app->Tpl->Set('AUFTRAG_BEZEICHNUNG_VERTRIEB' , $data['auftrag_bezeichnung_vertrieb']);
$this->app->Tpl->Set('AUFTRAG_BEZEICHNUNG_BESTELLNUMMER' , $data['auftrag_bezeichnung_bestellnummer']);
$this->app->Tpl->Set('BEZEICHNUNGNUMMER' , $data['bezeichnungkundennummer']);
$this->app->Tpl->Set('STANDARDMARGE' , $data['standardmarge']);
$this->app->Tpl->Set('STANDARDVERSANDDRUCKER' , $this->app->erp->GetSelectDrucker($data['standardversanddrucker']));
$this->app->Tpl->Set('STANDARDETIKETTENDRUCKER' , $this->app->erp->GetSelectEtikettenDrucker($data['standardetikettendrucker']));
$this->app->Tpl->Set('ETIKETTENDRUCKERWARENEINGANG' , $this->app->erp->GetSelectEtikettenDrucker($data['etikettendrucker_wareneingang']));
$this->app->Tpl->Set('AUFGABEN_BONDRUCKER' , $this->app->erp->GetSelectBonDrucker($data['aufgaben_bondrucker']));
$this->app->Tpl->Set('SCHRIFTART' , $data['schriftart']);
$this->app->Tpl->Set('FIRMENFARBEHELL',$data['firmenfarbehell']);
$this->app->Tpl->Set('FIRMENFARBEDUNKEL',$data['firmenfarbedunkel']);
$this->app->Tpl->Set('FIRMENFARBEGANZDUNKEL',$data['firmenfarbeganzdunkel']);
$this->app->Tpl->Set('NAVIGATIONFARBE',$data['navigationfarbe']);
$this->app->Tpl->Set('NAVIGATIONFARBESCHRIFT',$data['navigationfarbeschrift']);
$this->app->Tpl->Set('TABSNAVIGATIONFARBE',$data['tabsnavigationfarbe']);
$this->app->Tpl->Set('TABSNAVIGATIONFARBESCHRIFT',$data['tabsnavigationfarbeschrift']);
$this->app->Tpl->Set('UNTERNAVIGATIONFARBE',$data['unternavigationfarbe']);
$this->app->Tpl->Set('UNTERNAVIGATIONFARBESCHRIFT',$data['unternavigationfarbeschrift']);
$this->app->Tpl->Set('ZAHLUNG_RECHNUNG' , $this->parseCheckbox($data['zahlung_rechnung']));
$this->app->Tpl->Set('ZAHLUNG_VORKASSE' , $this->parseCheckbox($data['zahlung_vorkasse']));
$this->app->Tpl->Set('ZAHLUNG_NACHNAHME' , $this->parseCheckbox($data['zahlung_nachnahme']));
$this->app->Tpl->Set('ZAHLUNG_LASTSCHRIFT' , $this->parseCheckbox($data['zahlung_lastschrift']));
$this->app->Tpl->Set('ZAHLUNG_BAR' , $this->parseCheckbox($data['zahlung_bar']));
$this->app->Tpl->Set('ZAHLUNG_KREDITKARTE' , $this->parseCheckbox($data['zahlung_kreditkarte']));
$this->app->Tpl->Set('ZAHLUNG_PAYPAL' , $this->parseCheckbox($data['zahlung_paypal']));
$this->app->Tpl->Set('ZAHLUNG_AMAZON' , $this->parseCheckbox($data['zahlung_amazon']));
$this->app->Tpl->Set('ZAHLUNG_RATENZAHLUNG' , $this->parseCheckbox($data['zahlung_ratenzahlung']));
$this->app->Tpl->Set('KLEINUNTERNEHMER' , $this->parseCheckbox($data['kleinunternehmer']));
$this->app->Tpl->Set('STEUER_POSITIONEN_EXPORT' , $this->parseCheckbox($data['steuer_positionen_export']));
$this->app->Tpl->Set('SCHNELLANLEGEN' , $this->parseCheckbox($data['schnellanlegen']));
$this->app->Tpl->Set('BESTELLVORSCHLAGSGROESSERNULL' , $this->parseCheckbox($data['bestellvorschlaggroessernull']));
$this->app->Tpl->Set('IMMERNETTORECHNUNGEN' , $this->parseCheckbox($data['immernettorechnungen']));
$this->app->Tpl->Set('ZAHLUNG_RECHNUNG_SOFORT_DE', $data['zahlung_rechnung_sofort_de']);
$this->app->Tpl->Set('ZAHLUNG_RECHNUNG_DE', $data['zahlung_rechnung_de']);
$fields = $this->app->erp->GetFirmaFields();
foreach($fields as $key) {
$this->app->Tpl->Set(strtoupper($key), $data[$key]);
}
$fields_checkbox = $this->app->erp->GetFirmaFieldsCheckbox();
foreach($fields_checkbox as $key) {
$this->app->Tpl->Set(strtoupper($key), $this->parseCheckbox($data[$key]));
}
$this->app->Tpl->Set('ZAHLUNG_VORKASSE_DE', $data['zahlung_vorkasse_de']);
$this->app->Tpl->Set('ZAHLUNG_NACHNAHME_DE', $data['zahlung_nachnahme_de']);
$this->app->Tpl->Set('ZAHLUNG_LASTSCHRIFT_DE', $data['zahlung_lastschrift_de']);
$this->app->Tpl->Set('ZAHLUNG_AMAZON_DE', $data['zahlung_amazon_de']);
$this->app->Tpl->Set('ZAHLUNG_BAR_DE', $data['zahlung_bar_de']);
$this->app->Tpl->Set('ZAHLUNG_PAYPAL_DE', $data['zahlung_paypal_de']);
$this->app->Tpl->Set('ZAHLUNG_KREDITKARTE_DE', $data['zahlung_kreditkarte_de']);
$this->app->Tpl->Set('ZAHLUNG_RATENZAHLUNG_DE', $data['zahlung_ratenzahlung_de']);
$this->app->Tpl->Set('ZAHLUNGSZIELTAGE', $data['zahlungszieltage']);
$this->app->Tpl->Set('ZAHLUNGSZIELTAGESKONTO', $data['zahlungszieltageskonto']);
$this->app->Tpl->Set('ZAHLUNGSZIELSKONTO', $data['zahlungszielskonto']);
$this->app->Tpl->Set('VERSANDART', $this->app->erp->GetSelectAsso($this->app->erp->GetVersandartAuftrag(),$data['versandart']));
$this->app->Tpl->Set('ZAHLUNGSWEISE', $this->app->erp->GetSelectAsso($this->app->erp->GetZahlungsweise(),$data['zahlungsweise']));
$this->app->Tpl->Set('ZAHLUNGSWEISELIEFERANT', $this->app->erp->GetSelectAsso($this->app->erp->GetZahlungsweise(),$data['zahlungsweiselieferant']));
$this->app->Tpl->Set('RECHNUNG_HEADER' , $data['rechnung_header']);
$this->app->Tpl->Set('LIEFERSCHEIN_HEADER' , $data['lieferschein_header']);
$this->app->Tpl->Set('GUTSCHRIFT_HEADER' , $data['gutschrift_header']);
$this->app->Tpl->Set('ANGEBOT_HEADER' , $data['angebot_header']);
$this->app->Tpl->Set('AUFTRAG_HEADER' , $data['auftrag_header']);
$this->app->Tpl->Set('BESTELLUNG_HEADER' , $data['bestellung_header']);
$this->app->Tpl->Set('ARBEITSNACHWEIS_HEADER' , $data['arbeitsnachweis_header']);
$this->app->Tpl->Set('PROVISIONSGUTSCHRIFT_HEADER' , $data['provisionsgutschrift_header']);
$this->app->Tpl->Set('PROFORMARECHNUNG_HEADER' , $data['proformarechnung_header']);
$this->app->Tpl->Set('RECHNUNG_FOOTER' , $data['rechnung_footer']);
$this->app->Tpl->Set('LIEFERSCHEIN_FOOTER' , $data['lieferschein_footer']);
$this->app->Tpl->Set('GUTSCHRIFT_FOOTER' , $data['gutschrift_footer']);
$this->app->Tpl->Set('ANGEBOT_FOOTER' , $data['angebot_footer']);
$this->app->Tpl->Set('AUFTRAG_FOOTER' , $data['auftrag_footer']);
$this->app->Tpl->Set('BESTELLUNG_FOOTER' , $data['bestellung_footer']);
$this->app->Tpl->Set('ARBEITSNACHWEIS_FOOTER' , $data['arbeitsnachweis_footer']);
$this->app->Tpl->Set('PROVISIONSGUTSCHRIFT_FOOTER' , $data['provisionsgutschrift_footer']);
$this->app->Tpl->Set('PROFORMARECHNUNG_FOOTER' , $data['proformarechnung_footer']);
$this->app->Tpl->Set('EU_LIEFERUNG_VERMERK' , $data['eu_lieferung_vermerk']);
$this->app->Tpl->Set('EXPORT_LIEFERUNG_VERMERK' , $data['export_lieferung_vermerk']);
$this->app->Tpl->Set('WARENEINGANG_KAMERA_WAAGE' , $this->parseCheckbox($data['wareneingang_kamera_waage']));
$this->app->Tpl->Set('LAYOUT_ICONBAR' , $this->parseCheckbox($data['layout_iconbar']));
$this->app->Tpl->Set('NEXT_ANGEBOT' , ($data['next_angebot']));
$this->app->Tpl->Set('NEXT_AUFTRAG' , ($data['next_auftrag']));
$this->app->Tpl->Set('NEXT_RECHNUNG' , ($data['next_rechnung']));
$this->app->Tpl->Set('NEXT_LIEFERSCHEIN' , ($data['next_lieferschein']));
$this->app->Tpl->Set('NEXT_RETOURE' , ($data['next_retoure']));
$this->app->Tpl->Set('NEXT_BESTELLUNG' , ($data['next_bestellung']));
$this->app->Tpl->Set('NEXT_ARBEITSNACHWEIS' , ($data['next_arbeitsnachweis']));
$this->app->Tpl->Set('NEXT_GUTSCHRIFT' , ($data['next_gutschrift']));
$this->app->Tpl->Set('NEXT_KUNDENNUMMER' , ($data['next_kundennummer']));
$this->app->Tpl->Set('NEXT_PROJEKTNUMMER' , ($data['next_projektnummer']));
$this->app->Tpl->Set('NEXT_LIEFERANTENNUMMER' , ($data['next_lieferantennummer']));
$this->app->Tpl->Set('NEXT_MITARBEITERNUMMER' , ($data['next_mitarbeiternummer']));
$this->app->Tpl->Set('NEXT_ARTIKELNUMMER' , ($data['next_artikelnummer']));
$this->app->Tpl->Set('NEXT_WAREN' , ($data['next_waren']));
$this->app->Tpl->Set('NEXT_SONSTIGES' , ($data['next_sonstiges']));
$this->app->Tpl->Set('NEXT_PRODUKTION' , ($data['next_produktion']));
$this->app->Tpl->Set('NEXT_REISEKOSTEN' , ($data['next_reisekosten']));
$this->app->Tpl->Set('NEXT_PROFORMARECHNUNG' , ($data['next_proformarechnung']));
$this->app->Tpl->Set('NEXT_ANFRAGE' , ($data['next_anfrage']));
$this->app->Tpl->Set('NEXT_PREISANFRAGE' , ($data['next_preisanfrage']));
$this->app->Tpl->Set('NEXT_VERBINDLICHKEIT', ($data['next_verbindlichkeit']));
$this->app->Tpl->Set('NEXT_LIEFERANTENGUTSCHRIFT', ($data['next_lieferantengutschrift']));
$this->app->Tpl->Set('NEXT_RECEIPTDOCUMENT', ($data['next_receiptdocument']));
//Briefpapier Hintergrund
if($data['hintergrund']==='logo') {
$this->app->Tpl->Set('HINTERGRUNDLOGO', "checked");
$this->app->Tpl->Set('HINTERGRUNDTEXT', "Logo");
}
else if($data['hintergrund']==='briefpapier'){
$this->app->Tpl->Set('HINTERGRUNDBRIEFPAPIER', "checked");
$this->app->Tpl->Set('HINTERGRUNDTEXT', "Briefpapier");
}
else{
$this->app->Tpl->Set('HINTERGRUNDKEIN', "checked");
}
//Versand E-Mail
$this->app->Tpl->Set('BENUTZERNAME' , $data['benutzername']);
$this->app->Tpl->Set('PASSWORT' , $data['passwort']);
$this->app->Tpl->Set('HOST' , $data['host']);
$this->app->Tpl->Set('PORT' , $data['port']);
if($data['mailssl']=="2")
$this->app->Tpl->Set('SSL' ,"selected");
else if($data['mailssl']=="1")
$this->app->Tpl->Set('TLS' ,"selected");
// Signatur
$this->app->Tpl->Set('SIGNATUR' , base64_decode($data['signatur']));
$this->app->Tpl->Set('EMAIL' , $data['email']);
$this->app->Tpl->Set('ABSENDERNAME' , $data['absendername']);
$this->app->Tpl->Set('BCC1' , $data['bcc1']);
$this->app->Tpl->Set('BCC2' , $data['bcc2']);
$this->app->Tpl->Set('BCC3' , $data['bcc3']);
$this->app->Tpl->Set('FIRMENFARBE' , $data['firmenfarbe']);
$this->app->Tpl->Set('NAME' , $data['name']);
$this->app->Tpl->Set('STRASSE' , $data['strasse']);
$this->app->Tpl->Set('PLZ' , $data['plz']);
$this->app->Tpl->Set('ORT' , $data['ort']);
$this->app->Tpl->Set('STEUERNUMMER' , $data['steuernummer']);
}
/**
* @return array
*/
function getPostData()
{
$data = array();
// Brief Absender
$data['taxfromdoctypesettings'] = $this->app->Secure->GetPOST('taxfromdoctypesettings');
$data['absender'] = $this->app->Secure->GetPOST("absender");
$data['sichtbar'] = $this->parseCheckbox($this->app->Secure->GetPOST("sichtbar"));
$data['rechnung_gutschrift_ansprechpartner'] = $this->parseCheckbox($this->app->Secure->GetPOST("rechnung_gutschrift_ansprechpartner"));
$data['artikel_suche_kurztext'] = $this->parseCheckbox($this->app->Secure->GetPOST("artikel_suche_kurztext"));
$data['artikel_suche_variante_von'] = $this->parseCheckbox($this->app->Secure->GetPOST("artikel_suche_variante_von"));
$data['artikel_freitext1_suche'] = $this->parseCheckbox($this->app->Secure->GetPOST("artikel_freitext1_suche"));
$data['adresse_freitext1_suche'] = $this->parseCheckbox($this->app->Secure->GetPOST("adresse_freitext1_suche"));
$data['artikel_artikelnummer_suche'] = $this->parseCheckbox($this->app->Secure->GetPOST("artikel_artikelnummer_suche"));
$data['parameterundfreifelder'] = $this->parseCheckbox($this->app->Secure->GetPOST("parameterundfreifelder"));
for($in = 1; $in <= 40; $in++) {
$data['freifeld'.$in] = $this->app->Secure->GetPOST("freifeld".$in);
}
for($in = 1; $in <= 20; $in++) {
$data['projektfreifeld'.$in] = $this->app->Secure->GetPOST("projektfreifeld".$in);
}
$data['standard_datensaetze_datatables'] = $this->app->Secure->GetPOST("standard_datensaetze_datatables");
$data['steuersatz_normal'] = $this->app->Secure->GetPOST("steuersatz_normal");
$data['steuersatz_ermaessigt'] = $this->app->Secure->GetPOST("steuersatz_ermaessigt");
$data['waehrung'] = $this->app->Secure->GetPOST("waehrung");
$data['lizenz'] = $this->app->Secure->GetPOST("lizenz");
$data['schluessel'] = $this->app->Secure->GetPOST("schluessel");
$data['branch'] = $this->app->Secure->GetPOST("branch");
$data['boxausrichtung'] = $this->app->Secure->GetPOST("boxausrichtung");
$data['footer_breite1'] = $this->app->Secure->GetPOST("footer_breite1");
$data['footer_breite2'] = $this->app->Secure->GetPOST("footer_breite2");
$data['footer_breite3'] = $this->app->Secure->GetPOST("footer_breite3");
$data['footer_breite4'] = $this->app->Secure->GetPOST("footer_breite4");
// Formatierung
$data['barcode'] = $this->parseCheckbox($this->app->Secure->GetPOST("barcode"));
$data['schriftgroesse'] = ($this->app->Secure->GetPOST("schriftgroesse"));
$data['betreffszeile'] = ($this->app->Secure->GetPOST("betreffszeile"));
$data['dokumententext'] = ($this->app->Secure->GetPOST("dokumententext"));
$data['tabellenbeschriftung'] = ($this->app->Secure->GetPOST("tabellenbeschriftung"));
$data['tabelleninhalt'] = ($this->app->Secure->GetPOST("tabelleninhalt"));
$data['zeilenuntertext'] = ($this->app->Secure->GetPOST("zeilenuntertext"));
$data['freitext'] = ($this->app->Secure->GetPOST("freitext"));
$data['brieftext'] = ($this->app->Secure->GetPOST("brieftext"));
$data['infobox'] = ($this->app->Secure->GetPOST("infobox"));
$data['spaltenbreite'] = ($this->app->Secure->GetPOST("spaltenbreite"));
$data['abstand_adresszeileoben'] = $this->app->Secure->GetPOST("abstand_adresszeileoben");
$data['abstand_boxrechtsoben'] = $this->app->Secure->GetPOST("abstand_boxrechtsoben");
$data['abstand_boxrechtsoben_lr'] = $this->app->Secure->GetPOST("abstand_boxrechtsoben_lr");
$data['abstand_betreffzeileoben'] = $this->app->Secure->GetPOST("abstand_betreffzeileoben");
$data['abstand_artikeltabelleoben'] = $this->app->Secure->GetPOST("abstand_artikeltabelleoben");
$data['abstand_name_beschreibung'] = $this->app->Secure->GetPOST("abstand_name_beschreibung");
$data['artikeleinheit_standard'] = $this->app->Secure->GetPOST("artikeleinheit_standard");
$data['auftrag_bezeichnung_bearbeiter'] = $this->app->Secure->GetPOST("auftrag_bezeichnung_bearbeiter");
$data['auftrag_bezeichnung_vertrieb'] = $this->app->Secure->GetPOST("auftrag_bezeichnung_vertrieb");
$data['auftrag_bezeichnung_bestellnummer'] = $this->app->Secure->GetPOST("auftrag_bezeichnung_bestellnummer");
$data['bezeichnungkundennummer'] = $this->app->Secure->GetPOST("bezeichnungkundennummer");
// Footer
$data['footer'] = $this->app->Secure->GetPOST("footer");
$data['footersichtbar'] = $this->parseCheckbox($this->app->Secure->GetPOST("footersichtbar"));
$data['briefpapier2vorhanden'] = $this->parseCheckbox($this->app->Secure->GetPOST("briefpapier2vorhanden"));
$data['seite_von_sichtbar'] = $this->parseCheckbox($this->app->Secure->GetPOST("seite_von_sichtbar"));
$data['seite_von_ausrichtung'] = $this->app->Secure->GetPOST("seite_von_ausrichtung");
$data['angebot_ohnebriefpapier'] = $this->parseCheckbox($this->app->Secure->GetPOST("angebot_ohnebriefpapier"));
$data['auftrag_ohnebriefpapier'] = $this->parseCheckbox($this->app->Secure->GetPOST("auftrag_ohnebriefpapier"));
$data['rechnung_ohnebriefpapier'] = $this->parseCheckbox($this->app->Secure->GetPOST("rechnung_ohnebriefpapier"));
$data['lieferschein_ohnebriefpapier'] = $this->parseCheckbox($this->app->Secure->GetPOST("lieferschein_ohnebriefpapier"));
$data['gutschrift_ohnebriefpapier'] = $this->parseCheckbox($this->app->Secure->GetPOST("gutschrift_ohnebriefpapier"));
$data['bestellung_ohnebriefpapier'] = $this->parseCheckbox($this->app->Secure->GetPOST("bestellung_ohnebriefpapier"));
$data['arbeitsnachweis_ohnebriefpapier'] = $this->parseCheckbox($this->app->Secure->GetPOST("arbeitsnachweis_ohnebriefpapier"));
$data['externereinkauf'] = $this->parseCheckbox($this->app->Secure->GetPOST("externereinkauf"));
$data['projektnummerimdokument'] = $this->parseCheckbox($this->app->Secure->GetPOST("projektnummerimdokument"));
$data['mailanstellesmtp'] = $this->parseCheckbox($this->app->Secure->GetPOST("mailanstellesmtp"));
$data['herstellernummerimdokument'] = $this->parseCheckbox($this->app->Secure->GetPOST("herstellernummerimdokument"));
$data['artikeleinheit'] = $this->parseCheckbox($this->app->Secure->GetPOST("artikeleinheit"));
$data['standardmarge'] = $this->app->Secure->GetPOST("standardmarge");
$data['auftrag_bezeichnung_bearbeiter'] = $this->app->Secure->GetPOST("auftrag_bezeichnung_bearbeiter");
$data['auftrag_bezeichnung_vertrieb'] = $this->app->Secure->GetPOST("auftrag_bezeichnung_vertrieb");
$data['bezeichnungkundennummer'] = $this->app->Secure->GetPOST("bezeichnungkundennummer");
$data['auftrag_bezeichnung_bestellnummer'] = $this->app->Secure->GetPOST("auftrag_bezeichnung_bestellnummer");
$data['schriftart'] = $this->app->Secure->GetPOST("schriftart");
$fields_checkbox = $this->app->erp->GetFirmaFieldsCheckbox();
foreach($fields_checkbox as $key=>$value) {
$data[$value] = $this->parseCheckbox($this->app->Secure->GetPOST($value));
}
$fields = $this->app->erp->GetFirmaFields();
foreach($fields as $key) {
$data[$key] = $this->app->Secure->GetPOST($key);
}
$data['rechnung_header'] = $this->app->Secure->GetPOST("rechnung_header");
$data['rechnung_footer'] = $this->app->Secure->GetPOST("rechnung_footer");
$data['angebot_header'] = $this->app->Secure->GetPOST("angebot_header");
$data['angebot_footer'] = $this->app->Secure->GetPOST("angebot_footer");
$data['auftrag_header'] = $this->app->Secure->GetPOST("auftrag_header");
$data['auftrag_footer'] = $this->app->Secure->GetPOST("auftrag_footer");
$data['lieferschein_header'] = $this->app->Secure->GetPOST("lieferschein_header");
$data['lieferschein_footer'] = $this->app->Secure->GetPOST("lieferschein_footer");
$data['bestellung_header'] = $this->app->Secure->GetPOST("bestellung_header");
$data['arbeitsnachweis_header'] = $this->app->Secure->GetPOST("arbeitsnachweis_header");
$data['bestellung_footer'] = $this->app->Secure->GetPOST("bestellung_footer");
$data['arbeitsnachweis_footer'] = $this->app->Secure->GetPOST("arbeitsnachweis_footer");
$data['gutschrift_header'] = $this->app->Secure->GetPOST("gutschrift_header");
$data['gutschrift_footer'] = $this->app->Secure->GetPOST("gutschrift_footer");
$data['provisionsgutschrift_header'] = $this->app->Secure->GetPOST("provisionsgutschrift_header");
$data['provisionsgutschrift_footer'] = $this->app->Secure->GetPOST("provisionsgutschrift_footer");
$data['proformarechnung_header'] = $this->app->Secure->GetPOST("proformarechnung_header");
$data['proformarechnung_footer'] = $this->app->Secure->GetPOST("proformarechnung_footer");
$data['eu_lieferung_vermerk'] = $this->app->Secure->GetPOST("eu_lieferung_vermerk");
$data['export_lieferung_vermerk'] = $this->app->Secure->GetPOST("export_lieferung_vermerk");
// Briefpapier Hintergrund
$data['logo'] = $this->app->Secure->GetPOST("logo");
$data['briefpapier'] = $this->app->Secure->GetPOST("briefpapier");
$data['hintergrund'] = $this->app->Secure->GetPOST("hintergrund");
// Versand E-Mail
$data['benutzername'] = $this->app->Secure->GetPOST("benutzername");
$data['passwort'] = $this->app->Secure->GetPOST("passwort");
$data['host'] = $this->app->Secure->GetPOST("host");
$data['port'] = $this->app->Secure->GetPOST("port");
$data['mailssl'] = $this->app->Secure->GetPOST("mailssl");
// Signatur
$data['signatur'] = base64_encode($this->app->Secure->POST["signatur"]);
$data['email'] = ($this->app->Secure->POST["email"]);
$data['absendername'] = ($this->app->Secure->POST["absendername"]);
$data['bcc1'] = ($this->app->Secure->POST["bcc1"]);
$data['bcc2'] = ($this->app->Secure->POST["bcc2"]);
$data['bcc3'] = ($this->app->Secure->POST["bcc3"]);
$data['name'] = ($this->app->Secure->POST["name"]);
$data['firmenfarbe'] = ($this->app->Secure->POST["firmenfarbe"]);
$data['strasse'] = ($this->app->Secure->POST["strasse"]);
$data['plz'] = ($this->app->Secure->POST["plz"]);
$data['ort'] = ($this->app->Secure->POST["ort"]);
$data['steuernummer'] = ($this->app->Secure->POST["steuernummer"]);
$data['projekt'] = ($this->app->Secure->POST["projekt"]);
$data['standardversanddrucker'] = ($this->app->Secure->POST["standardversanddrucker"]);
$data['standardetikettendrucker'] = ($this->app->Secure->POST["standardetikettendrucker"]);
$data['etikettendrucker_wareneingang'] = ($this->app->Secure->POST["etikettendrucker_wareneingang"]);
$data['aufgaben_bondrucker'] = ($this->app->Secure->POST["aufgaben_bondrucker"]);
$data['wareneingang_kamera_waage'] =$this->parseCheckbox ($this->app->Secure->POST["wareneingang_kamera_waage"]);
$data['layout_iconbar'] =$this->parseCheckbox ($this->app->Secure->POST["layout_iconbar"]);
$data['next_angebot'] = ($this->app->Secure->POST["next_angebot"]);
$data['next_auftrag'] = ($this->app->Secure->POST["next_auftrag"]);
$data['next_lieferschein'] = ($this->app->Secure->POST["next_lieferschein"]);
$data['next_retoure'] = ($this->app->Secure->POST["next_retoure"]);
$data['next_rechnung'] = ($this->app->Secure->POST["next_rechnung"]);
$data['next_bestellung'] = ($this->app->Secure->POST["next_bestellung"]);
$data['next_arbeitsnachweis'] = ($this->app->Secure->POST["next_arbeitsnachweis"]);
$data['next_gutschrift'] = ($this->app->Secure->POST["next_gutschrift"]);
$data['next_kundennummer'] = ($this->app->Secure->POST["next_kundennummer"]);
$data['next_lieferantennummer'] = ($this->app->Secure->POST["next_lieferantennummer"]);
$data['next_mitarbeiternummer'] = ($this->app->Secure->POST["next_mitarbeiternummer"]);
$data['next_artikelnummer'] = ($this->app->Secure->POST["next_artikelnummer"]);
$data['next_projektnummer'] = ($this->app->Secure->POST["next_projektnummer"]);
$data['next_waren'] = ($this->app->Secure->POST["next_waren"]);
$data['next_sonstiges'] = ($this->app->Secure->POST["next_sonstiges"]);
$data['next_produktion'] = ($this->app->Secure->POST["next_produktion"]);
$data['next_reisekosten'] = ($this->app->Secure->POST["next_reisekosten"]);
$data['next_proformarechnung'] = ($this->app->Secure->POST["next_proformarechnung"]);
$data['next_anfrage'] = ($this->app->Secure->POST["next_anfrage"]);
$data['next_preisanfrage'] = ($this->app->Secure->POST["next_preisanfrage"]);
$data['next_verbindlichkeit'] = ($this->app->Secure->POST["next_verbindlichkeit"]);
$data['next_lieferantengutschrift'] = ($this->app->Secure->POST["next_lieferantengutschrift"]);
$data['produktionsverhalten'] = $this->app->Secure->POST["produktionsverhalten"];
$data['sprachebevorzugen'] = ($this->app->Secure->POST["sprachebevorzugen"]);
// Buchhaltung export datev
$data['buchhaltung_berater'] = ($this->app->Secure->POST["buchhaltung_berater"]);
$data['buchhaltung_mandant'] = ($this->app->Secure->POST["buchhaltung_mandant"]);
$data['buchhaltung_wj_beginn'] = ($this->app->Secure->POST["buchhaltung_wj_beginn"]);
$data['buchhaltung_sachkontenlaenge'] = ($this->app->Secure->POST["buchhaltung_sachkontenlaenge"]);
$data['fibu_buchungen_startdatum'] = $this->app->erp->ReplaceDatum(true,$this->app->Secure->POST["fibu_buchungen_startdatum"],false);
$data['rechnung_skonto_kontorahmen'] = $this->app->erp->ReplaceKontorahmen(true,$this->app->Secure->POST["rechnung_skonto_kontorahmen"]);
$data['rechnung_schnelleingabe_konto'] = $this->app->erp->ReplaceKonto(true,$this->app->Secure->POST["rechnung_schnelleingabe_konto"]);
return $data;
}
function parseCheckBox($checkbox)
{
if($checkbox=='0'){
return '';
}
if($checkbox=='1'){
return 'checked';
}
if($checkbox==='on'){
return 1;
}
if($checkbox==''){
return 0;
}
return null;
}
function FirmendatenBriefpapiervorlage()
{
$this->app->erp->FirmendatenVorlage();
$this->app->Location->execute('index.php?module=firmendaten&action=edit#tabs-3');
}
function FirmendatenLayout()
{
$cmd = $this->app->Secure->GetGET('cmd');
switch($cmd) {
case 'hell':
$this->app->erp->FirmendatenSet("firmenfarbehell","#42B8C4");
$this->app->erp->FirmendatenSet("firmenfarbedunkel","#2F9099");
$this->app->erp->FirmendatenSet("iconset_dunkel",'');
break;
case 'dunkel':
$this->app->erp->FirmendatenSet("firmenfarbehell","#3B3B3B");
$this->app->erp->FirmendatenSet("firmenfarbedunkel","#fff");
$this->app->erp->FirmendatenSet("iconset_dunkel",'1');
break;
case 'dunkelblau':
$this->app->erp->FirmendatenSet("firmenfarbehell","#014085");
$this->app->erp->FirmendatenSet("firmenfarbedunkel","#3A6CAB");
$this->app->erp->FirmendatenSet("iconset_dunkel",'');
break;
case 'grau':
$this->app->erp->FirmendatenSet("firmenfarbedunkel","#6D6D6F");
$this->app->erp->FirmendatenSet("firmenfarbehell","#018FA3");
$this->app->erp->FirmendatenSet("iconset_dunkel",'');
break;
}
$this->app->Location->execute('index.php?module=firmendaten&action=edit#tabs-9');
}
/**
* @param string $fontName
* @param array $files
*
* @throws RuntimeException
*
* @return void
*/
protected function HandleFontUpload($fontName, $files)
{
$uploadDir = dirname(__DIR__) . '/lib/pdf/font/unifont/';
$this->CheckFontName($fontName);
$this->CheckFontUploadFiles($files);
$this->CheckFontUploadDirectory($uploadDir);
$this->MoveUploadedFontFiles($fontName, $uploadDir, $files['tmp_name']);
}
/**
* @param string $fontName
*
* @throws RuntimeException
*
* @return void
*/
protected function CheckFontName($fontName)
{
$reservedFontNames = ['Courier','Helvetica','Times'];
if(empty($fontName)){
throw new RuntimeException('Sie müssen eine Bezeichnung für die Schriftart angeben.');
}
if(preg_match('#[^a-zA-Z0-9_-]#', $fontName) === 1){
throw new RuntimeException(
'Die Schriftbezeichnung enthält ungültige Zeichen. Es sind nur Buchstaben, Zahlen, Unterstriche und Minus erlaubt.'
);
}
if (in_array($fontName, $reservedFontNames, true)) {
throw new RuntimeException(sprintf(
'Die Schriftbezeichnung "%s" ist reserviert. Folgende Bezeichnungen können nicht gewählt werden: %s',
$fontName, implode(', ', $reservedFontNames)
));
}
}
/**
* @param array $file
*
* @throws RuntimeException
*
* @return void
*/
protected function CheckFontUploadFiles($files)
{
$types = ['normal','kursiv','fett','fettkursiv'];
foreach ($types as $type) {
// Dateigröße prüfen
if((int)$files['size'][$type] <= 0){
throw new RuntimeException(sprintf(
'Sie müssen alle Schriftschnitte angeben. Für den Typ "%s" wurde keine Datei angegeben.', $type
));
}
// Upload-Fehler prüfen
if($files['error'][$type] > 0){
throw new RuntimeException(sprintf(
'Eine Schriftdatei konnte nicht verarbeitet werden: [%s] %s',
strtoupper($type), $this->TranslateUploadErrorCodeToMessage($files['error'][$type])
));
}
// Mimetype prüfen
// Gültig für TTF: 'application/x-font-ttf', 'application/x-font-truetype' und 'application/octet-stream'
$mimeType = $files['type'][$type];
$mimeCheck = preg_match('#^(application|font).*(ttf|truetype|octet\-stream)#i', $mimeType, $matches);
if($mimeCheck === 0){
throw new RuntimeException(sprintf(
'Es werden nur TTF-Schriftarten unterstüzt. Die Datei für den Schriftschnitt "%s" ist von Typ "%s".',
$type, $mimeType
));
}
}
}
/**
* @param int $code
*
* @return string
*/
protected function TranslateUploadErrorCodeToMessage($code)
{
switch ((int)$code) {
case UPLOAD_ERR_INI_SIZE:
$message = "Der Upload überschreitet die 'upload_max_filesize' Einstellung der in php.ini.";
break;
case UPLOAD_ERR_FORM_SIZE:
$message = "Der Upload überschreitet die MAX_FILE_SIZE Einstellung des HTML-Formulars.";
break;
case UPLOAD_ERR_PARTIAL:
$message = "Die Datei wurde nicht vollständig übertragen.";
break;
case UPLOAD_ERR_NO_FILE:
$message = "Es wurde keine Datei ausgewählt.";
break;
case UPLOAD_ERR_NO_TMP_DIR:
$message = "Temporärer Ordner fehlt.";
break;
case UPLOAD_ERR_CANT_WRITE:
$message = "Datei konnte nicht abgespeichert werden.";
break;
case UPLOAD_ERR_EXTENSION:
$message = "Der Upload wurde durch eine PHP-Erweiterung gestoppt.";
break;
default:
$message = "Unbekannter Upload-Fehler.";
break;
}
return $message;
}
/**
* @param string $dir
*
* @throws RuntimeException Wenn Verzeichnis nicht existent oder nicht beschreibbar
*
* @return void
*/
protected function CheckFontUploadDirectory($dir)
{
$dir = realpath($dir);
if(!is_dir($dir)){
throw new RuntimeException(sprintf('Das Upload-Verzeichnis für Schriftarten "%s" existiert nicht.', $dir));
}
$tempName = $dir . '/' . uniqid('FONTUPLOADTEST', false);
$handle = @fopen($tempName, 'wb');
@fwrite($handle, 'FONTUPLOADTEST');
if(!is_file($tempName)){
throw new RuntimeException(sprintf(
'Upload-Verzeichnis für Schriftarten "%s" ist nicht beschreibbar. Bitte passen Sie die Schreibrechte an.', $dir
));
}
@fclose($handle);
@unlink($tempName);
}
/**
* @param string $fontName
* @param string $uploadDir
* @param array $fileTemps
*
* @throws RuntimeException
*
* @return void
*/
protected function MoveUploadedFontFiles($fontName, $uploadDir, $fileTemps)
{
$uploadDir = realpath($uploadDir);
$basePath = $uploadDir . '/' . $fontName ;
$targetPath = '';
foreach ($fileTemps as $type => $tmpPath) {
switch ($type) {
case 'normal': $targetPath = $basePath . '.ttf'; break;
case 'kursiv': $targetPath = $basePath . 'I.ttf'; break;
case 'fett': $targetPath = $basePath . 'B.ttf'; break;
case 'fettkursiv': $targetPath = $basePath . 'BI.ttf'; break;
}
if (!is_file($tmpPath)) {
throw new RuntimeException(sprintf(
'Schriftart-Upload fehlgeschlagen. Temp-Datei "%s" für Typ "%s" wurde nicht gefunden.', $tmpPath, $type
));
}
@move_uploaded_file($tmpPath, $targetPath);
if (!is_file($targetPath)) {
throw new RuntimeException(sprintf(
'Schriftart-Upload fehlgeschlagen. Hochgeladene Datei für Typ "%s" konnte nicht ans Ziel "%s" verschoben werden.',
$targetPath, $type
));
}
}
}
/**
* Sprache in firmendaten_werte und user->sprachebevorzugen speichern
* @param $language
*/
private function savePreferredLanguage($language){
/* THIS NEEDS TO BE REIMPLEMENTED
$lang = $this->app->erp->Firmendaten('preferredLanguage');
if($lang != $language){
$this->app->erp->FirmendatenSet('preferredLanguage',$language);
$this->app->DB->Update("UPDATE `user` SET sprachebevorzugen = '".$language."'");
}
*/
}
/**
* Bevorzugte Sprache aus firmendaten_werte
* @return string Sprache
*/
private function getPreferredLanguage(){
$lang = $this->app->erp->Firmendaten('preferredLanguage');
if(!empty($lang)) {
return $lang;
}
// $this->app->erp->AddNeuenFirmendatenWert('preferredLanguage','varchar','64','','deutsch','deutsch',0,0);
return 'deutsch';
}
/**
* Liefert einen String aus HTML-Optionen zurück
* @param string $select Wert aus der Datenbank
* @return string
*/
private function languageSelectOptions($select='deutsch'){
$out = '';
$sprachen = $this->getLanguages();
foreach($sprachen as $sprache) {
$selected = (($select==$sprache) ? 'selected' : '');
$out .= "<option value=\"$sprache\" $selected>$sprache</option>";
}
return $out;
}
/**
* Liefert einen Array aus Strings zurück. Immer mindestens 'deutsch' enthalten
* @return array
*/
private function getLanguages(){
$sprachen[] = 'deutsch';
$folder = dirname(dirname(__DIR__ )).'/languages';
if(is_dir($folder)) {
$handle = opendir($folder);
if($handle) {
while($file = readdir($handle)) {
if($file[0] !== '.') {
if(is_dir($folder.'/'.$file) && (file_exists($folder.'/'.$file.'/variablen.php')|| file_exists($folder.'/'.$file.'/variablen_custom.php')))
{
if($file === 'german') {
$file = 'deutsch';
}
if(!in_array($file, $sprachen)) {
$sprachen[] = $file;
}
}
}
}
closedir($handle);
}
}
return $sprachen;
}
/**
* @return array
*/
protected function getDocuments()
{
$documents = [
'offer' => 'Angebot',
'order' => 'Auftrag',
'invoice' => 'Rechnung',
'credit_note' => 'Gutschrift',
'delivery_note' => 'Lieferschein',
'suppliers_order' => 'Bestellung'
];
if($this->app->erp->ModulVorhanden('retoure')) {
$documents['return_order'] = 'Retoure';
}
return $documents;
}
public function Install()
{
$this->app->erp->CheckTable('document_customization_infoblock');
$this->app->erp->CheckColumn('keyword', 'VARCHAR(32)','document_customization_infoblock',"NOT NULL DEFAULT ''");
$this->app->erp->CheckColumn('doctype','VARCHAR(32)', 'document_customization_infoblock',"NOT NULL DEFAULT ''");
$this->app->erp->CheckColumn('fontstyle','VARCHAR(2)', 'document_customization_infoblock',"NOT NULL DEFAULT ''");
$this->app->erp->CheckColumn('alignment','VARCHAR(2)', 'document_customization_infoblock',"NOT NULL DEFAULT ''");
$this->app->erp->CheckColumn('content','TEXT', 'document_customization_infoblock');
$this->app->erp->CheckColumn('project_id','INT(11)', 'document_customization_infoblock','NOT NULL DEFAULT 0');
$this->app->erp->CheckColumn('active','TINYINT(1)', 'document_customization_infoblock','NOT NULL DEFAULT 0');
$this->app->erp->CheckTable('document_customization_infoblock_translation');
$this->app->erp->CheckColumn('document_customization_infoblock_id','INT(11)','document_customization_infoblock_translation','NOT NULL DEFAULT 0');
$this->app->erp->CheckColumn('language_code','VARCHAR(2)','document_customization_infoblock_translation',"NOT NULL DEFAULT ''");
$this->app->erp->CheckColumn('content','TEXT', 'document_customization_infoblock_translation');
$this->app->erp->CheckColumn('active','TINYINT(1)', 'document_customization_infoblock_translation','NOT NULL DEFAULT 0');
$this->app->erp->CheckColumn('fontstyle','VARCHAR(2)', 'document_customization_infoblock_translation',"NOT NULL DEFAULT ''");
$this->app->erp->CheckColumn('alignment','VARCHAR(2)', 'document_customization_infoblock_translation',"NOT NULL DEFAULT ''");
$this->app->erp->CheckIndex('document_customization_infoblock_translation','document_customization_infoblock_id');
}
/**
* @param string $payment
* @param bool $withInactive
*
* @return bool
*/
public function isPaymentActive($payment, $withInactive = false)
{
if($withInactive) {
return $this->app->DB->Select(
sprintf(
"SELECT `id` FROM `zahlungsweisen` WHERE `type` = '%s' LIMIT 1",
$this->app->DB->real_escape_string($payment)
)
) > 0;
}
return $this->app->DB->Select(
sprintf(
"SELECT `id` FROM `zahlungsweisen` WHERE `type` = '%s' AND `aktiv` = 1 AND `projekt` = 0 LIMIT 1",
$this->app->DB->real_escape_string($payment)
)
) > 0;
}
/**
* @return array
*/
public function getNotInstalledPayments()
{
$payments = array_keys($this->payments);
$installedPayments = $this->app->DB->SelectFirstCols(
"SELECT DISTINCT `type` FROM `zahlungsweisen` WHERE `type` <> ''"
);
return array_diff($payments, $installedPayments);
}
/**
* @param string $payment
* @param bool $onlyNew
*
* @return int
*/
public function checkPaymentModule($payment, $onlyNew = false) {
if(empty($this->payments[$payment])) {
return 0;
}
$description = $this->payments[$payment];
if($this->isPaymentActive($payment, $onlyNew)) {
return 0;
}
$this->app->DB->Insert(
sprintf(
"INSERT INTO `zahlungsweisen` (`type`, `aktiv`, `projekt`, `bezeichnung`, `freitext`)
VALUES ('%s', 1, 0, '%s','%s')",
$this->app->DB->real_escape_string($payment),
$this->app->DB->real_escape_string($description),
$this->app->DB->real_escape_string($this->app->erp->Firmendaten('zahlung_'.$payment.'_de'))
)
);
$id = (int)$this->app->DB->GetInsertID();
if($payment === 'vorkasse') {
$this->app->DB->Update(
sprintf(
"UPDATE `zahlungsweisen` SET `verhalten` = 'vorkasse' WHERE `id` = %d",
$id
)
);
}
elseif($payment === 'lastschrift') {
$this->app->DB->Update(
sprintf(
"UPDATE `zahlungsweisen` SET `verhalten` = 'lastschrift' WHERE `id` = %d",
$id
)
);
}
$translations = $this->app->DB->SelectArr(
sprintf(
"SELECT * FROM `uebersetzung` WHERE `label` = 'zahlung_%s_de'",
$this->app->DB->real_escape_string($payment)
)
);
if(empty($translations)) {
return $id;
}
foreach($translations as $translation) {
$this->app->DB->Insert(
sprintf(
"INSERT INTO `uebersetzung` (`label`, `beschriftung`, `sprache`, `original`)
VALUES ('%s','%s','%s','%s') ",
'zahlungsweise_freitext_'.$id,
$this->app->DB->real_escape_string($translation['beschriftung']),
$this->app->DB->real_escape_string($translation['sprache']),
$this->app->DB->real_escape_string($translation['original'])
)
);
}
return $id;
}
/**
* @param bool $onlyNew
*/
public function checkPaymentModules($onlyNew = false)
{
foreach($this->payments as $payment => $description) {
$this->checkPaymentModule($payment, $onlyNew);
}
}
public function documentSettings()
{
$cmd = $this->app->Secure->GetGET('cmd');
$this->FirmendatenMenu();
$this->Install();
/** @var \Xentral\Modules\Company\Service\DocumentCustomizationService $service */
$service = $this->app->Container->get('DocumentCustomizationService');
$documents = $this->getDocuments();
if($cmd === 'loadtranslation') {
$language = $this->app->Secure->GetPOST('language');
$parent = $this->app->Secure->GetPOST('parent_id');
$ret = $service->getTranslationByCustomizationInfoBlockId($language, $parent);
if(empty($ret)) {
$ret = ['id' => 0, 'active' => 1, 'content' => '', 'fontstyle' => ''];
}
header('Content-Type: application/json');
echo json_encode($ret);
$this->app->ExitXentral();
}
if($cmd === 'savetranslation') {
$alignment = $this->app->Secure->GetPOST('alignment');
$language = $this->app->Secure->GetPOST('language');
$content = $this->app->Secure->GetPOST('content','','',true);
$active = (int)$this->app->Secure->GetPOST('active');
$parent = (int)$this->app->Secure->GetPOST('parent_id');
$fontstyle = $this->app->Secure->GetPOST('fontstyle');
$ret = ['status' => 1];
try{
$service->saveTranslation($parent, $language, $content, $active, $fontstyle, $alignment);
}
catch(Exception $e) {
$ret['status'] = 0;
}
header('Content-Type: application/json');
echo json_encode($ret);
$this->app->ExitXentral();
}
if($cmd === 'savedocument')
{
$doctype = $this->app->Secure->GetPOST('doctype');
$content = $this->app->Secure->GetPOST('content','','',true);
$active = (int)$this->app->Secure->GetPOST('active');
$fontStyle = $this->app->Secure->GetPOST('fontstyle');
$alignment = $this->app->Secure->GetPOST('alignment');
$project = $this->app->Secure->GetPOST('project');
$projecId = $this->app->erp->ReplaceProjekt(1, $project, 1);
$id = $this->app->Secure->GetPOST('id');
$ret = ['status' => 0];
$error = '';
if($doctype === ''){
$error .= 'Bitte Dokument ausfüllen';
}
if($error !== ''){
$ret['statusText'] = $error;
echo json_encode($ret);
$this->app->ExitXentral();
}
try {
if (empty($id)) {
$service->createBlock('corr', $doctype, $content, $fontStyle, $projecId, $active, $alignment);
}
else {
$service->updateInfoBlock($id, $doctype, $content, $fontStyle, $projecId, $active, $alignment);
}
$ret['status'] = 1;
}
catch(Exception $e) {
}
header('Content-Type: application/json');
echo json_encode($ret);
$this->app->ExitXentral();
}
if($cmd === 'loaddocument')
{
$id = $this->app->Secure->GetPOST('id');
$ret = $service->getBlock($id);
$ret['project'] = $this->app->erp->ReplaceProjekt(0, $ret['project_id'], 0);
if(empty($ret)) {
$ret = ['id' => 0, 'content' => '', 'doctype' => '', 'project' => '', 'active' => 0, 'alignment' => ''];
}
header('Content-Type: application/json');
echo json_encode($ret);
$this->app->ExitXentral();
}
if($cmd === 'changestatus') {
$ids = !empty($this->app->Secure->POST['ids'])? $this->app->Secure->POST['ids']:null;
$action = $this->app->Secure->GetPOST('action');
$ret = ['status' => 0];
$activate = $action === 'activate';
$deactivate = $action === 'deactivate';
if(!empty($ids) && ($activate || $deactivate)) {
$ret['status'] = 1;
foreach($ids as $id) {
$this->app->DB->Update(
sprintf(
'UPDATE document_customization_infoblock
SET active = %d WHERE id = %d',
$activate?1:0, (int)$id
)
);
}
}
header('Content-Type: application/json');
echo json_encode($ret);
$this->app->ExitXentral();
}
if($cmd === 'copyinfoblock') {
$id = $this->app->Secure->GetPOST('id');
$ret = ['status' => 0];
try {
$service->copy($id);
$ret['status'] = 1;
}
catch (Exception $e) {
}
header('Content-Type: application/json');
echo json_encode($ret);
$this->app->ExitXentral();
}
if($cmd === 'deleteinfoblock') {
$id = $this->app->Secure->GetPOST('id');
$ret = ['status' => 0];
try {
$service->delete($id);
$ret['status'] = 1;
}
catch(Exception $e) {
}
header('Content-Type: application/json');
echo json_encode($ret);
$this->app->ExitXentral();
}
if($this->app->Secure->GetPOST('save')) {
foreach($documents as $document => $coumentName) {
$content = $this->app->Secure->GetPOST($document.'_content','','',true);
$service->saveBlock(
'corr',
$document,
$content,
$this->app->Secure->GetPOST($document.'_fontstyle'),
$this->app->Secure->GetPOST($document.'_active')
);
}
}
$data = [];
$fontoptions = [
'' => 'normal',
'f' => 'fett',
'i' => 'kursiv',
'fi' => 'fett und kursiv'
];
$alignments = [
'' => 'Standard',
'll' => 'L L',
'lr' => 'L R',
'cc' => 'C C'
];
$previewArr = [];
$previewArr[] = [
'value' => 'ANFRAGENUMMER',
'label' => 'Anfragenummer',
'doc_types' => ['offer']
];
$previewArr[] = [
'value' => 'ANGEBOTSNUMMER',
'label' => 'Angebotsnummer',
'doc_types' => ['order', 'offer']
];
$previewArr[] = [
'value' => 'AUFTRAGSNUMMER',
'label' => 'Auftragsnummer',
'doc_types' => ['invoice', 'order', 'delivery_note', 'credit_note', 'return_order']
];
$previewArr[] = [
'value' => 'BEARBEITER',
'label' => 'Bearbeiter',
'doc_types' => ['invoice', 'order', 'delivery_note', 'credit_note', 'offer', 'return_order']
];
$previewArr[] = [
'value' => 'BEARBEITEREMAIL',
'label' => 'Bearbeiter E-Mail',
'doc_types' => ['invoice', 'order', 'delivery_note', 'credit_note', 'offer', 'return_order']
];
$previewArr[] = [
'value' => 'BEARBEITERTELEFON',
'label' => 'Bearbeiter Telefon',
'doc_types' => ['invoice', 'order', 'delivery_note', 'credit_note', 'offer', 'return_order']
];
$previewArr[] = [
'value' => 'BESTELLNUMMER',
'label' => 'Bestellnummer',
'doc_types' => ['suppliers_order']
];
$previewArr[] = [
'value' => 'DATUM',
'label' => 'Datum',
'doc_types' => ['invoice', 'order', 'delivery_note', 'credit_note', 'offer', 'suppliers_order', 'return_order']
];
$previewArr[] = [
'value' => 'EINKAEUFER',
'label' => 'Einkäufer',
'doc_types' => ['suppliers_order']
];
$previewArr[] = [
'value' => 'EMAIL',
'label' => 'Email aus Beleg',
'doc_types' => ['invoice', 'order', 'delivery_note', 'credit_note', 'offer', 'return_order']
];
$previewArr[] = [
'value' => 'GUTSCHRIFTSNUMMER',
'label' => 'Gutschriftsnummer',
'doc_types' => ['credit_note']
];
$previewArr[] = [
'value' => 'IHREBESTELLNUMMER',
'label' => 'Ihre Bestellnummer',
'doc_types' => ['invoice', 'order', 'delivery_note', 'credit_note', 'offer', 'suppliers_order', 'return_order']
];
$previewArr[] = [
'value' => 'KUNDENNUMMER',
'label' => 'Kundennummer',
'doc_types' => ['invoice', 'order', 'delivery_note', 'credit_note', 'offer', 'return_order']
];
$previewArr[] = [
'value' => 'LIEFERANTENNUMMER',
'label' => 'Lieferantennummer',
'doc_types' => ['suppliers_order']
];
$previewArr[] = [
'value' => 'LIEFERSCHEINDATUM',
'label' => 'Lieferscheindatum',
'doc_types' => ['invoice', 'credit_note', 'return_order']
];
$previewArr[] = [
'value' => 'LIEFERSCHEINNUMMER',
'label' => 'Lieferscheinnummer',
'doc_types' => ['invoice', 'delivery_note', 'credit_note', 'return_order']
];
$previewArr[] = [
'value' => 'RECHNUNGSDATUM',
'label' => 'Rechnungsdatum',
'doc_types' => ['credit_note']
];
$previewArr[] = [
'value' => 'RECHNUNGSNUMMER',
'label' => 'Rechnungsnummer',
'doc_types' => ['invoice', 'credit_note']
];
$previewArr[] = [
'value' => 'RETOURENNUMMER',
'label' => 'Retourennummer',
'doc_types' => ['return_order']
];
$previewArr[] = [
'value' => 'PROJEKT',
'label' => 'Projekt',
'doc_types' => ['invoice', 'order', 'delivery_note', 'credit_note', 'offer', 'suppliers_order', 'return_order']
];
$previewArr[] = [
'value' => 'TELEFON',
'label' => 'Telefon aus Beleg',
'doc_types' => ['invoice', 'order', 'delivery_note', 'credit_note', 'offer', 'return_order']
];
$previewArr[] = [
'value' => 'TRACKINGNUMMER',
'label' => 'Trackingnummer',
'doc_types' => ['delivery_note']
];
$previewArr[] = [
'value' => 'KUNDENNUMMER',
'label' => 'Unsere Kundennummer',
'doc_types' => ['suppliers_order']
];
$previewArr[] = [
'value' => 'VERTRIEB',
'label' => 'Vertrieb',
'doc_types' => ['invoice', 'order', 'delivery_note', 'credit_note', 'offer', 'return_order']
];
$languages = [];
$languageArr = $this->app->DB->SelectArr(
"SELECT * FROM sprachen WHERE aktiv = 1 AND iso <> '' ORDER BY bezeichnung_de"
);
if(!empty($languageArr)) {
foreach($languageArr as $languageRow) {
$languages[$languageRow['iso']] = $languageRow['bezeichnung_de'];
}
}
$element = [
'document' => $document,
'active' => !empty($block['active'])?'1':'',
'fontstyle' => !empty($block['fontstyle'])?$block['fontstyle']:'',
'content' => !empty($block['content'])?$block['content']:'',
'name' => ucfirst($coumentName),
'preview' => $previewArr
];
/*foreach($documents as $document => $coumentName) {
$block = $service->getBlock('corr', $document);
$element = [
'document' => $document,
'active' => !empty($block['active'])?'1':'',
'fontstyle' => !empty($block['fontstyle'])?$block['fontstyle']:'',
'content' => !empty($block['content'])?$block['content']:'',
'name' => ucfirst($coumentName),
'preview' => $previewArr
];
if(in_array($document, ['angebot','auftrag','rechnung','gutschrift','proformarechnung','lieferschein','retoure'])) {
$element['preview']['KUNDENNUMMER'] = 'Kundennummer';
}
if(in_array($document, ['anfrage','bestellung'])) {
$element['preview']['LIEFERANTENNUMMER'] = 'Lieferantennummer';
}
switch($document) {
case 'offer':
$element['preview']['ANGEBOTSNUMMER'] = 'Angebotsnummer';
break;
case 'order':
$element['preview']['AUFTRAGSNUMMER'] = 'Auftragsnummer';
break;
case 'invoice':
$element['preview']['RECHNUNGSNUMMER'] = 'Rechnungsnummer';
break;
case 'credit_note':
$element['preview']['GUTSCHRIFTSNUMMER'] = 'Gutschriftsnummer';
break;
case 'suppliers_order':
$element['preview']['BESTELLNUMMER'] = 'Bestellnummer';
break;
}
$data[] = $element;
}*/
$this->app->YUI->TableSearch('TAB1', 'company_document_setting','show','','',basename(__FILE__), __CLASS__);
$datatable = $this->app->Tpl->Parse('', 'emptytab.tpl', true);
$this->app->Tpl->Set('TAB1', '');
$this->tmpl = $this->app->Container->get('Template');
$this->tmpl->setDefaultNamespace('Modules/Company');
$this->tmpl->assign('fontoptions', $fontoptions);
$this->tmpl->assign('alignments', $alignments);
//$this->tmpl->assign('documents', $data);
$this->tmpl->assign('languages', $languages);
$this->tmpl->assign('datatable', $datatable);
$this->tmpl->assign('doctypearr', $documents);
$this->tmpl->assign('documentarr', $element);
$table = $this->tmpl->fetch('document_settings.tpl');
$this->app->YUI->AutoComplete('document_project', 'projektname', 1);
$this->app->Tpl->Add('TAB1', $table);
//$this->app->Tpl->Set('TAB1', $ret);
$this->app->Tpl->Parse('PAGE','tabview.tpl');
}
/**
* @return int
*/
public function getMaxTrackingMailToSend()
{
$limit = (int)$this->app->erp->Firmendaten('versandmails_max');
$isSet = $this->app->erp->GetKonfiguration('firmendaten_versandmails_max_gesetzt');
if(!$isSet) {
if(!$limit) {
$limit = 100;
$this->app->erp->FirmendatenSet('versandmails_max', $limit);
}
$this->app->erp->SetKonfigurationValue('firmendaten_versandmails_max_gesetzt',1);
}
return $limit;
}
/**
* @return int
*/
public function getMaxAutoOrderSend()
{
$limit = (int)$this->app->erp->Firmendaten('autoversand_maxauftraege');
$isSet = $this->app->erp->GetKonfiguration('firmendaten_autoversand_maxauftraege_gesetzt');
if(!$isSet) {
if(!$limit) {
$limit = 100;
$this->app->erp->FirmendatenSet('autoversand_maxauftraege', $limit);
}
$this->app->erp->SetKonfigurationValue('firmendaten_autoversand_maxauftraege_gesetzt',1);
}
return $limit;
}
}