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');
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',"".$kundennummer." ".$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', "$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']);
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','
");
$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("
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
");
*/
}
}