app=$app; if($intern) { return; } $this->app->ActionHandlerInit($this); $this->app->ActionHandler("list","AngebotList"); $this->app->ActionHandler("create","AngebotCreate"); $this->app->ActionHandler("positionen","AngebotPositionen"); $this->app->ActionHandler("upangebotposition","UpAngebotPosition"); $this->app->ActionHandler("delangebotposition","DelAngebotPosition"); $this->app->ActionHandler("copyangebotposition","CopyAngebotPosition"); $this->app->ActionHandler("downangebotposition","DownAngebotPosition"); $this->app->ActionHandler("positioneneditpopup","AngebotPositionenEditPopup"); $this->app->ActionHandler("edit","AngebotEdit"); $this->app->ActionHandler("copy","AngebotCopy"); $this->app->ActionHandler("zertifikate","AngebotZertifikate"); $this->app->ActionHandler("auftrag","AngebotAuftrag"); $this->app->ActionHandler("delete","AngebotDelete"); $this->app->ActionHandler("undelete","AngebotUndelete"); $this->app->ActionHandler("freigabe","AngebotFreigabe"); $this->app->ActionHandler("abschicken","AngebotAbschicken"); $this->app->ActionHandler("pdf","AngebotPDF"); $this->app->ActionHandler("inlinepdf","AngebotInlinePDF"); $this->app->ActionHandler("protokoll","AngebotProtokoll"); $this->app->ActionHandler("minidetail","AngebotMiniDetail"); $this->app->ActionHandler("editable","AngebotEditable"); $this->app->ActionHandler("livetabelle","AngebotLiveTabelle"); $this->app->ActionHandler("schreibschutz","AngebotSchreibschutz"); $this->app->ActionHandler("deleterabatte","AngebotDeleteRabatte"); $this->app->ActionHandler("dateien","AngebotDateien"); $this->app->ActionHandler("wiedervorlage","AngebotWiedervorlage"); $this->app->ActionHandler("pdffromarchive","AngebotPDFfromArchiv"); $this->app->ActionHandler("archivierepdf","AngebotArchivierePDF"); $this->app->ActionHandler("abgelehnt","AngebotAbgelehnt"); $this->app->ActionHandler("beauftragt","AngebotBeauftragt"); $this->app->ActionHandler("kopievon","AngebotKopievon"); $this->app->ActionHandler("summe","AngebotSumme"); // nur fuer rechte $this->app->ActionHandler("einkaufspreise","AngebotEinkaufspreise"); $this->app->ActionHandler("steuer","AngebotSteuer"); $this->app->ActionHandler("formeln","AngebotFormeln"); $this->app->DefaultActionHandler("list"); $id = $this->app->Secure->GetGET("id"); $nummer = $this->app->Secure->GetPOST("adresse"); if($nummer==''){ if($id > 0){ $adresse = $this->app->DB->Select("SELECT a.name FROM angebot b INNER JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1"); }else{ $adresse = ''; } } else{ $adresse = $nummer; } if($id > 0){ $nummer = $this->app->DB->Select("SELECT b.belegnr FROM angebot b WHERE b.id='$id' LIMIT 1"); }else{ $nummer = ''; } if($nummer=="" || $nummer=="0") $nummer="ohne Nummer"; $this->app->Tpl->Set('UEBERSCHRIFT',"Angebot: ".$adresse." (".$nummer.")"); $this->app->Tpl->Set('FARBE',"[FARBE2]"); $angebotersatz = $this->app->DB->Select("SELECT abweichendebezeichnung FROM angebot WHERE id='$id' LIMIT 1"); if($angebotersatz) $this->app->Tpl->Set('BEZEICHNUNGTITEL',($this->app->erp->Beschriftung("bezeichnungangebotersatz")?$this->app->erp->Beschriftung("bezeichnungangebotersatz"):$this->app->erp->Beschriftung("dokument_angebot"))); else $this->app->Tpl->Set('BEZEICHNUNGTITEL','Angebot'); $this->app->erp->Headlines('Angebot'); $this->app->ActionHandlerListen($app); } public function Install() { $this->app->erp->RegisterHook('supersearch_detail', 'angebot', 'AngebotSupersearchDetail'); } /** * @param \Xentral\Widgets\SuperSearch\Query\DetailQuery $detailQuery * @param \Xentral\Widgets\SuperSearch\Result\ResultDetail $detailResult * * @return void */ public function AngebotSupersearchDetail($detailQuery, $detailResult) { if ($detailQuery->getGroupKey() !== 'offers') { return; } $angebotId = $detailQuery->getItemIdentifier(); $sql = sprintf( "SELECT a.id, a.belegnr, a.datum FROM `angebot` AS `a` WHERE a.id = '%s' LIMIT 1", $this->app->DB->real_escape_string($angebotId) ); $angebot = $this->app->DB->SelectRow($sql); if (empty($angebot)) { return; } $datum = date('d.m.Y', strtotime($angebot['datum'])); $detailResult->setTitle(sprintf('Angebot %s vom %s', $angebot['belegnr'], $datum)); $detailResult->addButton('Angebot Details', sprintf('index.php?module=angebot&action=edit&id=%s', $angebot['id'])); $detailResult->setMiniDetailUrl(sprintf('index.php?module=angebot&action=minidetail&id=%s', $angebot['id'])); } function AngebotFormeln() { } function AngebotUndelete() { $id = (int)$this->app->Secure->GetGET("id"); $status = $this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1"); $belegnr = $this->app->DB->Select("SELECT belegnr FROM angebot WHERE id='$id' LIMIT 1"); $name = $this->app->DB->Select("SELECT name FROM angebot WHERE id='$id' LIMIT 1"); if($status==='storniert') { $this->app->DB->Update("UPDATE angebot SET status='freigegeben' WHERE id='$id' LIMIT 1"); $this->app->erp->AngebotProtokoll($id,"Angebot Storno rückgängig"); $this->app->DB->Update("UPDATE wiedervorlage SET abgeschlossen='0' WHERE module='angebot' AND parameter='$id' AND parameter > 0"); $msg = $this->app->erp->base64_url_encode("
Angebot \"$name\" ($belegnr) wurde wieder freigegeben!
"); } else { $msg = $this->app->erp->base64_url_encode("
Angebot \"$name\" ($belegnr) kann nicht wieder freigegeben werden da es nicht storniert ist.
"); } //header("Location: ".$_SERVER['HTTP_REFERER']."&msg=$msg"); $this->app->Location->execute("index.php?module=angebot&action=list&msg=$msg"); } function AngebotSteuer() { } function AngebotSumme() { } function AngebotEinkaufspreise() { //Für Rechte } function AngebotKopievon() { $id = (int)$this->app->Secure->GetGET('id'); $hauptid = $id; $status = $this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1"); if($status!=='angelegt') { $timeout = 0; while($timeout <= 100) { $checkkopievon = $this->app->DB->Select("SELECT kopievon FROM angebot WHERE id='$hauptid' LIMIT 1"); if($checkkopievon > 0){ $hauptid = $checkkopievon; } else { break; } $timeout++; } $neuesangebot = $this->app->erp->CopyAngebot($id); $altebelegnr = $this->app->DB->Select("SELECT belegnr FROM angebot WHERE id='$hauptid' LIMIT 1"); $anzahl_kopievon = $this->app->DB->Select("SELECT COUNT(id)+1 FROM angebot WHERE kopievon='$hauptid' AND kopievon > 0"); $this->app->DB->Update("UPDATE angebot SET belegnr='{$altebelegnr}-$anzahl_kopievon', status='freigegeben', kopievon='$hauptid',kopienummer='$anzahl_kopievon' WHERE id='$neuesangebot' LIMIT 1"); $this->app->erp->AngebotNeuberechnen($id); $this->app->Location->execute("index.php?module=angebot&action=edit&id=$neuesangebot"); } $msg = $this->app->erp->base64_url_encode('
Das Angebot ist noch im Entwurfsmodus und kann daher noch nicht als neue Version angelegt werden.
'); $this->app->Location->execute("index.php?module=angebot&action=edit&id=$id&msg=$msg"); } function AngebotArchivierePDF() { $id = (int)$this->app->Secure->GetGET('id'); $projektbriefpapier = $this->app->DB->Select("SELECT projekt FROM angebot WHERE id = '$id' LIMIT 1"); if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$projektbriefpapier); } else{ $Brief = new AngebotPDF($this->app,$projektbriefpapier); } $Brief->GetAngebot($id); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(1); $this->app->DB->Update("UPDATE angebot SET schreibschutz='1' WHERE id='$id'"); @unlink($tmpfile); $this->app->Location->execute('index.php?module=angebot&action=edit&id='.$id); } function AngebotDateien() { $id = $this->app->Secure->GetGET("id"); $this->AngebotMenu(); $this->app->Tpl->Add('UEBERSCHRIFT'," (Dateien)"); $this->app->YUI->DateiUpload('PAGE',"Angebot",$id); } public function AngebotDeleteRabatte() { $id=$this->app->Secure->GetGET('id'); $this->app->DB->Update("UPDATE angebot SET rabatt='',rabatt1='',rabatt2='',rabatt3='',rabatt4='',rabatt5='',realrabatt='' WHERE id='$id' LIMIT 1"); $msg = $this->app->erp->base64_url_encode("
Die Rabatte wurden entfernt!
"); $this->app->Location->execute("index.php?module=angebot&action=edit&id=$id&msg=$msg"); } function AngebotEditable() { $this->app->YUI->AARLGEditable(); } function AngebotSchreibschutz() { $id = $this->app->Secure->GetGET("id"); $this->app->DB->Update("UPDATE angebot SET zuarchivieren='1' WHERE id='$id'"); $this->app->DB->Update("UPDATE angebot SET schreibschutz='0' WHERE id='$id'"); $this->app->erp->AngebotProtokoll($id,"Schreibschutz entfernt"); $this->app->Location->execute("index.php?module=angebot&action=edit&id=$id"); } public function AngebotPDFfromArchiv() { $id = $this->app->Secure->GetGET('id'); $archiv = $this->app->DB->Select( sprintf( 'SELECT `table_id` from `pdfarchiv` where `id` = %d LIMIT 1', $id ) ); if(empty($archiv)) { header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="Fehler.pdf"'); $this->app->ExitXentral(); } $projekt = $this->app->DB->Select("SELECT projekt from angebot where id = '".(int)$archiv."'"); if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$projekt); } else{ $Brief = new AngebotPDF($this->app,$projekt); } if($content = $Brief->getArchivByID($id)) { header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="'.$content['belegnr'].'.pdf"'); echo $content['file']; $this->app->ExitXentral(); } header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="Fehler.pdf"'); $this->app->ExitXentral(); } function AngebotMiniDetail($parsetarget='',$menu=true) { $id = $this->app->Secure->GetGET('id'); // Deckungsbeitrag if (!$this->app->erp->RechteVorhanden('angebot','einkaufspreise')) { $this->app->Tpl->Set('DBHIDDEN','hidden'); } else { $sql = " SELECT umsatz_netto_gesamt, artikel, menge, einkaufspreis FROM `angebot_position` WHERE `angebot` = ".$id." "; $positionen = $this->app->DB->SelectArr($sql); $umsatz_gesamt = 0; $kosten_gesamt = 0; $db_gesamt = 0; foreach ($positionen as $position) { if (empty($position['einkaufspreis'])) { $position['einkaufspreis'] = $this->app->erp->GetEinkaufspreis($position['artikel'],$position['menge']); } $kosten = ($position['einkaufspreis']*$position['menge']); $db_gesamt += $position['umsatz_netto_gesamt']-$kosten; $kosten_gesamt += $kosten; $umsatz_gesamt += $position['umsatz_netto_gesamt']; } $this->app->Tpl->Set('NETTOGESAMT',$this->app->erp->number_format_variable($umsatz_gesamt,2)); $this->app->Tpl->Set('KOSTEN',$this->app->erp->number_format_variable($kosten_gesamt,2)); $this->app->Tpl->Set('DECKUNGSBEITRAG',$this->app->erp->number_format_variable($db_gesamt,2)); $this->app->Tpl->Set( 'DBPROZENT', $umsatz_gesamt==0? "-": $this->app->erp->number_format_variable( round( $db_gesamt/$umsatz_gesamt*100,2 ) )."%" ); } $auftragArr = $this->app->DB->SelectArr("SELECT * FROM angebot WHERE id='$id' LIMIT 1"); $kundennummer = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE id='{$auftragArr[0]['adresse']}' LIMIT 1"); $projekt = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='{$auftragArr[0]['projekt']}' LIMIT 1"); $kundenname = $this->app->DB->Select("SELECT name FROM adresse WHERE id='{$auftragArr[0]['adresse']}' LIMIT 1"); $this->app->Tpl->Set('KUNDE',"".$kundennummer." ".$kundenname); if($this->app->erp->RechteVorhanden('projekt','dashboard')){ $this->app->Tpl->Set('PROJEKT', "$projekt"); } else{ $this->app->Tpl->Set('PROJEKT', $projekt); } $this->app->Tpl->Set('ZAHLWEISE',$auftragArr[0]['zahlungsweise']); $this->app->Tpl->Set('STATUS',$auftragArr[0]['status']); $this->app->Tpl->Set('ANFRAGE',$auftragArr[0]['anfrage']); $sql = "SELECT gesamtsumme FROM angebot WHERE id = %s"; $betrag = $this->app->DB->Select(sprintf($sql,$id)); $this->app->Tpl->Set('GESAMTSUMME',number_format($betrag,"2",",",".")); if($auftragArr[0]['ust_befreit']==0) $this->app->Tpl->Set('STEUER',"Inland"); else if($auftragArr[0]['ust_befreit']==1) $this->app->Tpl->Set('STEUER',"EU-Lieferung"); else $this->app->Tpl->Set('STEUER',"Export"); $auftrag = $id <= 0?[]: $this->app->DB->SelectPairs( "SELECT l.id, CONCAT( '', if(l.belegnr='0' OR l.belegnr='','ENTWURF',l.belegnr) ,'   ' ) as auftrag FROM auftrag AS l WHERE l.angebotid='$id'" ); /*$auftragid = $this->app->DB->Select("SELECT l.id FROM angebot l WHERE l.auftragid='$id' AND l.auftrag!='' LIMIT 1"); $auftragbelegnr = $this->app->DB->Select("SELECT l.belegnr FROM auftrag l WHERE l.id='$id' LIMIT 1");*/ if(empty($auftrag)) { $this->app->Tpl->Set('AUFTRAG','-'); } else { $this->app->Tpl->Set('AUFTRAG',implode('
', $auftrag)); } if($menu) { $menu = $this->AngebotIconMenu($id); $this->app->Tpl->Set('MENU',$menu); } // CRM $dokumente = $id <= 0?null: $this->app->DB->SelectArr( "SELECT betreff,text FROM dokumente_send WHERE dokument='angebot' AND parameter='$id'" ); if(!empty($dokumente)) { foreach($dokumente as $send) { $this->app->Tpl->Set('DOKUMENTBETREFF',$send['betreff']); $this->app->Tpl->Set('DOKUMENTTEXT',$send['text']); $this->app->Tpl->Parse('DOKUMENTETEXT','dokument_send_minidetail.tpl'); } } // ARTIKEL $status = $this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1"); $table = new EasyTable($this->app); if($status==='freigegeben') { $table->Query( "SELECT if(CHAR_LENGTH(ap.beschreibung) > 0,CONCAT(ap.bezeichnung,' *'),ap.bezeichnung) as artikel, CONCAT('', ap.nummer,'') as Nummer, TRIM(ap.menge)+0 as Menge, if(a.porto,'-',if( ( SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel ) > ap.menge,( SELECT TRIM(SUM(l.menge))+0 FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel), if((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel)>0,CONCAT('',(SELECT TRIM(SUM(l.menge))+0 FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel),''), 'aus'))) as Lager,".$this->app->erp->FormatPreis("ap.preis*(100-ap.rabatt)/100",2)." as preis FROM angebot_position ap, artikel a WHERE ap.angebot='$id' AND a.id=ap.artikel ORDER by ap.sort" ,0,""); $artikel = $table->DisplayNew("return","Preis","noAction","false",0,0,false); $this->app->Tpl->Add('JAVASCRIPT'," var auto_refresh = setInterval( function () { $('#artikeltabellelive$id').load('index.php?module=angebot&action=livetabelle&id=$id').fadeIn('slow'); }, 3000); // refresh every 10000 milliseconds "); } else { $table->Query( "SELECT if(CHAR_LENGTH(ap.beschreibung) > 0,CONCAT(ap.bezeichnung,' *'),ap.bezeichnung) as artikel, CONCAT('', ap.nummer,'') as Nummer, TRIM(ap.menge)+0 as Menge," .$this->app->erp->FormatPreis("ap.preis*(100-ap.rabatt)/100",2)." as preis FROM angebot_position ap, artikel a WHERE ap.angebot='$id' AND a.id=ap.artikel ORDER by ap.sort" ,0,""); $artikel = $table->DisplayNew("return","Preis","noAction"); } $this->app->Tpl->Set('ARTIKEL','
'.$artikel.'
'); if($auftragArr[0]['belegnr']=="0" || $auftragArr[0]['belegnr']=="") $auftragArr[0]['belegnr'] = "ENTWURF"; $this->app->Tpl->Set('BELEGNR',$auftragArr[0]['belegnr']); $this->app->Tpl->Set('ANGEBOTID',$auftragArr[0]['id']); if($auftragArr[0]['status']=="freigegeben") { $this->app->Tpl->Set('ANGEBOTFARBE',"orange"); $this->app->Tpl->Set('ANGEBOTTEXT',"
Das Angebot wurde noch nicht als Auftrag weitergeführt!
"); } else if($auftragArr[0]['status']=="versendet") { $this->app->Tpl->Set('ANGEBOTFARBE',"red"); $this->app->Tpl->Set('ANGEBOTTEXT',"
Das Angebot versendet aber noch kein Auftrag vom Kunden erhalten!
"); } else if($auftragArr[0]['status']=="beauftragt") { $this->app->Tpl->Set('ANGEBOTFARBE',"green"); $this->app->Tpl->Set('ANGEBOTTEXT',"
Das Angebot wurde beauftragt und abgeschlossen!
"); } else if($auftragArr[0]['status']=="angelegt") { $this->app->Tpl->Set('ANGEBOTFARBE',"grey"); $this->app->Tpl->Set('ANGEBOTTEXT',"
Das Angebot wird bearbeitet und wurde noch nicht freigegeben und abgesendet!
"); } $tmp = new EasyTable($this->app); $tmp->Query("SELECT zeit,bearbeiter,grund FROM angebot_protokoll WHERE angebot='$id' ORDER by zeit DESC",0,""); $tmp->DisplayNew('PROTOKOLL',"Protokoll","noAction"); $this->app->Tpl->Set('RECHNUNGLIEFERADRESSE',$this->AngebotRechnungsLieferadresse($auftragArr[0]['id'])); if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$auftragArr[0]['projekt']); }else{ $Brief = new AngebotPDF($this->app,$auftragArr[0]['projekt']); } $Dokumentenliste = $Brief->getArchivedFiles($id, 'angebot'); if($Dokumentenliste) { $tmp3 = new EasyTable($this->app); $tmp3->headings = array('Datum','Belegnr','Bearbeiter','Menü'); foreach($Dokumentenliste as $k => $v) { if(!$v['erstesoriginal']) { $tmpr['datum'] = date('d.m.Y H:i:s',strtotime($v['zeitstempel'])); $tmpr['belegnr'] = str_replace('.pdf','',$v['file']); $tmpr['belegnr'] = substr($tmpr['belegnr'],strrpos($tmpr['belegnr'],'_')+1); if(isset($v['belegnummer']) && $v['belegnummer'])$tmpr['belegnr'] = $v['belegnummer']; $tmpr['bearbeiter'] = $v['bearbeiter']; $tmpr['menu'] = ''; $tmp3->datasets[] = $tmpr; } } $tmp3->DisplayNew('PDFARCHIV','Menü',"noAction"); } $nettogewicht = $this->app->erp->AngebotNettoGewicht($id); if($nettogewicht!="") { $nettogewicht = number_format($nettogewicht, 2, ',','.'); $gewichtbezeichnung = $this->app->erp->Firmendaten('gewichtbezeichnung'); if($gewichtbezeichnung == '')$gewichtbezeichnung = 'Kg'; $this->app->Tpl->Set("GEWICHT", $nettogewicht . " ".$gewichtbezeichnung); } if($parsetarget=='') { $this->app->Tpl->Output("angebot_minidetail.tpl"); $this->app->ExitXentral(); } $this->app->Tpl->Parse($parsetarget,"angebot_minidetail.tpl"); } function AngebotRechnungsLieferadresse($angebotid) { $data = $this->app->DB->SelectArr("SELECT * FROM angebot WHERE id='$angebotid' LIMIT 1"); foreach($data[0] as $key=>$value) { if($data[0][$key]!="" && $key!="abweichendelieferadresse" && $key!="land" && $key!="plz" && $key!="lieferland" && $key!="lieferplz") $data[0][$key] = $data[0][$key]."
"; } $rechnungsadresse = $data[0]['name']."".$data[0]['ansprechpartner']."".$data[0]['abteilung']."".$data[0]['unterabteilung']. "".$data[0]['strasse']."".$data[0]['adresszusatz']."".$data[0]['land']."-".$data[0]['plz']." ".$data[0]['ort']; // wenn abweichende rechnungsadresse bei kunden aktiv ist dann diese verwenden $abweichende = $this->app->DB->Select("SELECT abweichende_rechnungsadresse FROM adresse WHERE id='".$data[0]['adresse']."' LIMIT 1"); if($abweichende=="1") { $adresse_data = $this->app->DB->SelectArr("SELECT * FROM adresse WHERE id='".$data[0]['adresse']."' LIMIT 1"); foreach($adresse_data[0] as $key=>$value) { if($adresse_data[0][$key]!="" && $key!="abweichendelieferadresse" && $key!="rechnung_land" && $key!="rechnung_plz") { $adresse_data[0][$key] = $adresse_data[0][$key]."
"; } } $rechnungsadresse = $adresse_data[0]['rechnung_name']."".$adresse_data[0]['rechnung_ansprechpartner']."".$adresse_data[0]['rechnung_abteilung']."".$adresse_data[0]['rechnung_unterabteilung']. "".$adresse_data[0]['rechnung_strasse']."".$adresse_data[0]['rechnung_adresszusatz']."".$adresse_data[0]['rechnung_land']."-".$adresse_data[0]['rechnung_plz']." ".$adresse_data[0]['rechnung_ort']; } if($data[0]['abweichendelieferadresse']!=0){ $lieferadresse = $data[0]['liefername']."".$data[0]['lieferansprechpartner']."".$data[0]['lieferabteilung']."".$data[0]['lieferunterabteilung']. "".$data[0]['lieferstrasse']."".$data[0]['lieferadresszusatz']."".$data[0]['lieferland']."-".$data[0]['lieferplz']." ".$data[0]['lieferort']; } else { $lieferadresse = "entspricht Rechnungsadresse"; } return "
Rechnungsadresse:

