OpenXE/www/pages/angebot.php
2022-05-24 14:49:51 +02:00

2355 lines
104 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
use Xentral\Components\Http\JsonResponse;
use Xentral\Components\Pdf\Exception\PdfComponentExceptionInterface;
use Xentral\Components\Pdf\PdfMerger;
include '_gen/angebot.php';
class Angebot extends GenAngebot
{
/** @var Application $app */
/**
* Angebot constructor.
*
* @param Application $app
* @param bool $intern
*/
public function __construct($app, $intern = false)
{
$this->app=$app;
if($intern) {
return;
}
$this->app->ActionHandlerInit($this);
$this->app->ActionHandler("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:&nbsp;".$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 <small>vom %s</small>', $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("<div class=\"info\">Angebot \"$name\" ($belegnr) wurde wieder freigegeben!</div> ");
} else {
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Angebot \"$name\" ($belegnr) kann nicht wieder freigegeben werden da es nicht storniert ist.</div> ");
}
//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('<div class="error">Das Angebot ist noch im Entwurfsmodus und kann daher noch nicht als neue Version angelegt werden. </div>');
$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("<div class=\"warning\">Die Rabatte wurden entfernt!</div> ");
$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');
if(!$this->app->DB->Select("SELECT deckungsbeitragcalc FROM angebot WHERE id='$id' LIMIT 1")) {
$this->app->erp->BerechneDeckungsbeitrag($id,'angebot');
}
$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',"<a href=\"index.php?module=adresse&action=edit&id=".$auftragArr[0]['adresse']."\" target=\"_blank\">".$kundennummer."</a> ".$kundenname);
//$this->app->Tpl->Set('KUNDE',$kundennummer." ".$kundenname);
$this->app->Tpl->Set('DECKUNGSBEITRAG',0);
$this->app->Tpl->Set('DBPROZENT',0);
if($this->app->erp->RechteVorhanden('projekt','dashboard')){
$this->app->Tpl->Set('PROJEKT', "<a href=\"index.php?module=projekt&action=dashboard&id=" . $auftragArr[0]['projekt'] . "\" target=\"_blank\">$projekt</a>");
}
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']);
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(
'<a href=\"index.php?module=auftrag&action=edit&id=',l.id,'\" target=\"_blank\">',
if(l.belegnr='0' OR l.belegnr='','ENTWURF',l.belegnr)
,'</a>&nbsp;<a href=\"index.php?module=auftrag&action=pdf&id=',
l.id,
'\"><img src=\"./themes/new/images/pdf.svg\" title=\"Lieferschein PDF\" border=\"0\"></a>&nbsp;
<a href=\"index.php?module=auftrag&action=edit&id=',
l.id,
'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Lieferschein bearbeiten\" border=\"0\" target=\"_blank\"></a>'
) 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('<br />', $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('<a href=\"index.php?module=artikel&action=edit&id=',ap.artikel,'\" target=\"_blank\">', ap.nummer,'</a>') 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('<font color=red><b>',(SELECT TRIM(SUM(l.menge))+0 FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel),'</b></font>'),
'<font color=red><b>aus</b></font>'))) 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('<a href=\"index.php?module=artikel&action=edit&id=',ap.artikel,'\" target=\"_blank\">', ap.nummer,'</a>') 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','<div id="artikeltabellelive'.$id.'">'.$artikel.'</div>');
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',"<div class=\"warning\">Das Angebot wurde noch nicht als Auftrag weitergef&uuml;hrt!</div>");
}
else if($auftragArr[0]['status']=="versendet")
{
$this->app->Tpl->Set('ANGEBOTFARBE',"red");
$this->app->Tpl->Set('ANGEBOTTEXT',"<div class=\"warning\">Das Angebot versendet aber noch kein Auftrag vom Kunden erhalten!</div>");
}
else if($auftragArr[0]['status']=="beauftragt")
{
$this->app->Tpl->Set('ANGEBOTFARBE',"green");
$this->app->Tpl->Set('ANGEBOTTEXT',"<div class=\"info\">Das Angebot wurde beauftragt und abgeschlossen!</div>");
}
else if($auftragArr[0]['status']=="angelegt")
{
$this->app->Tpl->Set('ANGEBOTFARBE',"grey");
$this->app->Tpl->Set('ANGEBOTTEXT',"<div class=\"warning\">Das Angebot wird bearbeitet und wurde noch nicht freigegeben und abgesendet!</div>");
}
$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&uuml;');
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'] = '<a href="index.php?module=angebot&action=pdffromarchive&id='.$v['id'].'"><img src="themes/'.$this->app->Conf->WFconf['defaulttheme'].'/images/pdf.svg" /></a>';
$tmp3->datasets[] = $tmpr;
}
}
$tmp3->DisplayNew('PDFARCHIV','Men&uuml;',"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]."<br>";
}
$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]."<br>";
}
}
$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 "<table width=\"100%\">
<tr valign=\"top\"><td width=\"50%\"><b>Rechnungsadresse:</b><br><br>$rechnungsadresse<br></td></tr>
<tr><td><b>Lieferadresse:</b><br><br>$lieferadresse</td></tr></table>";
}
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("<div class=\"info\">Das Angebot wurde freigegeben und kann jetzt versendet werden!</div> ");
$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("<div class=\"error\">Das Angebot wurde bereits freigegeben!</div> ");
$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', "<div class=\"info\">Soll das Angebot
jetzt freigegeben werden? <input type=\"button\" value=\"Jetzt freigeben\" class=\"btnImportantLarge\" onclick=\"window.location.href='index.php?module=angebot&action=freigabe&id=$id&freigabe=$id'\">&nbsp;$extra
</div>");
}
}
$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('<font color=red><b>',(SELECT TRIM(SUM(l.menge))+0 FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel),'</b></font>'),
'<font color=red><b>aus</b></font>'))) 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("<div class=\"error\">Das Angebot befindet sich noch im Entwurfsmodus und kann daher nicht als Auftrag weiterführt werden!</div>");
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("<div class=\"info\">Das Angebot \"$name\" ($belegnr) wurde abgelehnt!</div>");
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("<div class=\"info\">Das Angebot \"$name\" ($belegnr) wurde als beauftragt markiert!</div>");
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("<div class=\"warning\">Das Angebot \"$name\" ($belegnr) wurde gel&ouml;scht!</div> ");
//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("<div class=\"error\">Angebot \"$name\" ($belegnr) kann nicht storniert werden da Angebot als Auftrag bereits weitergef&uuml;hrt worden ist!</div> ");
}
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("<div class=\"warning\">Angebot \"$name\" ($belegnr) wurde ge&ouml;scht !</div> ");
} else
{
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Angebot \"$name\" ($belegnr) kann nicht storniert werden da es bereits storniert ist!</div> ");
}
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("<div class=\"warning\">Das Angebot \"$name\" ($belegnr) wurde storniert!</div>");
}
//$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Angebot \"$name\" ($belegnr) kann nicht storniert werden, da es bereits versendet wurde!</div>");
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 "<iframe width=\"100%\" height=\"100%\" style=\"height:calc(100vh - 100px)\" src=\"./js/production/generic/web/viewer.html?file=$file\"></iframe>";
$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<br>R&uuml;ckst&auml;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&uuml;ck zur &Uuml;bersicht");
else
$this->app->erp->MenuEintrag("index.php?module=angebot&action=edit&id=$id","Zur&uuml;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','<div class="info">Erfolgreich gespeichert!</div>');
}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','<div class="info">Erfolgreich gespeichert!</div>');
}else{
$this->app->Tpl->Set('NEUMESSAGE',$this->app->DB->error());
}
}
}else{
$datum_erinnerung = '';
$this->app->Tpl->Set('NEUMESSAGE','<div class="error">Bitte geben Sie ein Datum ein!</div>');
}
} 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(count($wiedervorlage)> 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","<option value=\"$i\" ".($chance==$i?"selected":"").">$i %</option>");
}
$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",",","."));
/*
<tr><td width="">Datum:</td><td><input type="text" name="datum_angelegt" size="5" value="[DATUM_ANGELEGT]" /> [MSGDATUM_ANGELEGT]</td><td width="">Zeit:</td><td><input type="text" name="zeit_angelegt" size="5" value="[ZEIT_ANGELEGT]" /> [MSGZEIT_ANGELEGT]</td></tr>
<tr><td width="">Bezeichnung:</td><td colspan="3"><input type="text" name="bezeichnung" value="[BEZEICHNUNG]" /> [MSGBEZEICHNUNG]</td></tr>
<tr><td width="">Bearbeiter:</td><td colspan="3"><input type="text" name="adresse" value="[ADRESSE]" /> [MSGADRESSE]</td></tr>
<tr><td>Beschreibung:</td><td colspan="3"><textarea name="beschreibung" >[BESCHREIBUNG]</textarea>[MSGBESCHREIBUNG]</td></tr>
<tr><td colspan="4">Wiedervorlage:</td></tr>
<tr><td width="">Datum:</td><td><input type="text" name="datum_erinnerung" size="5" value="[DATUM_ERINNERUNG]"/> [MSGDATUM_ERINNERUNG]</td><td width="">Zeit:</td><td><input type="text" name="zeit_erinnerung" size="5" value="[ZEIT_ERINNERUNG]" /> [MSGZEIT_ERINNERUNG]</td></tr>
<tr><td width="">Mitarbeiter:</td><td colspan="3"><input type="text" name="adresse_mitarbeiter" value="[ADRESSE_MITARBEITER]" /> [MSGADRESSE_MITARBEITER]</td></tr>
<tr><td width="200">abgeschlossen:</td><td colspan="3"><input type="checkbox" name="abgeschlossen" value="1" [ABGESCHLOSSEN] />[MSGABGESCHLOSSEN]</td></tr>
*/
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);
return;
$this->AngebotMenu();
$id = $this->app->Secure->GetGET("id");
/* neu anlegen formular */
$artikelart = $this->app->Secure->GetPOST("artikelart");
$bezeichnung = $this->app->Secure->GetPOST("bezeichnung");
$vpe = $this->app->Secure->GetPOST("vpe");
$umsatzsteuerklasse = $this->app->Secure->GetPOST("umsatzsteuerklasse");
$waehrung = $this->app->Secure->GetPOST("waehrung");
$projekt= $this->app->Secure->GetPOST("projekt");
$preis = $this->app->Secure->GetPOST("preis");
$preis = str_replace(',','.',$preis);
$menge = $this->app->Secure->GetPOST("menge");
$lieferdatum = $this->app->Secure->GetPOST("lieferdatum");
if($lieferdatum=="") $lieferdatum="00.00.0000";
$angebotsart = $this->app->DB->Select("SELECT angebotsart FROM angebot WHERE id='$id' LIMIT 1");
$lieferant = $this->app->DB->Select("SELECT adresse FROM angebot WHERE id='$id' LIMIT 1");
$anlegen_artikelneu = $this->app->Secure->GetPOST("anlegen_artikelneu");
if($anlegen_artikelneu!="")
{
if($bezeichnung!="" && $menge!="" && $preis!="")
{
$sort = $this->app->DB->Select("SELECT MAX(sort) FROM angebot_position WHERE angebot='$id' LIMIT 1");
$sort = $sort + 1;
$neue_nummer = $this->app->erp->NeueArtikelNummer($artikelart,$this->app->User->GetFirma(),$projekt);
// anlegen als artikel
$this->app->DB->InserT("INSERT INTO artikel (id,typ,nummer,projekt,name_de,umsatzsteuer,adresse,firma)
VALUES ('','$artikelart','$neue_nummer','$projekt','$bezeichnung','$umsatzsteuerklasse','$lieferant','".$this->app->User->GetFirma()."')");
$artikel_id = $this->app->DB->GetInsertID();
// einkaufspreis anlegen
$this->app->DB->Insert("INSERT INTO verkaufspreise (id,artikel,adresse,objekt,projekt,preis,ab_menge,angelegt_am,bearbeiter)
VALUES ('','$artikel_id','$lieferant','Standard','$projekt','$preis','$menge',NOW(),'".$this->app->User->GetName()."')");
$lieferdatum = $this->app->String->Convert($lieferdatum,"%1.%2.%3","%3-%2-%1");
$this->app->DB->Insert("INSERT INTO angebot_position (id,angebot,artikel,bezeichnung,nummer,menge,preis, waehrung, sort,lieferdatum, umsatzsteuer, status,projekt,vpe)
VALUES ('','$id','$artikel_id','$bezeichnung','$neue_nummer','$menge','$preis','$waehrung','$sort','$lieferdatum','$umsatzsteuerklasse','angelegt','$projekt','$vpe')");
header("Location: index.php?module=angebot&action=positionen&id=$id");
exit;
} else
$this->app->Tpl->Set('NEUMESSAGE',"<div class=\"error\">Bestellnummer, bezeichnung, Menge und Preis sind Pflichtfelder!</div>");
}
$ajaxbuchen = $this->app->Secure->GetPOST("ajaxbuchen");
if($ajaxbuchen!="")
{
$artikel = $this->app->Secure->GetPOST("artikel");
$nummer = $this->app->Secure->GetPOST("nummer");
$projekt = $this->app->Secure->GetPOST("projekt");
$projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' LIMIT 1");
$sort = $this->app->DB->Select("SELECT MAX(sort) FROM angebot_position WHERE auftrag='$id' LIMIT 1");
$sort = $sort + 1;
$artikel_id = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='$nummer' LIMIT 1");
$bezeichnung = $artikel;
$neue_nummer = $nummer;
$waehrung = 'EUR';
$umsatzsteuerklasse = $this->app->DB->Select("SELECT umsatzsteuerklasse FROM artikel WHERE nummer='$nummer' LIMIT 1");
$vpe = 'einzeln';
$this->app->DB->Insert("INSERT INTO angebot_position (id,angebot,artikel,bezeichnung,nummer,menge,preis, waehrung, sort,lieferdatum, umsatzsteuer, status,projekt,vpe)
VALUES ('','$id','$artikel_id','$bezeichnung','$neue_nummer','$menge','$preis','$waehrung','$sort','$lieferdatum','$umsatzsteuerklasse','angelegt','$projekt','$vpe')");
}
$weiter = $this->app->Secure->GetPOST("weiter");
if($weiter!="")
{
header("Location: index.php?module=angebot&action=freigabe&id=$id");
exit;
}
if(1)
{
$this->app->Tpl->Set('ARTIKELART',$this->app->erp->GetSelect($this->app->erp->GetArtikelart(),$artikelart));
$this->app->Tpl->Set('VPE',$this->app->erp->GetSelect($this->app->erp->GetVPE(),$vpe));
$this->app->Tpl->Set('WAEHRUNG',$this->app->erp->GetSelect($this->app->erp->GetWaehrung(),$vpe));
$this->app->Tpl->Set('UMSATZSTEUERKLASSE',$this->app->erp->GetSelect($this->app->erp->GetUmsatzsteuerklasse(),$umsatzsteuerklasse));
$this->app->Tpl->Set('PROJEKT',$this->app->erp->GetProjektSelect($projekt));
$this->app->Tpl->Set('PREIS',$preis);
$this->app->Tpl->Set('MENGE',$menge);
$this->app->Tpl->Set('LIEFERDATUM',$lieferdatum);
$this->app->Tpl->Set('BEZEICHNUNG',$bezeichung);
$this->app->Tpl->Set('BESTELLNUMMER',$bestellnummer);
$this->app->Tpl->Set('SUBSUBHEADING',"Neuen Artikel anlegen");
$this->app->Tpl->Parse('INHALT',"angebot_artikelneu.tpl");
$this->app->Tpl->Set('EXTEND',"<input type=\"submit\" value=\"Artikel unter Stammdaten anlegen\" name=\"anlegen_artikelneu\">");
$this->app->Tpl->Parse('UEBERSICHT',"rahmen70.tpl");
$this->app->Tpl->Set('EXTEND',"");
$this->app->Tpl->Set('INHALT',"");
/* ende neu anlegen formular */
$this->app->Tpl->Set('SUBSUBHEADING',"Artikelstamm");
$lieferant = $this->app->DB->Select("SELECT adresse FROM angebot WHERE id='$id' LIMIT 1");
$table = new EasyTable($this->app);
$table->Query("SELECT CONCAT(LEFT(a.name_de,80),'...') as artikel, a.nummer,
v.ab_menge as ab, v.preis, p.abkuerzung as projekt,
CONCAT('<input type=\"text\" size=\"8\" value=\"00.00.0000\" id=\"datum',v.id,'\">
<img src=\"./themes/new/images/kalender.png\" height=\"12\" onclick=\"displayCalendar(document.forms[1].datum',v.id,',\'dd.mm.yyyy\',this)\" border=0 align=right>') as Lieferdatum,
CONCAT('<input type=\"text\" size=\"3\" value=\"\" id=\"menge',v.id,'\">') as menge, v.id as id
FROM artikel a LEFT JOIN verkaufspreise v ON a.id=v.artikel LEFT JOIN projekt p ON v.projekt=p.id WHERE v.ab_menge>=1",0,"");
$table->DisplayNew('INHALT', "<input type=\"button\"
onclick=\"document.location.href='index.php?module=angebot&action=addposition&id=$id&sid=%value%&menge=' + document.getElementById('menge%value%').value + '&datum=' + document.getElementById('datum%value%').value;\" value=\"anlegen\">");
$this->app->Tpl->Parse('UEBERSICHT',"rahmen70.tpl");
$this->app->Tpl->Set('INHALT',"");
// child table einfuegen
$this->app->Tpl->Set('SUBSUBHEADING',"Positionen");
$menu = array("up"=>"upangebotposition",
"down"=>"downangebotposition",
//"add"=>"addstueckliste",
"edit"=>"positioneneditpopup",
"copy"=>"copyangebotposition",
"del"=>"delangebotposition");
$sql = "SELECT a.name_de as Artikel, p.abkuerzung as projekt, a.nummer as nummer, b.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum, b.menge as menge, b.preis as preis, b.id as id
FROM angebot_position b
LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id
WHERE b.angebot='$id'";
// $this->app->Tpl->Add(EXTEND,"<input type=\"submit\" value=\"Gleiche Positionen zusammenf&uuml;gen\">");
$this->app->YUI->SortListAdd('INHALT',$this,$menu,$sql);
$this->app->Tpl->Parse('TAB1',"rahmen70.tpl");
if($anlegen_artikelneu!="")
$this->app->Tpl->Set('AKTIV_TAB2',"selected");
else
$this->app->Tpl->Set('AKTIV_TAB1',"selected");
$this->app->Tpl->Parse('PAGE',"angebot_positionuebersicht.tpl");
}
}
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 = "<option value=\"freigabe\">Angebot freigeben</option>";
}
$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 = '<option value="zertifikate">Zertifikate anh&auml;ngen</option>';
$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 = "<option value=\"unstorno\">Angebot Storno r&uuml;ckg&auml;ngig</option>";
else if($status!="storniert")
$storno = "<option value=\"storno\">Angebot stornieren</option>";
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 = "<option value=\"belegeimport\">Export als CSV</option>";
}
$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 ="
<script type=\"text/javascript\">
function onchangeangebot(cmd)
{
switch(cmd)
{
case 'storno': if(!confirm('Wirklich stornieren?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=angebot&action=delete&id=%value%'; break;
case 'unstorno': if(!confirm('Wirklich storniertes Angebot wieder freigeben?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=angebot&action=undelete&id=%value%'; break;
case 'kopievon': if(!confirm('Wirklich neue Version anlegen?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=angebot&action=kopievon&id=%value%'; break;
case 'pdf': window.location.href='index.php?module=angebot&action=pdf&id=%value%'; document.getElementById('aktion$prefix').selectedIndex = 0; break;
case 'copy': if(!confirm('Wirklich kopieren?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=angebot&action=copy&id=%value%'; break;
case 'auftrag': if(!confirm('Wirklich als Auftrag weiterführen?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=angebot&action=auftrag&id=%value%'; break;
$proformarechnungcase
case 'beauftragt': if(!confirm('Wirklich als beauftragt markieren?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=angebot&action=beauftragt&id=%value%'; break;
case 'abgelehnt': if(!confirm('Wirklich Angebot als abgelehnt markieren?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=angebot&action=abgelehnt&id=%value%'; break;
case 'abschicken': ".$this->app->erp->DokumentAbschickenPopup()." break;
case 'freigabe': window.location.href='index.php?module=angebot&action=freigabe&id=%value%'; break;
$zertifikatcase
$casebelegeimport
$hookcase
}
}
</script>
Aktion:&nbsp;<select onchange=\"onchangeangebot(this.value)\" id=\"aktion$prefix\"><option>bitte w&auml;hlen ...</option>
$storno
<option value=\"copy\">Angebot kopieren</option>
$freigabe
<option value=\"abschicken\">Angebot abschicken</option>
<option value=\"abgelehnt\">Angebot abgelehnt</option>
<option value=\"kopievon\">Angebot neue Version</option>
<option value=\"auftrag\">als Auftrag weiterf&uuml;hren</option>
$proformarechnungoption
<option value=\"beauftragt\">als beauftragt markieren</option>
$optionbelegeimport
<option value=\"pdf\">PDF &ouml;ffnen</option>
$zertifikatoption
$hookoption
</select>&nbsp;
<a href=\"index.php?module=angebot&action=pdf&id=%value%\" title=\"PDF\"><img border=\"0\" src=\"./themes/new/images/pdf.svg\"></a>
<!--
<a href=\"index.php?module=angebot&action=edit&id=%value%\" title=\"Bearbeiten\"><img border=\"0\" src=\"./themes/new/images/edit.svg\"></a>
<a onclick=\"if(!confirm('Wirklich stornieren?')) return false; else window.location.href='index.php?module=angebot&action=delete&id=%value%';\">
<img src=\"./themes/new/images/delete.svg\" title=\"Stornieren\" border=\"0\"></a>
<a onclick=\"if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=angebot&action=copy&id=%value%';\" title=\"Kopieren\">
<img src=\"./themes/new/images/copy.svg\" border=\"0\"></a>
<a onclick=\"if(!confirm('Wirklich als Auftrag weiterf&uuml;hren?')) return false; else window.location.href='index.php?module=angebot&action=auftrag&id=%value%';\" title=\"Als Auftrag weiterf&uuml;hren\">
<img src=\"./themes/new/images/lieferung.png\" border=\"0\" alt=\"weiterf&uuml;hren als Lieferschein\"></a>-->";
//$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&uuml;ck zur &Uuml;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',"<div class=\"error\">Achtung! Dieses Dokument ist mit keiner Kunden-Nr. verlinkt. Bitte geben Sie die Kundennummer an und klicken Sie &uuml;bernehmen oder Speichern!</div>");
}
$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',"<div class=\"warning\">Dies ist Version $kopienummer des Angebots: <a href=\"index.php?module=angebot&action=edit&id=$hauptid\" target=\"_blank\">$kopie_von_angebot_nummer</a></div>");
}
$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',
"<div class=\"info\">Zu diesem Angebot geh&ouml;ren das weitere Angebot Nr. <a href=\"index.php?module=angebot&action=edit&id="
.$offerId."\" target=\"_blank\">"
.$offerNumberr."</a></div>"
);
}
}
$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',
"<div class=\"warning\">Das Angebot ist noch nicht archiviert! Bitte versenden oder manuell archivieren.<input type=\"button\" onclick=\"if(!confirm('Soll das Dokument archiviert werden?')) return false;else window.location.href='index.php?module=angebot&action=archivierepdf&id=$id';\" value=\"Manuell archivieren\" /> <input type=\"button\" value=\"Dokument versenden\" onclick=\"DokumentAbschicken('angebot',$id)\"></div>"
);
}
elseif(!$this->app->DB->Select("SELECT versendet FROM angebot WHERE id = '$id' LIMIT 1")) {
$this->app->Tpl->Add(
'MESSAGE',
"<div class=\"warning\">Das Angebot wurde noch nicht versendet! <input type=\"button\" value=\"Dokument versenden\" onclick=\"DokumentAbschicken('angebot',$id)\"></div>"
);
}
}
$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',
"<div class=\"error\">Achtung: Der Kunde hat eine Liefersperre!</div>"
);
}
$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($nummer!="")
{
$this->app->Tpl->Set('NUMMER',$nummer);
if($this->app->erp->RechteVorhanden('adresse','edit')){
$this->app->Tpl->Set(
'KUNDE',
"&nbsp;&nbsp;&nbsp;Kd-Nr. <a href=\"index.php?module=adresse&action=edit&id=$adresse\" target=\"_blank\">" . $kundennummer . "</a>"
);
}
else{
$this->app->Tpl->Set('KUNDE', '&nbsp;&nbsp;&nbsp;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',
"<input type=\"button\" value=\"Abbrechen\" onclick=\"if(!confirm('Wirklich löschen?')) return false; else window.location.href='index.php?module=angebot&action=delete&id=$id';\">"
);
}
$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 .= "&nbsp;<input type=\"button\" value=\"AB "
.$orderNumber."\" onclick=\"window.location.href='index.php?module=auftrag&action=edit&id="
.$orderId."'\">";
}
if($optional!='') {
$optional = "Zum Auftrag: ".$optional;
}
else {
$hinweis = "<div class=\"info\">Zu diesem Angebot gibt es noch keinen Auftrag.</div>";
}
$this->app->Tpl->Set(
'MESSAGE',
"<div class=\"warning\">Dieses Angebot ist schreibgesch&uuml;tzt und darf daher nicht mehr bearbeitet werden!&nbsp;<input type=\"button\" value=\"Schreibschutz entfernen\" onclick=\"if(!confirm('Soll der Schreibschutz f&uuml;r dieses Angebot wirklich entfernt werden?')) return false;else window.location.href='index.php?module=angebot&action=schreibschutz&id=$id';\">&nbsp;$optional</div>$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', ' <input type="button" value="&uuml;bernehmen" onclick="document.getElementById(\'uebernehmen\').value=1; document.getElementById(\'eprooform\').submit();"/><input type="hidden" id="uebernehmen" name="uebernehmen" value="0">
');
}else{
$this->app->Tpl->Set('BUTTON_UEBERNEHMEN', '
<input type="button" value="&uuml;bernehmen" onclick="if(!confirm(\'Soll der neue Kunde wirklich &uuml;bernommen werden? Es werden alle Felder &uuml;berladen.\')) return false;else document.getElementById(\'uebernehmen\').value=1; document.getElementById(\'eprooform\').submit();"/><input type="hidden" id="uebernehmen" name="uebernehmen" value="0">
');
}
}
// 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,"<input type=\"text\" value=\"".$this->app->erp->GetAdressName($bearbeiter)."\" readonly>");
$status= $this->app->DB->Select("SELECT status FROM angebot WHERE id='$id' LIMIT 1");
$this->app->Tpl->Set('STATUS',"<input type=\"text\" size=\"30\" value=\"".$status."\" readonly [COMMONREADONLYINPUT]>");
$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',"<input type=\"text\" value=\"".$angebot."\" readonly>");
$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, "<br><center>Zu zahlen: <b>$summe (netto) $summebrutto (brutto) $waehrung</b> ($tmp)&nbsp;&nbsp;");
*/
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,"<li><h2>Angebot</h2></li>");
$this->app->erp->Headlines('Angebot anlegen');
$this->app->erp->MenuEintrag("index.php?module=angebot&action=list","Zur&uuml;ck zur &Uuml;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',"<div class=\"warning\">M&ouml;chten Sie eine Angebot jetzt anlegen? &nbsp;
<input type=\"button\" onclick=\"window.location.href='index.php?module=angebot&action=create&anlegen=1'\" value=\"Ja - Angebot jetzt anlegen\"></div><br>");
$this->app->Tpl->Set('TAB1',"
<table width=\"100%\" style=\"background-color: #fff; border: solid 1px #000;\" align=\"center\">
<tr>
<td align=\"center\">
<br><b style=\"font-size: 14pt\">Angebote in Bearbeitung</b>
<br>
<br>
Offene Angebote, die durch andere Mitarbeiter in Bearbeitung sind.
<br>
</td>
</tr>
</table>
<br>
[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(count($tmpfile) > 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,"<li><h2 class=\"allgemein\" style=\"background-color: [FARBE2]\">Allgemein</h2></li>");
$this->app->erp->MenuEintrag("index.php?module=angebot&action=list","&Uuml;bersicht");
$this->app->erp->MenuEintrag("index.php?module=angebot&action=create","Neues Angebot anlegen");
if(strlen($backurl)>5)
$this->app->erp->MenuEintrag("$backurl","Zur&uuml;ck zur &Uuml;bersicht");
else
$this->app->erp->MenuEintrag("index.php","Zur&uuml;ck zur &Uuml;bersicht");
$zahlungsweisen = $this->app->DB->SelectArr('
SELECT
zahlungsweise
FROM
angebot
GROUP BY
zahlungsweise
');
$zahlungsweiseStr = '';
if ($zahlungsweisen) {
foreach ($zahlungsweisen as $zahlungsweise) {
$zahlungsweiseStr .= '<option name="' . $zahlungsweise['zahlungsweise'] . '">' . ucfirst($zahlungsweise['zahlungsweise']) . '</option>';
}
}
$status = $this->app->DB->SelectArr('
SELECT
status
FROM
angebot
GROUP BY
status
');
$statusStr = '';
if ($status) {
foreach ($status as $statusE) {
$statusStr .= '<option name="' . $statusE['status'] . '">' . ucfirst($statusE['status']) . '</option>';
}
}
$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 .= '<option name="' . $versandart['versandart'] . '">' . ucfirst($versandart['versandart']) . '</option>';
}
}
$laender = $this->app->erp->GetSelectLaenderliste();
$laenderStr = '';
foreach ($laender as $landKey => $land) {
$laenderStr .= '<option value="' . $landKey . '">' . $land . '</option>';
}
$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, "<a href=\"index.php?module=angebot&action=edit&id=%value%\"><img border=\"0\" src=\"./themes/new/images/edit.svg\"></a>
<a href=\"index.php?module=angebot&action=pdf&id=%value%\"><img border=\"0\" src=\"./themes/new/images/pdf.svg\"></a>
<a onclick=\"if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=angebot&action=copy&id=%value%';\">
<img src=\"./themes/new/images/copy.svg\" border=\"0\"></a>
<a onclick=\"if(!confirm('Weiterf&uuml;fhren als Auftrag?')) return false; else window.location.href='index.php?module=angebot&action=auftrag&id=%value%';\">
<img src=\"./themes/new/images/right.png\" border=\"0\"></a>
");
$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', "<a href=\"index.php?module=angebot&action=edit&id=%value%\"><img border=\"0\" src=\"./themes/new/images/edit.svg\"></a>
<a href=\"index.php?module=angebot&action=pdf&id=%value%\"><img border=\"0\" src=\"./themes/new/images/pdf.svg\"></a>
<a onclick=\"if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=angebot&action=copy&id=%value%';\">
<img src=\"./themes/new/images/copy.svg\" border=\"0\"></a>
");
$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', "<a href=\"index.php?module=angebot&action=edit&id=%value%\"><img border=\"0\" src=\"./themes/new/images/edit.svg\"></a>
<a onclick=\"if(!confirm('Wirklich löschen?')) return false; else window.location.href='index.php?module=angebot&action=delete&id=%value%';\">
<img src=\"./themes/new/images/delete.svg\" border=\"0\"></a>
<a onclick=\"if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=angebot&action=copy&id=%value%';\">
<img src=\"./themes/new/images/copy.svg\" border=\"0\"></a>
");
$this->app->Tpl->Parse(TAB3,"rahmen70.tpl");
*/
/*
$this->app->Tpl->Set(TAB2,"lieferant, angebot, waehrung, sprache, liefertermin, steuersatz, einkäufer, freigabe<br>
<br>Angebot (NR),Bestellart (NB), Bestelldatum
<br>Projekt
<br>Kostenstelle pro Position
<br>Terminangebot (am xx.xx.xxxx raus damit)
<br>vorschlagsdaten für positionen
<br>proposition reinklicken zum ändern und reihenfolge tabelle
<br>Angebot muss werden wie angebot (angebot beschreibung = allgemein)
<br>Positionen (wie stueckliste)
<br>Wareneingang / Rückstand
<br>Etiketten
<br>Freigabe
<br>Dokument direkt faxen
");
*/
}
}