diff --git a/www/pages/belegevorlagen.php b/www/pages/belegevorlagen.php new file mode 100644 index 00000000..cc37a5e4 --- /dev/null +++ b/www/pages/belegevorlagen.php @@ -0,0 +1,238 @@ + +Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; + $sql = "SELECT SQL_CALC_FOUND_ROWS b.id, b.bezeichnung,CONCAT(UCASE(LEFT(b.belegtyp, 1)), SUBSTRING(b.belegtyp, 2)), pr.abkuerzung, b.id FROM belegevorlagen b LEFT JOIN projekt pr ON b.projekt = pr.id"; + $where = $app->erp->ProjektRechte('b.projekt'); + break; + case "belegevorlagen_list2": + $belegtyp = $app->Secure->GetGET('smodule'); + $heading = array('Bezeichnung','Projekt','Menü'); + $width = array('50%','49%','1%'); + $findcols = array('b.bezeichnung','pr.abkuerzung','b.id'); + $searchsql = array('b.bezeichnung','pr.abkuerzung'); + $menu = "
Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\"> Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">
"; + $sql = "SELECT SQL_CALC_FOUND_ROWS b.id, b.bezeichnung, pr.abkuerzung, b.id FROM belegevorlagen b LEFT JOIN projekt pr ON b.projekt = pr.id"; + $where = "belegtyp = '$belegtyp' ".$app->erp->ProjektRechte('b.projekt'); + break; + } + + $erg = false; + foreach($erlaubtevars as $k => $v) + { + if(isset($$v))$erg[$v] = $$v; + } + return $erg; + } + function __construct(&$app, $intern = false) + { + $this->app=&$app; + $this->artikel = $this->app->erp->GetKonfiguration('gesamtrabatt_artikel'); + if($intern)return; + $this->app->ActionHandlerInit($this); + $this->app->ActionHandler("list","BelegevorlagenList"); + $this->app->ActionHandler("einstellungen","BelegevorlagenEinstellungen"); + $this->app->DefaultActionHandler("list"); + $this->app->ActionHandlerListen($app); + } + + function BelegevorlagenMenu(){ + $this->app->erp->MenuEintrag("index.php?module=belegevorlagen&action=list","Übersicht"); + $this->app->erp->MenuEintrag("index.php?module=belegevorlagen&action=einstellungen","Einstellungen"); + + } + + function BelegevorlagenList() + { + if($this->app->Secure->GetGET('cmd') == 'delvorlage') + { + $id = (int)$this->app->Secure->GetPOST('lid'); + $this->app->DB->Delete("DELETE FROM belegevorlagen WHERE id = '$id' LIMIT 1"); + echo json_encode(array('status'=>1)); + exit; + } + $this->BelegevorlagenMenu(); + $this->app->YUI->TableSearch('TAB1', "belegevorlagen_list", "show","","",basename(__FILE__), __CLASS__); + $this->app->Tpl->Parse('PAGE','belegevorlagen_list.tpl'); + } + + function BelegevorlagenEinstellungen() + { + $this->BelegevorlagenMenu(); + + $this->app->Tpl->Set('PREISEAKTUALISIEREN',$this->app->erp->GetKonfiguration('belegevorlagen_preiseaktualisieren')=='on'?'checked':''); + $this->app->YUI->AutoSaveKonfiguration('preiseaktualisieren','belegevorlagen_preiseaktualisieren'); + + $this->app->Tpl->Parse('PAGE','belegevorlagen_einstellungen.tpl'); + } + + function Install() + { + $this->app->erp->CheckTable('belegevorlagen'); + $this->app->erp->CheckColumn("id","int(11)","belegevorlagen","DEFAULT '0' NOT NULL AUTO_INCREMENT"); + $this->app->erp->CheckColumn("belegtyp", "varchar(255)", "belegevorlagen", "DEFAULT '' NOT NULL"); + $this->app->erp->CheckColumn("bezeichnung", "varchar(255)", "belegevorlagen", "DEFAULT '' NOT NULL"); + $this->app->erp->CheckColumn("projekt", "int(11)", "belegevorlagen", "DEFAULT '0' NOT NULL"); + $this->app->erp->CheckColumn("json", "MEDIUMTEXT", "belegevorlagen", "DEFAULT '' NOT NULL"); + $this->app->erp->CheckColumn("bearbeiter", "varchar(255)", "belegevorlagen", "DEFAULT '' NOT NULL"); + $this->app->erp->CheckColumn("zeitstempel", "timestamp", "belegevorlagen","DEFAULT CURRENT_TIMESTAMP NOT NULL"); + + $this->app->erp->RegisterHook('BelegPositionenButtons', 'belegevorlagen', 'BelegevorlagenBelegPositionenButtons'); + $this->app->erp->RegisterHook('AARLGPositionen_cmds_end', 'belegevorlagen', 'BelegevorlagenAARLGPositionen_cmds_end'); + $this->app->erp->RegisterHook('ajax_filter_hook1', 'belegevorlagen', 'Belegevorlagenajax_filter_hook1'); + } + + function Belegevorlagenajax_filter_hook1($filtername,&$newarr, $term, $term2, $term3) + { + if($filtername == 'belegvorlagen') + { + $arr = $this->app->DB->SelectArr("SELECT CONCAT(b.id,' ',b.bezeichnung) as bezeichnung FROM belegevorlagen b + WHERE (b.bezeichnung LIKE '%$term%') ".$this->app->erp->ProjektRechte('b.projekt')); + if($arr) + { + for($i=0;$iapp->Tpl->Set('ID', $id); + $this->app->Tpl->Set('MODULE', $module); + $this->app->YUI->AutoComplete('bestehendevorlage','belegvorlagen'); + $this->app->YUI->TableSearch('BELEGEVORLAGENTABELLE', "belegevorlagen_list2", "show","","",basename(__FILE__), __CLASS__); + $this->app->Tpl->Add($target, " ".$this->app->Tpl->Parse($target,'belegevorlagen_widget.tpl')); + } + } + + function BelegevorlagenAARLGPositionen_cmds_end($id){ + $module = $this->app->Secure->GetGET('module'); + if(!$module)return; + + $projekt = $this->app->DB->Select("SELECT projekt FROM $module WHERE id='$id' LIMIT 1"); + if($projekt <=0) $projekt=0; + + if($this->app->Secure->GetGET('cmd') == 'deletebelegvorlage') + { + $status = 1; + $lid = (int)$this->app->Secure->GetPOST('lid'); + $this->app->DB->Delete("DELETE FROM belegevorlagen WHERE id = '$lid' AND belegtyp = '$module' LIMIT 1"); + echo json_encode(array('status'=>$status)); + exit; + } + + if($this->app->Secure->GetGET('cmd') == 'loadbelegvorlage') + { + $status = 0; + $lid = (int)$this->app->Secure->GetPOST('lid'); + $json = (String)$this->app->DB->Select("SELECT json FROM belegevorlagen WHERE id = '$lid' AND belegtyp = '$module' LIMIT 1"); + if($json !== '') + { + $json = json_decode($json, true); + $maxsort = (int)$this->app->DB->Select("SELECT max(sort) FROM $module"."_position WHERE $module = '$id' LIMIT 1"); + if(isset($json['positionen'])) + { + foreach($json['positionen'] as $v) + { + $v[$module] = $id; + if($this->app->erp->GetKonfiguration('belegevorlagen_preiseaktualisieren')=='on'){ + if($v['artikel'] != '0'){ + $v['preis'] = $this->app->erp->GetVerkaufspreis($v['artikel'],$v['menge']); + } + } + $v['sort'] += $maxsort; + $this->app->DB->Insert("INSERT INTO $module"."_position (id) VALUES ('')"); + $idnew = $this->app->DB->GetInsertID(); + $oldtonew[$v['id']] = $idnew; + if($v['explodiert_parent'] && isset($oldtonew) && isset($oldtonew[$v['explodiert_parent']]))$v['explodiert_parent'] = $oldtonew[$v['explodiert_parent']]; + unset($v['id']); + $this->app->DB->UpdateArr($module.'_position',$idnew,"id",$v, true); + if(is_null($v['steuersatz']))$this->app->DB->Update("UPDATE ".$module."_position SET steuersatz = NULL WHERE id = '$idnew' LIMIT 1"); + } + } + if(isset($json['zwischenpositionen'])) + { + $maxpos = $this->app->DB->SelectArr("SELECT id,sort FROM beleg_zwischenpositionen WHERE doctype = '$module' AND doctypeid = '$id' AND pos='$maxsort' ORDER BY sort DESC LIMIT 1"); + if($maxpos) + { + $sortoffset = 1 + $maxpos[0]['sort']; + }else{ + $sortoffset = 0; + } + foreach($json['zwischenpositionen'] as $v) + { + if($v['pos'] == 0)$v['sort'] += $sortoffset; + $v['doctypeid'] = $id; + $v['pos'] += $maxsort; + unset($v['id']); + $this->app->DB->Insert("INSERT INTO beleg_zwischenpositionen (id) VALUES ('')"); + $idnew = $this->app->DB->GetInsertID(); + $this->app->DB->UpdateArr('beleg_zwischenpositionen',$idnew,"id",$v, true); + } + } + $status = 1; + $this->app->erp->ANABREGSNeuberechnen($id,$module); + } + echo json_encode(array('status'=>$status)); + exit; + } + if($this->app->Secure->GetGET('cmd') == 'savebelegevorlage') + { + $json = null; + $status = 0; + $bestehendevorlage = (int)reset(explode(' ',$this->app->Secure->GetPOST('bestehendevorlage'))); + $bezeichnung = (String)$this->app->Secure->GetPOST('bezeichnung'); + $vorlagetyp = $this->app->Secure->GetPOST('vorlagetyp'); + $bearbeiter = $this->app->DB->real_escape_string($this->app->User->GetName()); + $lid = null; + if($vorlagetyp == 'neu') + { + if($bezeichnung !== '') + { + $this->app->DB->Insert("INSERT INTO belegevorlagen (bezeichnung, belegtyp, bearbeiter, zeitstempel,projekt) VALUES ('$bezeichnung','$module','$bearbeiter',now(),'$projekt')"); + $lid = $this->app->DB->GetInsertID(); + } + }else{ + $lid = $this->app->DB->Select("SELECT id FROM belegevorlagen WHERE id = '$bestehendevorlage' LIMIT 1"); + if($lid && $bezeichnung !== '')$this->app->DB->Update("UPDATE belegevorlagen set bezeichnung = '$bezeichnung' WHERE id = '$bestehendevorlage' LIMIT 1"); + } + if($lid) + { + $json['positionen'] = $this->app->DB->SelectArr("SELECT * FROM $module"."_position WHERE $module = '$id' ORDER BY sort"); + $json['zwischenpositionen'] = $this->app->DB->SelectArr("SELECT * FROM beleg_zwischenpositionen WHERE doctype = '$module' AND doctypeid = '$id' ORDER BY pos, sort"); + $json = $this->app->DB->real_escape_string(json_encode($json)); + $this->app->DB->Update("UPDATE belegevorlagen set json = '$json', zeitstempel = now(), bearbeiter = '$bearbeiter' WHERE id = '$lid' LIMIT 1"); + $status = 1; + } + echo json_encode(array('status'=>$status)); + exit; + } + } +} +?> diff --git a/www/pages/content/belegevorlagen_einstellungen.tpl b/www/pages/content/belegevorlagen_einstellungen.tpl index e69de29b..6eff5a4f 100644 --- a/www/pages/content/belegevorlagen_einstellungen.tpl +++ b/www/pages/content/belegevorlagen_einstellungen.tpl @@ -0,0 +1,20 @@ +
+ + + + +
+[MESSAGE] +
+ Einstellungen + +
+ +[TAB1] +[TAB1NEXT] +
+ + +
diff --git a/www/pages/content/belegevorlagen_list.tpl b/www/pages/content/belegevorlagen_list.tpl index e69de29b..3a7e8290 100644 --- a/www/pages/content/belegevorlagen_list.tpl +++ b/www/pages/content/belegevorlagen_list.tpl @@ -0,0 +1,38 @@ +
+ + + + +
+[MESSAGE] +[TAB1] +[TAB1NEXT] +
+ + +
+ +