$rechnungsadresse
Lieferadresse:

$lieferadresse
"; } function AngebotFreigabe($id='') { if($id=='') { $id = $this->app->Secure->GetGET('id'); $freigabe= $this->app->Secure->GetGET('freigabe'); $weiter= $this->app->Secure->GetPOST('weiter'); $this->app->Tpl->Set('TABTEXT','Freigabe'); } else { $intern = true; $freigabe=$intern; } $this->app->erp->CheckVertrieb($id,"angebot"); $this->app->erp->CheckBearbeiter($id,"angebot"); $allowedFrm = true; $showDefault = true; $doctype = 'angebot'; if(empty($intern)){ $this->app->erp->RunHook('beleg_freigabe', 4, $doctype, $id, $allowedFrm, $showDefault); } if($weiter!='') { $this->app->Location->execute('index.php?module=angebot&action=abschicken&id='.$id); } $check = $this->app->DB->Select("SELECT b.belegnr FROM angebot b LEFT JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1"); if($allowedFrm && ($freigabe==$id)) { $projekt = $this->app->DB->Select("SELECT projekt FROM angebot WHERE id='$id' LIMIT 1"); $belegnr = $this->app->DB->Select("SELECT belegnr FROM angebot WHERE id='$id' LIMIT 1"); if($belegnr=="" || $belegnr=="0") { $this->app->erp->BelegFreigabe("angebot",$id); if($intern) { return 1; } $msg = $this->app->erp->base64_url_encode("
Das Angebot wurde freigegeben und kann jetzt versendet werden!
"); $this->app->Location->execute("index.php?module=angebot&action=edit&id=$id&msg=$msg"); } if($intern) { return 0; } $msg = $this->app->erp->base64_url_encode("
Das Angebot wurde bereits freigegeben!
"); $this->app->Location->execute("index.php?module=angebot&action=edit&id=$id&msg=$msg"); } if($showDefault){ $name = $this->app->DB->Select("SELECT a.name FROM angebot b LEFT JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1"); $summe = $this->app->DB->Select("SELECT gesamtsumme FROM angebot WHERE id='$id' LIMIT 1"); $waehrung = $this->app->DB->Select("SELECT waehrung FROM angebot_position WHERE angebot='$id' LIMIT 1"); $summe = $this->app->erp->EUR($summe); $extra = $this->app->erp->CheckboxEntwurfsmodus('angebot', $id); if($this->app->erp->Firmendaten("oneclickrelease")=="1" && $extra=="") { $this->app->Location->execute("index.php?module=angebot&action=freigabe&id=$id&freigabe=$id"); } else { $this->app->Tpl->Set('TAB1', "
Soll das Angebot jetzt freigegeben werden?  $extra
"); } } $this->AngebotMenu(); $this->app->Tpl->Parse('PAGE','tabview.tpl'); } function AngebotCopy() { $id = $this->app->Secure->GetGET("id"); $newid = $this->app->erp->CopyAngebot($id); header("Location: index.php?module=angebot&action=edit&id=$newid"); exit; } function AngebotZertifikate() { $id = $this->app->Secure->GetGET("id"); $adresse = $this->app->DB->Select("SELECT adresse FROM angebot WHERE id = '$id' LIMIT 1"); if($adresse) { $zertifikate = $this->app->DB->SelectArr("SELECT ds.datei FROM datei_stichwoerter ds INNER JOIN datei_stichwoerter ds2 ON ds.datei = ds2.datei AND ds2.objekt = 'Artikel' INNER JOIN angebot_position ap ON ap.artikel = ds2.parameter AND ap.angebot = '$id' WHERE ds.objekt = 'Adressen' AND ds.parameter = '$adresse' GROUP BY ds.datei"); if($zertifikate) { foreach($zertifikate as $zertifikat) { $this->app->erp->AddDateiStichwort($zertifikat['datei'],"Sonstige","Angebot",$id); } } } header("Location: index.php?module=angebot&action=dateien&id=$id"); exit; } function AngebotLiveTabelle() { $id = $this->app->Secure->GetGET("id"); $status = $this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1"); $table = new EasyTable($this->app); if($status=="freigegeben") { $table->Query("SELECT SUBSTRING(ap.bezeichnung,1,20) as artikel, ap.nummer as Nummer, TRIM(ap.menge)+0 as Menge, if(a.porto,'-',if((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel) > ap.menge,(SELECT TRIM(SUM(l.menge))+0 FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel), if((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel)>0,CONCAT('',(SELECT TRIM(SUM(l.menge))+0 FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel),''), 'aus'))) as Lager,".$this->app->erp->FormatPreis("ap.preis*(100-ap.rabatt)/100",2)." as preis FROM angebot_position ap, artikel a WHERE ap.angebot='$id' AND a.id=ap.artikel",0,""); $artikel = $table->DisplayNew("return","Preis","noAction"); } else { $table->Query("SELECT SUBSTRING(ap.bezeichnung,1,20) as artikel, ap.nummer as Nummer, TRIM(ap.menge)+0 as Menge,".$this->app->erp->FormatPreis("ap.preis*(100-ap.rabatt)/100",2)." as preis FROM angebot_position ap, artikel a WHERE ap.angebot='$id' AND a.id=ap.artikel",0,""); $artikel = $table->DisplayNew("return","Preis","noAction"); } echo $artikel; $this->app->ExitXentral(); } function AngebotAuftrag() { $id = $this->app->Secure->GetGET("id"); $status = $this->app->DB->Select("SELECT status FROM angebot WHERE id=$id"); if($status!="angelegt") { $newid = $this->app->erp->WeiterfuehrenAngebotZuAuftrag($id); $this->app->erp->AngebotProtokoll($id,"Angebot als Auftrag weitergeführt"); // offene wiedervorlage als abgeschlossen $this->app->DB->Update("UPDATE wiedervorlage SET abgeschlossen='1' WHERE module='angebot' AND parameter='$id'"); header("Location: index.php?module=auftrag&action=edit&id=$newid"); } else { $msg = $this->app->erp->base64_url_encode("
Das Angebot befindet sich noch im Entwurfsmodus und kann daher nicht als Auftrag weiterführt werden!
"); header("Location: index.php?module=angebot&action=edit&id=$id&msg=$msg"); } exit; } /** * @return JsonResponse */ public function HandleCreateProforma() { $justStorage = $this->app->Secure->GetPOST('just_strorage'); $this->app->User->SetParameter('proforma_just_storage', (int)$justStorage); $id = $this->app->Secure->GetPOST('elementid'); $status = $this->app->DB->Select("SELECT status FROM angebot WHERE id=$id"); if($status!=='angelegt') { /** @var Proformarechnung $obj */ $obj = $this->app->loadModule('proformarechnung'); if(!empty($obj) && method_exists($obj, 'createFromOffer')) { $newid = $obj->createFromOffer($id, $justStorage); $this->app->erp->AngebotProtokoll($id,'Angebot als Proformarechnung weitergeführt'); return new JsonResponse( ['success' => true, 'url' => "index.php?module=proformarechnung&action=edit&id=$newid"] ); } return new JsonResponse( [ 'success' => false, 'error' => 'Das Modul Proformarechnung konnte nicht geladen werden!' ], JsonResponse::HTTP_BAD_REQUEST ); } return new JsonResponse( [ 'success' => false, 'error' => 'Das Angebot befindet sich noch im Entwurfsmodus und kann daher nicht als Proformarechnung weiterführt werden!' ], JsonResponse::HTTP_BAD_REQUEST ); } function AngebotAbschicken() { $this->AngebotMenu(); $this->app->erp->DokumentAbschicken(); } function AngebotAbgelehnt() { $id = (int)$this->app->Secure->GetGET("id"); $belegnr = $this->app->DB->Select("SELECT belegnr FROM angebot WHERE id='$id' LIMIT 1"); $name = $this->app->DB->Select("SELECT name FROM angebot WHERE id='$id' LIMIT 1"); $status = $this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1"); $this->app->DB->Update("UPDATE angebot SET status='abgelehnt' WHERE id='$id' LIMIT 1"); $this->app->erp->AngebotProtokoll($id,"Angebot abgelehnt"); $this->app->DB->Update("UPDATE wiedervorlage SET abgeschlossen='1' WHERE module='angebot' AND parameter='$id' AND parameter > 0"); $msg = $this->app->erp->base64_url_encode("
Das Angebot \"$name\" ($belegnr) wurde abgelehnt!
"); header("Location: index.php?module=angebot&action=list&msg=$msg#tabs-1"); exit; } function AngebotBeauftragt() { $id = (int)$this->app->Secure->GetGET("id"); $belegnr = $this->app->DB->Select("SELECT belegnr FROM angebot WHERE id='$id' LIMIT 1"); $name = $this->app->DB->Select("SELECT name FROM angebot WHERE id='$id' LIMIT 1"); $status = $this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1"); $this->app->DB->Update("UPDATE angebot SET status='beauftragt' WHERE id='$id' LIMIT 1"); $this->app->erp->AngebotProtokoll($id,"Angebot als beauftragt markiert"); $this->app->DB->Update("UPDATE wiedervorlage SET abgeschlossen='1' WHERE module='angebot' AND parameter='$id' AND parameter > 0"); $msg = $this->app->erp->base64_url_encode("
Das Angebot \"$name\" ($belegnr) wurde als beauftragt markiert!
"); header("Location: index.php?module=angebot&action=list&msg=$msg#tabs-1"); exit; } function AngebotDelete() { $id = $this->app->Secure->GetGET("id"); $belegnr = $this->app->DB->Select("SELECT belegnr FROM angebot WHERE id='$id' LIMIT 1"); $name = $this->app->DB->Select("SELECT name FROM angebot WHERE id='$id' LIMIT 1"); $status = $this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1"); if($belegnr=="0" || $belegnr=="") { $this->app->erp->DeleteAngebot($id); $belegnr="ENTWURF"; $msg = $this->app->erp->base64_url_encode("
Das Angebot \"$name\" ($belegnr) wurde gelöscht!
"); //header("Location: ".$_SERVER['HTTP_REFERER']."&msg=$msg"); header("Location: index.php?module=angebot&action=list&msg=$msg"); exit; } if($status=="abgeschlossen") { // KUNDE muss RMA starten $msg = $this->app->erp->base64_url_encode("
Angebot \"$name\" ($belegnr) kann nicht storniert werden da Angebot als Auftrag bereits weitergeführt worden ist!
"); } else if($status=="storniert") { $maxbelegnr = $this->app->DB->Select("SELECT MAX(belegnr) FROM angebot"); if(0)//$maxbelegnr == $belegnr) { $this->app->DB->Delete("DELETE FROM angebot_position WHERE angebot='$id'"); $this->app->DB->Delete("DELETE FROM angebot_protokoll WHERE angebot='$id'"); $this->app->DB->Delete("DELETE FROM angebot WHERE id='$id'"); $this->app->DB->Update("DELETE FROM wiedervorlage WHERE module='angebot' AND parameter='$id' AND parameter > 0"); $msg = $this->app->erp->base64_url_encode("
Angebot \"$name\" ($belegnr) wurde geöscht !
"); } else { $msg = $this->app->erp->base64_url_encode("
Angebot \"$name\" ($belegnr) kann nicht storniert werden da es bereits storniert ist!
"); } header("Location: index.php?module=angebot&action=list&msg=$msg"); exit; } else { $this->app->DB->Update("UPDATE angebot SET status='storniert' WHERE id='$id' LIMIT 1"); $this->app->erp->AngebotProtokoll($id,"Angebot storniert"); $this->app->DB->Update("UPDATE wiedervorlage SET abgeschlossen='0' WHERE module='angebot' AND parameter='$id' AND parameter > 0"); $msg = $this->app->erp->base64_url_encode("
Das Angebot \"$name\" ($belegnr) wurde storniert!
"); } //$msg = $this->app->erp->base64_url_encode("
Angebot \"$name\" ($belegnr) kann nicht storniert werden, da es bereits versendet wurde!
"); header("Location: index.php?module=angebot&action=list&msg=$msg#tabs-1"); exit; } function AngebotProtokoll() { $this->AngebotMenu(); $id = $this->app->Secure->GetGET("id"); $this->app->Tpl->Set('TABTEXT',"Protokoll"); $tmp = new EasyTable($this->app); $tmp->Query("SELECT zeit,bearbeiter,grund FROM angebot_protokoll WHERE angebot='$id' ORDER by zeit DESC",0,""); $tmp->DisplayNew('TAB1',"Protokoll","noAction"); $this->app->Tpl->Parse('PAGE',"tabview.tpl"); } function AngebotInlinePDF() { $id = $this->app->Secure->GetGET("id"); $this->app->erp->AngebotNeuberechnen($id); $projekt = $this->app->DB->Select("SELECT projekt FROM angebot WHERE id='$id' LIMIT 1"); $schreibschutz = $this->app->DB->Select("SELECT schreibschutz FROM angebot WHERE id='$id' LIMIT 1"); $frame = $this->app->Secure->GetGET('frame'); if($frame != '') { $file = urlencode("../../../../index.php?module=angebot&action=inlinepdf&id=$id"); echo ""; $this->app->ExitXentral(); } if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$projekt); }else{ $Brief = new AngebotPDF($this->app,$projekt); } $Brief->GetAngebot($id); $Brief->inlineDocument($schreibschutz); } public function AngebotPDF() { $id = $this->app->Secure->GetGET('id'); $this->app->erp->AngebotNeuberechnen($id); //$belegnr = $this->app->DB->Select("SELECT belegnr FROM angebot WHERE id='$id' LIMIT 1"); $row = $this->app->DB->SelectRow( sprintf( 'SELECT projekt, schreibschutz FROM angebot WHERE id = %d', $id ) ); $projekt = $row['projekt']; $schreibschutz = $row['schreibschutz']; if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$projekt); } else{ $Brief = new AngebotPDF($this->app,$projekt); } $Brief->GetAngebot($id); $Brief->displayDocument($schreibschutz); $this->AngebotList(); } function AngebotMenu() { $id = $this->app->Secure->GetGET("id"); $belegnr = $this->app->DB->Select("SELECT belegnr FROM angebot WHERE id='$id' LIMIT 1"); $name = $this->app->DB->Select("SELECT name FROM angebot WHERE id='$id' LIMIT 1"); if($belegnr=="0" || $belegnr=="") $belegnr ="(Entwurf)"; // $this->app->Tpl->Set(KURZUEBERSCHRIFT,"Angebot $belegnr"); $this->app->Tpl->Set('KURZUEBERSCHRIFT2',"$name Angebot $belegnr"); $this->app->erp->AngebotNeuberechnen($id); // status bestell $status = $this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1"); if ($status=="angelegt") { $this->app->erp->MenuEintrag("index.php?module=angebot&action=freigabe&id=$id","Freigabe"); } $this->app->erp->MenuEintrag("index.php?module=angebot&action=edit&id=$id","Details"); $anzahldateien = $this->app->erp->AnzahlDateien("Angebot",$id); if($anzahldateien > 0) $anzahldateien = " (".$anzahldateien.")"; else $anzahldateien=""; $this->app->erp->MenuEintrag("index.php?module=angebot&action=dateien&id=$id","Dateien".$anzahldateien); if($status=='bestellt') { $this->app->erp->MenuEintrag("index.php?module=angebot&action=wareneingang&id=$id","Wareneingang
Rückstände"); $this->app->erp->MenuEintrag("index.php?module=angebot&action=wareneingang&id=$id","Mahnstufen"); } // $this->app->erp->MenuEintrag("index.php?module=angebot&action=abschicken&id=$id","Abschicken / Protokoll"); // $this->app->erp->MenuEintrag("index.php?module=angebot&action=protokoll&id=$id","Protokoll"); if($this->app->Secure->GetGET("action")!="abschicken") $this->app->erp->MenuEintrag("index.php?module=angebot&action=list","Zurück zur Übersicht"); else $this->app->erp->MenuEintrag("index.php?module=angebot&action=edit&id=$id","Zurück zum Angebot"); if($id && $this->app->erp->RechteVorhanden('wiedervorlage','list')) $this->app->erp->MenuEintrag("index.php?module=angebot&action=wiedervorlage&id=$id","Wiedervorlage"); $this->app->Tpl->Parse('MENU',"angebot_menu.tpl"); $this->app->erp->RunMenuHook('angebot'); } function AngebotWiedervorlage() { $id = (int)$this->app->Secure->GetGET("id"); $this->AngebotMenu(); if($id) { $wiedervorlage = $this->app->DB->SelectArr("SELECT * from wiedervorlage WHERE module = 'angebot' AND parameter = '$id'"); if($wiedervorlage) { $wiedervorlage = reset($wiedervorlage); } if($this->app->Secure->GetPOST('save')) { $datum_angelegt = $this->app->Secure->GetPOST('datum_angelegt'); $zeit_angelegt = $this->app->Secure->GetPOST('zeit_angelegt'); $datum_erinnerung = $this->app->Secure->GetPOST('datum_erinnerung'); $zeit_erinnerung = $this->app->Secure->GetPOST('zeit_erinnerung'); $bezeichnung = $this->app->Secure->GetPOST('bezeichnung'); $beschreibung = $this->app->Secure->GetPOST('beschreibung'); $betrag = $this->app->Secure->GetPOST('betrag'); $chance = $this->app->Secure->GetPOST('chance'); $betrag = str_replace(',','.',str_replace('.','',$betrag)); $adresse_mitarbeiter = $this->app->Secure->GetPOST('adresse_mitarbeiter'); $tmp = explode(' ',$adresse_mitarbeiter); $adresse_mitarbeiter = $tmp[0]; $adresse = $this->app->Secure->GetPOST('adresse'); $tmp = explode(' ',$adresse); $adresse = $tmp[0]; $bearbeiter = $this->app->Secure->GetPOST('bearbeiter'); $tmp = explode(' ',$bearbeiter); $bearbeiter = $tmp[0]; $stages = $this->app->Secure->GetPOST('stages'); $tmp = explode(' ',$stages); $stages = $tmp[0]; $adresse_mitarbeiter = (int)$this->app->DB->Select("SELECT id from adresse where mitarbeiternummer = '".$adresse_mitarbeiter."' AND mitarbeiternummer!='' LIMIT 1"); $adresse = (int)$this->app->DB->Select("SELECT id from adresse where kundennummer = '".$adresse."' AND kundennummer!='' LIMIT 1"); $bearbeiter = (int)$this->app->DB->Select("SELECT id from adresse where mitarbeiternummer = '".$bearbeiter."' AND mitarbeiternummer!='' LIMIT 1"); $abgeschlossen = $this->app->Secure->GetPOST('abgeschlossen'); $projekt = $this->app->DB->Select("SELECT projekt FROM angebot WHERE id = '$id' LIMIT 1"); if($adresse_mitarbeiter<=0)$adresse_mitarbeiter=0; if($adresse<=0)$adresse=0; if($bearbeiter<=0)$bearbeiter=0; if($datum_erinnerung && $datum_erinnerung != '..') { $datum_angelegt = $this->app->String->Convert($datum_angelegt,"%1.%2.%3","%3-%2-%1"); $datum_erinnerung = $this->app->String->Convert($datum_erinnerung,"%1.%2.%3","%3-%2-%1"); if($wiedervorlage) { if($this->app->DB->Update("UPDATE wiedervorlage set datum_angelegt = '$datum_angelegt', zeit_angelegt = '$zeit_angelegt', datum_erinnerung = '$datum_erinnerung', zeit_erinnerung = '$zeit_erinnerung', bezeichnung = '".$this->app->DB->real_escape_string($bezeichnung)."', beschreibung = '".$this->app->DB->real_escape_string($beschreibung)."', abgeschlossen = '".($abgeschlossen?1:0)."', bearbeiter = '$bearbeiter', adresse = '$adresse', betrag = '$betrag', chance = '$chance', stages = '$stages', adresse_mitarbeiter = '$adresse_mitarbeiter', projekt = '$projekt' where module = 'angebot' AND parameter = '$id' ")) { $this->app->Tpl->Set('NEUMESSAGE','
Erfolgreich gespeichert!
'); }else{ $this->app->Tpl->Set('NEUMESSAGE',$this->app->DB->error()); } }else{ if($this->app->DB->Insert("INSERT INTO wiedervorlage ( datum_angelegt, zeit_angelegt,datum_erinnerung, zeit_erinnerung, bezeichnung,beschreibung,abgeschlossen,bearbeiter,adresse_mitarbeiter,module,parameter,adresse,stages,chance,betrag,projekt) values ( '$datum_angelegt','$zeit_angelegt','$datum_erinnerung','$zeit_erinnerung','".$this->app->DB->real_escape_string( $bezeichnung)."', '".$this->app->DB->real_escape_string($beschreibung)."','".($abgeschlossen?1:0)."','$bearbeiter','$adresse_mitarbeiter','angebot','$id','$adresse','".(int)$stages."','$chance','$betrag', '$projekt')" )) { $this->app->Tpl->Set('NEUMESSAGE','
Erfolgreich gespeichert!
'); }else{ $this->app->Tpl->Set('NEUMESSAGE',$this->app->DB->error()); } } }else{ $datum_erinnerung = ''; $this->app->Tpl->Set('NEUMESSAGE','
Bitte geben Sie ein Datum ein!
'); } } else { $datum_angelegt = date("Y-m-d"); $zeit_angelegt = date("H:i"); $datum_erinnerung = date("Y-m-d",strtotime ("+1 day")); $zeit_erinnerung = '0:00'; $bezeichnung = 'Angebot '.$this->app->DB->Select("SELECT a.name from angebot an left join adresse a on an.adresse = a.id where an.id = $id limit 1")." vom ".$this->app->String->Convert($this->app->DB->Select("SELECT an.datum from angebot an where an.id = $id limit 1"),"%1-%2-%3","%3.%2.%1"); $beschreibung = ''; $adresse_mitarbeiter = $this->app->User->GetAdresse();//$_POST['adresse_mitarbeiter']; $bearbeiter = $this->app->User->GetAdresse(); $adresse = $this->app->DB->Select("SELECT adresse from angebot where id = ".(int)$id); $abgeschlossen = $this->app->Secure->GetPOST('abgeschlossen'); } $wiedervorlage = $this->app->DB->SelectArr("SELECT * from wiedervorlage WHERE module = 'angebot' AND parameter = '$id'"); if((!empty($wiedervorlage)?count($wiedervorlage):0)> 0) { $wiedervorlage = reset($wiedervorlage); $datum_angelegt = $wiedervorlage['datum_angelegt']; $zeit_angelegt = $wiedervorlage['zeit_angelegt']; $datum_erinnerung = $wiedervorlage['datum_erinnerung']; $zeit_erinnerung = $wiedervorlage['zeit_erinnerung']; $bezeichnung = $wiedervorlage['bezeichnung']; $beschreibung = $wiedervorlage['beschreibung']; $adresse_mitarbeiter = (int)$wiedervorlage['adresse_mitarbeiter']; $bearbeiter = (int)$wiedervorlage['bearbeiter']; $adresse = (int)$wiedervorlage['adresse']; $stages = (int)$wiedervorlage['stages']; $abgeschlossen = $wiedervorlage['abgeschlossen']; $betrag = $wiedervorlage['betrag']; $chance = $wiedervorlage['chance']; } else{ $sql = "SELECT gesamtsumme FROM angebot WHERE id = %s"; $betrag = $this->app->DB->Select(sprintf($sql,$id)); } for($i=0;$i<=100;$i += 10) { $this->app->Tpl->Add("CHANCE",""); } $mitarbeiternummer = trim($this->app->DB->Select("SELECT mitarbeiternummer from adresse where id = ".(int)$adresse_mitarbeiter." limit 1")); $bearbeiternummer = trim($this->app->DB->Select("SELECT mitarbeiternummer from adresse where id = ".(int)$bearbeiter." limit 1")); $kundennummer = "".$this->app->DB->Select("SELECT kundennummer from adresse where id = ".(int)$adresse." limit 1"); if($mitarbeiternummer!="") $mitarbeitername = "".$this->app->DB->Select("SELECT name from adresse where id = ".(int)$adresse_mitarbeiter." limit 1"); if($bearbeiternummer!="") $bearbeitername = "".$this->app->DB->Select("SELECT name from adresse where id = ".(int)$bearbeiter." limit 1"); $kundenname = "".$this->app->DB->Select("SELECT name from adresse where id = ".(int)$adresse." limit 1"); $this->app->Tpl->Set('DATUM_ANGELEGT',$this->app->String->Convert($datum_angelegt,"%1-%2-%3","%3.%2.%1")); $this->app->Tpl->Set('ZEIT_ANGELEGT',$zeit_angelegt); $this->app->Tpl->Set('DATUM_ERINNERUNG',$this->app->String->Convert($datum_erinnerung,"%1-%2-%3","%3.%2.%1")); $this->app->Tpl->Set('ZEIT_ERINNERUNG',$zeit_erinnerung); $this->app->Tpl->Set('BEZEICHNUNG',$bezeichnung); $this->app->Tpl->Set('BESCHREIBUNG',$beschreibung); $this->app->Tpl->Set('ADRESSE_MITARBEITER',$mitarbeiternummer.' '.$mitarbeitername); $this->app->Tpl->Set('ADRESSE',$kundennummer.' '.$kundenname); $this->app->Tpl->Set('STAGES',$this->app->DB->Select("SELECT CONCAT(id,' ',kurzbezeichnung,' (',name,')') FROM wiedervorlage_stages WHERE id='$stages' LIMIT 1")); $this->app->Tpl->Set('BEARBEITER',$bearbeiternummer.' '.$bearbeitername); $this->app->Tpl->Set('ABGESCHLOSSEN',$abgeschlossen?' checked="checked" ':''); $this->app->Tpl->Set('BETRAG',number_format($betrag,"2",",",".")); /* Datum: [MSGDATUM_ANGELEGT]Zeit: [MSGZEIT_ANGELEGT] Bezeichnung: [MSGBEZEICHNUNG] Bearbeiter: [MSGADRESSE] Beschreibung:[MSGBESCHREIBUNG] Wiedervorlage: Datum: [MSGDATUM_ERINNERUNG]Zeit: [MSGZEIT_ERINNERUNG] Mitarbeiter: [MSGADRESSE_MITARBEITER] abgeschlossen:[MSGABGESCHLOSSEN] */ if($this->app->erp->Firmendaten("briefhtml")=="1")$this->app->YUI->CkEditor("beschreibung","belege"); } $this->app->Tpl->Parse('PAGE',"angebot_wiedervorlage.tpl"); } function AngebotPositionen() { $id = $this->app->Secure->GetGET("id"); $this->app->erp->AngebotNeuberechnen($id); $this->app->YUI->AARLGPositionen(false); } function CopyAngebotPosition() { $this->app->YUI->SortListEvent("copy","angebot_position","angebot"); $this->AngebotPositionen(); } function DelAngebotPosition() { $this->app->YUI->SortListEvent("del","angebot_position","angebot"); $this->AngebotPositionen(); } function UpAngebotPosition() { $this->app->YUI->SortListEvent("up","angebot_position","angebot"); $this->AngebotPositionen(); } function DownAngebotPosition() { $this->app->YUI->SortListEvent("down","angebot_position","angebot"); $this->AngebotPositionen(); } public function AngebotPositionenEditPopup() { $cmd = $this->app->Secure->GetGET('cmd'); if($cmd === 'getopenaccordions') { $accordions = $this->app->Secure->GetPOST('accordions'); $accordions = explode('*|*',$accordions); foreach($accordions as $k => $v) { if(empty($v)) { unset($accordions[$k]); }else{ $accordions[$k] = 'angebot_accordion'.$v; } } $ret = []; if(!empty($accordions)) { $accordions = $this->app->User->GetParameter($accordions); if(!empty($accordions)) { foreach($accordions as $v) { if(!empty($v['value'])) { $ret['accordions'][] = str_replace('angebot_accordion','',$v['name']); } } } } echo json_encode($ret); exit; }elseif($cmd === 'setaccordion') { $name = $this->app->Secure->GetPOST('name'); $active = $this->app->Secure->GetPOST('active'); $this->app->User->SetParameter('angebot_accordion'.$name, $active); echo json_encode(array('success'=>1)); exit; } $id = $this->app->Secure->GetGET('id'); $artikel= $this->app->DB->Select("SELECT artikel FROM angebot_position WHERE id='$id' LIMIT 1"); // nach page inhalt des dialogs ausgeben $filename = 'widgets/widget.angebot_position_custom.php'; if(is_file($filename)) { include_once $filename; $widget = new WidgetAngebot_positionCustom($this->app,'PAGE'); } else { $widget = new WidgetAngebot_position($this->app,'PAGE'); } $sid= $this->app->DB->Select("SELECT angebot FROM angebot_position WHERE id='$id' LIMIT 1"); $widget->form->SpecialActionAfterExecute('close_refresh', "index.php?module=angebot&action=positionen&id=$sid"); $widget->Edit(); $this->app->BuildNavigation=false; } function AngebotIconMenu($id,$prefix='') { $status = $this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1"); $freigabe = ''; if($status==='angelegt'){ $freigabe = ""; } $zertifikatoption = ''; $zertifikatcase = ''; $proformarechnungoption = ''; $proformarechnungcase = ''; if($this->app->erp->RechteVorhanden('zertifikatgenerator','list')) { $adresse = $this->app->DB->Select("SELECT adresse FROM angebot WHERE id = '$id' LIMIT 1"); if($adresse) { $zertifikate = $this->app->DB->Select("SELECT ds.datei FROM datei_stichwoerter ds INNER JOIN datei_stichwoerter ds2 ON ds.datei = ds2.datei AND ds2.objekt = 'Artikel' INNER JOIN angebot_position ap ON ap.artikel = ds2.parameter AND ap.angebot = '$id' WHERE ds.objekt = 'Adressen' AND ds.parameter = '$adresse' GROUP BY ds.datei LIMIT 1"); if($zertifikate) { $zertifikatoption = ''; $zertifikatcase = "case 'zertifikate': if(!confirm('Zertifikate wirklich laden?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=angebot&action=zertifikate&id=%value%'; break; "; } } } if($status=="storniert") $storno = ""; else if($status!="storniert") $storno = ""; if($this->app->erp->RechteVorhanden('belegeimport', 'belegcsvexport')) { $casebelegeimport = "case 'belegeimport': window.location.href='index.php?module=belegeimport&action=belegcsvexport&cmd=angebot&id=%value%'; break;"; $optionbelegeimport = ""; } $hookoption = ''; $hookcase = ''; $this->app->erp->RunHook('Angebot_Aktion_option',3, $id, $status, $hookoption); $this->app->erp->RunHook('Angebot_Aktion_case',3, $id, $status, $hookcase); $menu =" Aktion:   "; //$tracking = $this->AuftragTrackingTabelle($id); $menu = str_replace('%value%',$id,$menu); return $menu.$proformapopup; } function AngebotEdit() { $action = $this->app->Secure->GetGET("action"); $id = $this->app->Secure->GetGET("id"); // $this->app->erp->AngebotNeuberechnen($id); // zum aendern vom Vertrieb $sid = $this->app->Secure->GetGET("sid"); $cmd = $this->app->Secure->GetGET("cmd"); if($cmd === 'dadown') { $erg['status'] = 0; $daid = $this->app->Secure->GetPOST("da_id"); $check = $this->app->DB->SelectArr("SELECT ds.* FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.id = '$daid' and d.geloescht <> 1 LIMIT 1"); if($check) { $sort = $check[0]['sort']+1; if($sort > 1) { $check2 = $this->app->DB->SelectArr("SELECT ds.* FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.objekt like 'angebot' AND ds.sort = '$sort' AND d.geloescht <> 1 AND ds.parameter = '$id' LIMIT 1"); if($check2) { $erg['status'] = 1; $erg['from'] = $check2[0]['id']; $this->app->DB->Update("UPDATE datei_stichwoerter SET sort = sort + 1 WHERE id = '$daid' LIMIT 1"); $this->app->DB->Update("UPDATE datei_stichwoerter SET sort = sort - 1 WHERE id = '".$check2[0]['id']."' LIMIT 1"); } } } echo json_encode($erg); $this->app->ExitXentral(); } if($cmd === 'daup') { $erg['status'] = 0; $daid = $this->app->Secure->GetPOST("da_id"); $check = $this->app->DB->SelectArr("SELECT ds.* FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.id = '$daid' and d.geloescht <> 1 LIMIT 1"); if($check) { $sort = $check[0]['sort']-1; if($sort > 0) { $check2 = $this->app->DB->SelectArr("SELECT ds.* FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.objekt like 'angebot' AND ds.sort = '$sort' AND d.geloescht <> 1 AND ds.parameter = '$id' LIMIT 1"); if($check2) { $erg['status'] = 1; $erg['from'] = $check2[0]['id']; $this->app->DB->Update("UPDATE datei_stichwoerter SET sort = sort - 1 WHERE id = '$daid' LIMIT 1"); $this->app->DB->Update("UPDATE datei_stichwoerter SET sort = sort + 1 WHERE id = '".$check2[0]['id']."' LIMIT 1"); } } } echo json_encode($erg); $this->app->ExitXentral(); } if($this->app->erp->VertriebAendern('angebot',$id,$cmd,$sid)){ return; } if($this->app->erp->InnendienstAendern('angebot',$id,$cmd,$sid)){ return; } if($this->app->erp->DisableModul('angebot',$id)) { //$this->app->erp->MenuEintrag("index.php?module=auftrag&action=list","Zurück zur Übersicht"); $this->AngebotMenu(); return; } $adresse = $this->app->DB->Select("SELECT adresse FROM angebot WHERE id='$id' LIMIT 1"); if($adresse <=0) { $this->app->Tpl->Add('JAVASCRIPT','$(document).ready(function() { if(document.getElementById("adresse"))document.getElementById("adresse").focus(); });'); $this->app->Tpl->Set('MESSAGE',"
Achtung! Dieses Dokument ist mit keiner Kunden-Nr. verlinkt. Bitte geben Sie die Kundennummer an und klicken Sie übernehmen oder Speichern!
"); } $kopievon= $this->app->DB->Select("SELECT kopievon FROM angebot WHERE id='$id' LIMIT 1"); $kopienummer= $this->app->DB->Select("SELECT kopienummer FROM angebot WHERE id='$id' LIMIT 1"); $hauptid = $id; $timeout = 0; while($timeout <= 100) { $checkkopievon = $this->app->DB->Select( "SELECT kopievon FROM angebot WHERE id='$hauptid' LIMIT 1" ); if($checkkopievon > 0){ $hauptid = $checkkopievon; } else { break; } $timeout++; } $kopienummermax= $this->app->DB->Select("SELECT MAX(kopienummer)+1 FROM angebot WHERE id='$hauptid' LIMIT 1"); $kopie_von_angebot_nummer= $this->app->DB->Select("SELECT belegnr FROM angebot WHERE id='$hauptid' LIMIT 1"); if($kopievon>0) { $this->app->Tpl->Add('MESSAGE',"
Dies ist Version $kopienummer des Angebots: $kopie_von_angebot_nummer
"); } $anzahlkopieen = $this->app->DB->SelectPairs( "SELECT id,belegnr FROM angebot WHERE kopievon='$id' ORDER by belegnr" ); if(!empty($anzahlkopieen)) { foreach($anzahlkopieen as $offerId => $offerNumberr) { $this->app->Tpl->Add( 'MESSAGE', "
Zu diesem Angebot gehören das weitere Angebot Nr. " .$offerNumberr."
" ); } } $this->app->erp->InfoAuftragsErfassung('angebot',$id); $this->app->erp->DisableVerband(); $this->app->erp->CheckBearbeiter($id,'angebot'); $this->app->erp->CheckVertrieb($id,'angebot'); $this->app->YUI->AARLGPositionen(); $icons = $this->app->YUI->IconsSQLAll(); $icons = $this->app->DB->Select("SELECT $icons FROM angebot a WHERE a.id='$id' LIMIT 1"); $this->app->Tpl->Set('STATUSICONS',$icons); $belegnr = ''; $nummer = ''; $adresse = 0; $status = ''; $schreibschutz = 0; //$this->AngebotMiniDetail(MINIDETAIL,false); if($id > 0) { $angebotarr = $this->app->DB->SelectRow("SELECT * FROM angebot WHERE id='$id' LIMIT 1"); } if(!empty($angebotarr)){ $belegnr = $angebotarr['belegnr'];//$this->app->DB->Select("SELECT belegnr FROM angebot WHERE id='$id' LIMIT 1"); $nummer = $angebotarr['belegnr'];//$this->app->DB->Select("SELECT belegnr FROM angebot WHERE id='$id' LIMIT 1"); $adresse = $angebotarr['adresse'];//$this->app->DB->Select("SELECT adresse FROM angebot WHERE id='$id' LIMIT 1"); $status = $angebotarr['status'];//$this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1"); $schreibschutz = $angebotarr['schreibschutz'];//$this->app->DB->Select("SELECT schreibschutz FROM angebot WHERE id='$id' LIMIT 1"); } $kundennummer = ''; if($adresse > 0){ $kundennummer = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE id='$adresse' LIMIT 1"); } if($status !== 'angelegt' && $status !== 'angelegta' && $status !== 'a') { $Brief = new Briefpapier($this->app); if($Brief->zuArchivieren($id, 'angebot')) { $this->app->Tpl->Add( 'MESSAGE', "
Das Angebot ist noch nicht archiviert! Bitte versenden oder manuell archivieren.
" ); } elseif(!$this->app->DB->Select("SELECT versendet FROM angebot WHERE id = '$id' LIMIT 1")) { $this->app->Tpl->Add( 'MESSAGE', "
Das Angebot wurde noch nicht versendet!
" ); } } $liefersperre= $this->app->DB->Select("SELECT liefersperre FROM adresse WHERE id='$adresse' LIMIT 1"); if($liefersperre=='1' && ($status==='freigegeben' || $status==='angelegt')) { $this->app->Tpl->Add( 'MESSAGE', "
Achtung: Der Kunde hat eine Liefersperre!
" ); } $this->app->Tpl->Set('ICONMENU',$this->AngebotIconMenu($id)); $this->app->Tpl->Set('ICONMENU2',$this->AngebotIconMenu($id,2)); if($schreibschutz!="1")// && $this->app->erp->RechteVorhanden("angebot","schreibschutz")) { $this->app->erp->AnsprechpartnerButton($adresse); $this->app->erp->LieferadresseButton($adresse); $this->app->erp->AnsprechpartnerAlsLieferadresseButton($adresse); $this->app->erp->AdresseAlsLieferadresseButton($adresse); } if ($schreibschutz != 1 AND $status != 'abgeschlossen') { $this->app->erp->BerechneDeckungsbeitrag($id,'angebot'); } if($nummer!="") { $this->app->Tpl->Set('NUMMER',$nummer); if($this->app->erp->RechteVorhanden('adresse','edit')){ $this->app->Tpl->Set( 'KUNDE', "   Kd-Nr. " . $kundennummer . "" ); } else{ $this->app->Tpl->Set('KUNDE', '   Kd-Nr. ' . $kundennummer); } } if($this->app->Secure->GetPOST("speichern")!="") { $abweichenderechnungsadresse = $this->app->Secure->GetPOST("abweichenderechnungsadresse"); $abweichendelieferdresse = $this->app->Secure->GetPOST("abweichendelieferadresse"); } else { $abweichenderechnungsadresse = $this->app->DB->Select("SELECT abweichenderechnungsadresse FROM angebot WHERE id='$id' LIMIT 1"); $abweichendelieferadresse = $this->app->DB->Select("SELECT abweichendelieferadresse FROM angebot WHERE id='$id' LIMIT 1"); } if($abweichenderechnungsadresse) { $this->app->Tpl->Set('RECHNUNGSADRESSE','visible'); } else $this->app->Tpl->Set('RECHNUNGSADRESSE','none'); if($abweichendelieferadresse) { $this->app->Tpl->Set('LIEFERADRESSE','visible'); } else { $this->app->Tpl->Set('LIEFERADRESSE','hidden'); } if($belegnr=='' || $belegnr=='0') { $this->app->Tpl->Set( 'LOESCHEN', "" ); } $status= $this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1"); if($status==''){ $this->app->DB->Update("UPDATE angebot SET status='angelegt' WHERE id='$id' LIMIT 1"); } if($this->app->DB->Select("SELECT id FROM wiedervorlage WHERE module='angebot' AND parameter='$id' AND adresse=0 LIMIT 1")) $this->app->DB->Update("UPDATE wiedervorlage SET adresse='$adresse' WHERE module='angebot' AND parameter='$id' AND adresse=0 LIMIT 1"); if($schreibschutz=='1' && $this->app->erp->RechteVorhanden('angebot','schreibschutz')){ $optional = ''; $auftrag = $id <= 0?[]:$this->app->DB->SelectPairs( "SELECT id,belegnr FROM auftrag WHERE angebotid='$id'" ); foreach($auftrag as $orderId => $orderNumber) { $optional .= " "; } if($optional!='') { $optional = "Zum Auftrag: ".$optional; } else { $hinweis = "
Zu diesem Angebot gibt es noch keinen Auftrag.
"; } $this->app->Tpl->Set( 'MESSAGE', "
Dieses Angebot ist schreibgeschützt und darf daher nicht mehr bearbeitet werden!  $optional
$hinweis" ); } if($schreibschutz=='1') { $this->app->erp->CommonReadonly(); $this->app->erp->RemoveReadonly('planedorderdate'); $speichern = $this->app->Secure->GetPOST('speichern'); if($speichern!='') { $planedorderdate = $this->app->Secure->GetPOST('planedorderdate'); $planedorderdate = $this->app->String->Convert($planedorderdate,'%1.%2.%3','%3-%2-%1'); $this->app->DB->Update("UPDATE angebot SET planedorderdate='$planedorderdate' WHERE id='$id' LIMIT 1"); } } if($schreibschutz != '1'){ if($this->app->erp->Firmendaten('schnellanlegen') == '1'){ $this->app->Tpl->Set('BUTTON_UEBERNEHMEN', ' '); }else{ $this->app->Tpl->Set('BUTTON_UEBERNEHMEN', ' '); } } // immer wenn sich der lieferant genändert hat standartwerte setzen if($schreibschutz != '1' && $this->app->Secure->GetPOST('adresse')!='') { $tmp = $this->app->Secure->GetPOST('adresse'); $tmp = trim($tmp); $rest = explode(" ",$tmp); $kundennummer = $rest[0]; $filter_projekt = $this->app->DB->Select("SELECT projekt FROM angebot WHERE id = '$id' LIMIT 1"); //if($filter_projekt)$filter_projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE id= '$filter_projekt' and eigenernummernkreis = 1 LIMIT 1"); $adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer='$kundennummer' AND geloescht=0 ".$this->app->erp->ProjektRechte("projekt", true, 'vertrieb')." ORDER by ".($filter_projekt?" projekt = '$filter_projekt' DESC, ":"")." projekt LIMIT 1"); $uebernehmen =$this->app->Secure->GetPOST("uebernehmen"); if($uebernehmen=="1") // nur neuladen bei tastendruck auf uebernehmen // FRAGEN!!!! { $this->app->erp->LoadAngebotStandardwerte($id,$adresse); header("Location: index.php?module=angebot&action=edit&id=$id"); exit; } } $table = new EasyTable($this->app); $table->Query("SELECT bezeichnung as artikel, nummer as Nummer, menge, vpe as VPE, FORMAT(preis,4) as preis FROM angebot_position WHERE angebot='$id'",0,""); $table->DisplayNew('POSITIONEN',"Preis","noAction"); // $bearbeiter = $this->app->DB->Select("SELECT bearbeiter FROM angebot WHERE id='$id' LIMIT 1"); // $this->app->Tpl->Set(BEARBEITER,"app->erp->GetAdressName($bearbeiter)."\" readonly>"); $status= $this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1"); $this->app->Tpl->Set('STATUS',""); $angebot = $this->app->DB->Select("SELECT belegnr FROM angebot WHERE id='$id' LIMIT 1"); if($angebot=="0" || $angebot=="") $angebot="keine Nummer"; $this->app->Tpl->Set('ANGEBOT',""); $zahlungsweise = $this->app->DB->Select("SELECT zahlungsweise FROM angebot WHERE id='$id' LIMIT 1"); if($this->app->Secure->GetPOST("zahlungsweise")!="") $zahlungsweise = $this->app->Secure->GetPOST("zahlungsweise"); $zahlungsweise = strtolower($zahlungsweise); $zahlungsweisenmodule = $this->app->DB->SelectArr("SELECT id, modul, verhalten FROM zahlungsweisen WHERE type = '".$this->app->DB->real_escape_string($zahlungsweise)."' AND (projekt = '$projekt' OR projekt = 0) ORDER BY projekt = '$projekt' DESC LIMIT 1"); $this->app->Tpl->Set('RECHNUNG',"none"); $this->app->Tpl->Set('KREDITKARTE',"none"); $this->app->Tpl->Set('VORKASSE',"none"); $this->app->Tpl->Set('PAYPAL',"none"); $this->app->Tpl->Set('EINZUGSERMAECHTIGUNG',"none"); if($zahlungsweise=="rechnung" || isset($zahlungsweisenmodule[0]['verhalten']) && $zahlungsweisenmodule[0]['verhalten']=='rechnung') $this->app->Tpl->Set('RECHNUNG',""); if($zahlungsweise=="paypal") $this->app->Tpl->Set('PAYPAL',""); if($zahlungsweise=="kreditkarte") $this->app->Tpl->Set('KREDITKARTE',""); if($zahlungsweise=="einzugsermaechtigung" || $zahlungsweise=="lastschrift") $this->app->Tpl->Set('EINZUGSERMAECHTIGUNG',""); if($zahlungsweise=="vorkasse" || $zahlungsweise=="kreditkarte" || $zahlungsweise=="paypal" || $zahlungsweise=="bar") $this->app->Tpl->Set('VORKASSE',""); $abweichendelieferadresse= $this->app->DB->Select("SELECT abweichendelieferadresse FROM angebot WHERE id='$id' LIMIT 1"); if($this->app->Secure->GetPOST("abweichendelieferadresse")!="") $versandart = $this->app->Secure->GetPOST("abweichendelieferadresse"); $this->app->Tpl->Set('ABWEICHENDELIEFERADRESSESTYLE',"hidden"); if($abweichendelieferadresse=="1") $this->app->Tpl->Set('ABWEICHENDELIEFERADRESSESTYLE',""); $this->app->Tpl->Set('AKTIV_TAB1',"selected"); parent::AngebotEdit(); if($id > 0 && $this->app->DB->Select( sprintf( 'SELECT id FROM angebot WHERE schreibschutz =1 AND zuarchivieren = 1 AND id = %d', $id ) ) ) { $this->app->erp->PDFArchivieren('angebot', $id, true); } /* if($this->app->Secure->GetPOST("speichern")!="" && $storno=="") { if($this->app->Secure->GetGET("msg")=="") { $msg = $this->app->Tpl->Get(MESSAGE)." "; $msg = $this->app->erp->base64_url_encode($msg); } else { $msg = $this->app->Secure->GetGET("msg"); //$msg = $this->app->erp->base64_url_encode($msg); } header("Location: index.php?module=angebot&action=edit&id=$id&msg=$msg"); exit; } */ $this->app->erp->MessageHandlerStandardForm(); /* $summe = $this->app->DB->Select("SELECT SUM(menge*preis) FROM angebot_position WHERE angebot='$id'"); $waehrung = $this->app->DB->Select("SELECT waehrung FROM angebot_position WHERE angebot='$id' LIMIT 1"); $ust_befreit_check = $this->app->DB->Select("SELECT ust_befreit FROM angebot WHERE id='$id' LIMIT 1"); $summebrutto = $summe *1.19; if($ust_befreit_check==0) $tmp = "Kunde zahlt mit UST"; else if($ust_befreit_check==1) $tmp = "Kunde ist UST befreit"; else $tmp = "Kunde zahlt keine UST"; if($summe > 0) $this->app->Tpl->Add(POSITIONEN, "
Zu zahlen: $summe (netto) $summebrutto (brutto) $waehrung ($tmp)  "); */ if($this->app->Secure->GetPOST("weiter")!="") { header("Location: index.php?module=angebot&action=positionen&id=$id"); exit; } $this->AngebotMenu(); } function AngebotCreate() { //$this->app->Tpl->Add(TABS,"
  • Angebot

  • "); $this->app->erp->Headlines('Angebot anlegen'); $this->app->erp->MenuEintrag("index.php?module=angebot&action=list","Zurück zur Übersicht"); $anlegen = $this->app->Secure->GetGET("anlegen"); if($this->app->erp->Firmendaten("schnellanlegen")=="1" && $anlegen!="1") { header("Location: index.php?module=angebot&action=create&anlegen=1"); exit; } if($anlegen != "") { $id = $this->app->erp->CreateAngebot(); header("Location: index.php?module=angebot&action=edit&id=$id"); exit; } $this->app->Tpl->Set('MESSAGE',"
    Möchten Sie eine Angebot jetzt anlegen?  

    "); $this->app->Tpl->Set('TAB1',"

    Angebote in Bearbeitung

    Offene Angebote, die durch andere Mitarbeiter in Bearbeitung sind.

    [ANGEBOTE]"); $this->app->Tpl->Set('AKTIV_TAB1',"selected"); $this->app->YUI->TableSearch('ANGEBOTE',"angeboteinbearbeitung"); $this->app->Tpl->Set('TABTEXT',"Angebot anlegen"); $this->app->Tpl->Parse('PAGE',"tabview.tpl"); //parent::AngebotCreate(); } function AngebotList() { // $this->app->Tpl->Set('UEBERSCHRIFT',"Angebote"); // $this->app->Tpl->Set(KURZUEBERSCHRIFT,"Angebote"); if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('angebot', 'edit')) { $drucker = $this->app->Secure->GetPOST('seldrucker'); $aktion = $this->app->Secure->GetPOST('sel_aktion'); $auswahl = $this->app->Secure->GetPOST('auswahl'); $selectedIds = []; if(!empty($auswahl)) { foreach($auswahl as $selectedId) { $selectedId = (int)$selectedId; if($selectedId > 0) { $selectedIds[] = $selectedId; } } } if($drucker > 0) { $this->app->erp->BriefpapierHintergrundDisable($drucker); } if(is_array($auswahl)) { switch($aktion) { case 'freigeben': foreach($selectedIds as $v) { if($this->app->DB->Select("SELECT id FROM angebot WHERE id = '$v' AND belegnr = '' AND status <> 'freigeben' AND status <> 'abgeschlossen' AND status <> 'storniert' LIMIT 1")){ $this->AngebotFreigabe($v); } } break; case 'storniert': foreach($selectedIds as $v) { $projekt = $this->app->DB->Select("SELECT projekt FROM angebot WHERE id='$v' LIMIT 1"); $status = $this->app->DB->Select("SELECT status FROM angebot WHERE id='$v' LIMIT 1"); if($status=='angelegt' || $status=='') { $this->app->erp->DeleteAngebot($v); } else { if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$projekt); }else{ $Brief = new AngebotPDF($this->app,$projekt); } $Brief->GetAngebot($v); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); $this->app->erp->AngebotProtokoll($v,'Angebot storniert'); $this->app->DB->Update("UPDATE angebot SET status='storniert',schreibschutz=1, versendet = 1 WHERE id = '$v' AND status!='angelegt' LIMIT 1"); $this->app->DB->Update("UPDATE wiedervorlage SET abgeschlossen='0' WHERE module='angebot' AND parameter='$v' AND parameter > 0"); unlink($tmpfile); } } break; case 'versendet': foreach($selectedIds as $v) { $projekt = $this->app->DB->Select("SELECT projekt FROM angebot WHERE id='$v' LIMIT 1"); if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$projekt); }else{ $Brief = new AngebotPDF($this->app,$projekt); } $Brief->GetAngebot($v); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); $this->app->erp->AngebotProtokoll($v,'Angebot versendet'); $this->app->DB->Update("UPDATE angebot SET schreibschutz=1, versendet = 1 WHERE id = '$v' LIMIT 1"); $this->app->DB->Update("UPDATE angebot SET status='versendet' WHERE id = '$v' AND status='freigegeben' LIMIT 1"); unlink($tmpfile); } break; case 'beauftragt': foreach($selectedIds as $v) { $projekt = $this->app->DB->Select("SELECT projekt FROM angebot WHERE id='$v' LIMIT 1"); if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$projekt); }else{ $Brief = new AngebotPDF($this->app,$projekt); } $Brief->GetAngebot($v); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); $this->app->erp->AngebotProtokoll($v,"Angebot als beauftragt markiert"); $this->app->DB->Update("UPDATE angebot SET status='beauftragt' WHERE id = '$v' LIMIT 1"); $this->app->DB->Update("UPDATE wiedervorlage SET abgeschlossen='1' WHERE module='angebot' AND parameter='$v' AND parameter > 0"); unlink($tmpfile); } break; case 'abgelehnt': foreach($selectedIds as $v) { $projekt = $this->app->DB->Select("SELECT projekt FROM angebot WHERE id='$v' LIMIT 1"); if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$projekt); }else{ $Brief = new AngebotPDF($this->app,$projekt); } $Brief->GetAngebot($v); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); $this->app->erp->AngebotProtokoll($v,'Angebot abgelehnt'); $this->app->DB->Update("UPDATE angebot SET status='abgelehnt' WHERE id = '$v' LIMIT 1"); $this->app->DB->Update("UPDATE wiedervorlage SET abgeschlossen='1' WHERE module='angebot' AND parameter='$v' AND parameter > 0"); unlink($tmpfile); } break; case 'drucken': if($drucker) { foreach($selectedIds as $v) { $angebotsdaten = $this->app->DB->SelectRow("SELECT projekt, adresse FROM angebot WHERE id='$v' LIMIT 1"); $projekt = $angebotsdaten['projekt']; $adressId = $angebotsdaten['adresse']; $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$projekt); }else{ $Brief = new AngebotPDF($this->app,$projekt); } $Brief->GetAngebot($v); $_tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); unlink($_tmpfile); $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$projekt); }else{ $Brief = new AngebotPDF($this->app,$projekt); } $Brief->GetAngebot($v); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); $this->app->printer->Drucken($drucker,$tmpfile); $doctype = 'angebot'; $this->app->erp->RunHook('dokumentsend_ende', 5, $doctype, $v, $projekt, $adressId, $aktion); $this->app->erp->AngebotProtokoll($v,"Angebot versendet"); unlink($tmpfile); } } break; case 'pdf': $tmpfile = []; foreach($selectedIds as $v) { $projekt = $this->app->DB->Select("SELECT projekt FROM angebot WHERE id='$v' LIMIT 1"); $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$projekt); }else{ $Brief = new AngebotPDF($this->app,$projekt); } $Brief->GetAngebot($v); $_tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); unlink($_tmpfile); $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; if(class_exists('AngebotPDFCustom')) { $Brief = new AngebotPDFCustom($this->app,$projekt); }else{ $Brief = new AngebotPDF($this->app,$projekt); } $Brief->GetAngebot($v); $tmpfile[] = $Brief->displayTMP(); //$Brief->ArchiviereDocument(); } if((!empty($tmpfile)?count($tmpfile):0) > 0) { try { /** @var PdfMerger $pdfMerger */ $pdfMerger = $this->app->Container->get('PdfMerger'); $mergeOutputPath = realpath($this->app->erp->GetTMP()) . '/' . uniqid('sammelpdf_', true) . '.pdf'; $pdfMerger->merge($tmpfile, $mergeOutputPath); foreach($tmpfile as $key=>$value) { unlink($value); } header('Content-type:application/pdf'); header('Content-Disposition: attachment;filename='.md5(microtime(true)).'.pdf'); readfile($mergeOutputPath); $this->app->ExitXentral(); } catch (PdfComponentExceptionInterface $exception) { echo 'Fehler beim Generieren der Sammelpdf: ' . htmlspecialchars($exception->getMessage()); $this->app->ExitXentral(); } } break; } } } $backurl = $this->app->Secure->GetGET("backurl"); $msg = $this->app->Secure->GetGET("msg"); $backurl = $this->app->erp->base64_url_decode($backurl); //$this->app->Tpl->Add(TABS,"
  • Allgemein

  • "); $this->app->erp->MenuEintrag("index.php?module=angebot&action=list","Übersicht"); $this->app->erp->MenuEintrag("index.php?module=angebot&action=create","Neues Angebot anlegen"); if(strlen($backurl)>5) $this->app->erp->MenuEintrag("$backurl","Zurück zur Übersicht"); else $this->app->erp->MenuEintrag("index.php","Zurück zur Übersicht"); $zahlungsweisen = $this->app->DB->SelectArr(' SELECT zahlungsweise FROM angebot GROUP BY zahlungsweise '); $zahlungsweiseStr = ''; if ($zahlungsweisen) { foreach ($zahlungsweisen as $zahlungsweise) { $zahlungsweiseStr .= ''; } } $status = $this->app->DB->SelectArr(' SELECT status FROM angebot GROUP BY status '); $statusStr = ''; if ($status) { foreach ($status as $statusE) { $statusStr .= ''; } } $versandarten = $this->app->DB->SelectArr(' SELECT versandart FROM angebot GROUP BY versandart '); $versandartenStr = ''; if ($versandarten) { foreach ($versandarten as $versandart) { if (empty($versandart['versandart'])) { continue; } $versandartenStr .= ''; } } $laender = $this->app->erp->GetSelectLaenderliste(); $laenderStr = ''; foreach ($laender as $landKey => $land) { $laenderStr .= ''; } $this->app->YUI->DatePicker("datumVon"); $this->app->YUI->DatePicker("datumBis"); $this->app->YUI->AutoComplete("projekt", "projektname", 1); $this->app->YUI->AutoComplete("kundennummer", "kunde", 1); $this->app->YUI->AutoComplete("angebotsnummer", "angebot", 1); $this->app->YUI->AutoComplete("artikel", "artikelnummer", 1); $this->app->Tpl->Set('AKTIV_TAB1',"selected"); $this->app->Tpl->Set('INHALT',""); $this->app->Tpl->Set('SELDRUCKER', $this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker'))); //$this->AngebotFilter(); //$this->app->YUI->TableSearch('TAB2',"angeboteoffene"); $this->app->Tpl->Add('ZAHLUNGSWEISEN',$zahlungsweiseStr); $this->app->Tpl->Add('STATUS',$statusStr); $this->app->Tpl->Add('VERSANDARTEN',$versandartenStr); $this->app->Tpl->Add('LAENDER',$laenderStr); $this->app->Tpl->Parse('TAB1',"angebot_table_filter.tpl"); $this->app->YUI->TableSearch('TAB1',"angebote"); $this->app->YUI->TableSearch('TAB3',"angeboteinbearbeitung"); $this->app->Tpl->Parse('PAGE',"angebotuebersicht.tpl"); return; /* // suche $sql = $this->app->erp->AngebotSuche(); // offene Angeboten $this->app->Tpl->Set('SUBSUBHEADING',"Offene Angebote"); $table = new EasyTable($this->app); $table->Query($sql,$_SESSION[angebottreffer]); //$table->Query("SELECT DATE_FORMAT(a.datum,'%d.%m.%Y') as vom, if(a.belegnr,a.belegnr,'ohne Nummer') as Angebot, a.name, p.abkuerzung as projekt, a.id // FROM angebot a, projekt p WHERE (a.status='freigegeben' OR a.status='versendet') AND p.id=a.projekt order by a.datum DESC, a.id DESC",10); $table->DisplayOwn(INHALT, " "); $this->app->Tpl->Parse('TAB1',"rahmen70.tpl"); $this->app->Tpl->Set('INHALT',""); // wartende Angeboten $table = new EasyTable($this->app); $table->Query("SELECT DATE_FORMAT(a.datum,'%d.%m.%y') as vom, if(a.belegnr,a.belegnr,'ohne Nummer') as Angebot, ad.kundennummer as kunde, a.name, p.abkuerzung as projekt, a.id FROM angebot a, projekt p, adresse ad WHERE (a.status='freigegeben' OR a.status='versendet') AND p.id=a.projekt AND a.adresse=ad.id order by a.datum DESC, a.id DESC"); $table->DisplayNew('INHALT', " "); $this->app->Tpl->Parse(TAB2,"rahmen70.tpl"); $this->app->Tpl->Set('INHALT',""); // In Bearbeitung $this->app->Tpl->Set('SUBSUBHEADING',"In Bearbeitung"); $table = new EasyTable($this->app); $table->Query("SELECT DATE_FORMAT(datum,'%d.%m.%y') as vom, if(belegnr,belegnr,'ohne Nummer') as auftrag, name, vertrieb, status, id FROM angebot WHERE status='angelegt' order by datum DESC, id DESC"); $table->DisplayNew('INHALT', " "); $this->app->Tpl->Parse(TAB3,"rahmen70.tpl"); */ /* $this->app->Tpl->Set(TAB2,"lieferant, angebot, waehrung, sprache, liefertermin, steuersatz, einkäufer, freigabe

    Angebot (NR),Bestellart (NB), Bestelldatum
    Projekt
    Kostenstelle pro Position
    Terminangebot (am xx.xx.xxxx raus damit)
    vorschlagsdaten für positionen
    proposition reinklicken zum ändern und reihenfolge tabelle
    Angebot muss werden wie angebot (angebot beschreibung = allgemein)
    Positionen (wie stueckliste)
    Wareneingang / Rückstand
    Etiketten
    Freigabe
    Dokument direkt faxen "); */ } }