app=$app; if($intern) { return; } $this->app->ActionHandlerInit($this); $this->app->ActionHandler("list","GutschriftList"); $this->app->ActionHandler("create","GutschriftCreate"); $this->app->ActionHandler("positionen","GutschriftPositionen"); $this->app->ActionHandler("upgutschriftposition","UpGutschriftPosition"); $this->app->ActionHandler("delgutschriftposition","DelGutschriftPosition"); $this->app->ActionHandler("copygutschriftposition","CopyGutschriftPosition"); $this->app->ActionHandler("downgutschriftposition","DownGutschriftPosition"); $this->app->ActionHandler("positioneneditpopup","GutschriftPositionenEditPopup"); $this->app->ActionHandler("edit","GutschriftEdit"); $this->app->ActionHandler("copy","GutschriftCopy"); $this->app->ActionHandler("delete","GutschriftDelete"); $this->app->ActionHandler("storno","GutschriftStorno"); $this->app->ActionHandler("freigabe","GutschriftFreigabe"); $this->app->ActionHandler("abschicken","GutschriftAbschicken"); $this->app->ActionHandler("pdf","GutschriftPDF"); $this->app->ActionHandler("inlinepdf","GutschriftInlinePDF"); $this->app->ActionHandler("protokoll","GutschriftProtokoll"); $this->app->ActionHandler("zahlungseingang","GutschriftZahlungseingang"); $this->app->ActionHandler("minidetail","GutschriftMiniDetail"); $this->app->ActionHandler("editable","GutschriftEditable"); $this->app->ActionHandler("livetabelle","GutschriftLiveTabelle"); $this->app->ActionHandler("schreibschutz","GutschriftSchreibschutz"); $this->app->ActionHandler("zahlungsmahnungswesen","GutschriftZahlungMahnungswesen"); $this->app->ActionHandler("deleterabatte","GutschriftDeleteRabatte"); $this->app->ActionHandler("dateien","GutschriftDateien"); $this->app->ActionHandler("pdffromarchive","GutschriftPDFFromArchiv"); $this->app->ActionHandler("archivierepdf","GutschriftArchivierePDF"); $this->app->ActionHandler("summe","GutschriftSumme"); // nur fuer rechte $this->app->ActionHandler("einkaufspreise","GutschriftEinkaufspreise"); $this->app->ActionHandler("steuer","GutschriftSteuer"); $this->app->ActionHandler("formeln","GutschriftFormeln"); $this->app->ActionHandler("createpayment","GutschriftCreatePayment"); $this->app->DefaultActionHandler("list"); $id = (int)$this->app->Secure->GetGET('id'); $returnOrderRow = $id <= 0 ? null : $this->app->DB->SelectRow( "SELECT ro.stornorechnung, ro.belegnr, adr.name FROM `gutschrift` AS `ro` LEFT JOIN `adresse` AS `adr` ON ro.adresse = adr.id WHERE ro.id = {$id}" ); $stornorechnung = !empty($returnOrderRow['stornorechnung']); if($stornorechnung){ $this->app->Tpl->Set('BEZEICHNUNGTITEL', $this->app->erp->Firmendaten('bezeichnungstornorechnung')); } else{ $this->app->Tpl->Set('BEZEICHNUNGTITEL', 'Gutschrift'); } $nummer = $this->app->Secure->GetPOST('adresse'); if($nummer==''){ $adresse = empty($returnOrderRow)?'':$returnOrderRow['name']; } else{ $adresse = $nummer; } $nummer = empty($returnOrderRow)?'':$returnOrderRow['belegnr']; if($nummer=='' || $nummer==0) { $nummer='ohne Nummer'; } $this->app->Tpl->Set('UEBERSCHRIFT','Auftrag: '.$adresse.' ('.$nummer.')'); $this->app->erp->Headlines('Gutschrift'); $this->app->ActionHandlerListen($app); } public function Install() { $this->app->erp->RegisterHook('supersearch_detail', 'gutschrift', 'GutschriftSupersearchDetail'); } /** * @param \Xentral\Widgets\SuperSearch\Query\DetailQuery $detailQuery * @param \Xentral\Widgets\SuperSearch\Result\ResultDetail $detailResult * * @return void */ public function GutschriftSupersearchDetail($detailQuery, $detailResult) { if ($detailQuery->getGroupKey() !== 'creditnotes') { return; } $guschriftId = $detailQuery->getItemIdentifier(); $sql = sprintf( "SELECT gs.id, gs.belegnr, gs.datum, gs.soll FROM `gutschrift` AS `gs` WHERE gs.id = '%s' LIMIT 1", $this->app->DB->real_escape_string($guschriftId) ); $gutschrift = $this->app->DB->SelectRow($sql); if (empty($gutschrift)) { return; } $datum = date('d.m.Y', strtotime($gutschrift['datum'])); $detailResult->setTitle(sprintf('Gutschrift %s', $gutschrift['belegnr'])); $detailResult->addButton('Gutschrift Details', sprintf('index.php?module=gutschrift&action=edit&id=%s', $gutschrift['id'])); $detailResult->setMiniDetailUrl(sprintf('index.php?module=gutschrift&action=minidetail&id=%s', $gutschrift['id'])); } public function GutschriftFormeln() { } public function GutschriftCreatePayment() { $id = (int)$this->app->Secure->GetGET('id'); $ids = [$id]; $this->app->DB->Insert( sprintf( "INSERT INTO `payment_transaction` (`returnorder_id`, `payment_status`, `address_id`, `amount`, `currency`, `payment_json`, `payment_info`) SELECT ro.id,'angelegt', ro.adresse, ro.soll, IF(ro.waehrung <> '', ro.waehrung, 'EUR'), JSON_OBJECT('bic', ad.swift, 'iban', ad.iban, 'empfaenger', ad.inhaber, 'betrag', ro.soll, 'waehrung', IF(ro.waehrung <> '', ro.waehrung, 'EUR'), 'datum', ro.datum, 'vz1', '', 'vz2', ''), CONCAT(IF(ad.swift != '', IF(ad.iban != '', CONCAT('BIC: ', ad.swift, '
'), CONCAT('BIC: ', ad.swift)), ''), IF(ad.iban != '', CONCAT('IBAN: ', ad.iban), '')) FROM `gutschrift` AS `ro` LEFT JOIN `payment_transaction` AS `pt` ON ro.id = pt.returnorder_id LEFT JOIN `adresse` AS `ad` ON ro.adresse = ad.id WHERE pt.id IS NULL AND ro.id IN (%s) AND ro.status <> '' AND ro.status <> 'angelegt' AND ro.status <> 'storniert'", implode(',', $ids) ) ); if($this->app->DB->affected_rows() > 0) { $this->app->Location->execute('index.php?module=zahlungsverkehr&action=ueberweisung'); } $this->app->Location->execute('index.php?module=gutschrift&action=edit&id='.$id); } public function GutschriftSteuer() { } public function GutschriftSumme() { } public function GutschriftEinkaufspreise() { } public function GutschriftArchivierePDF() { $id = (int)$this->app->Secure->GetGET('id'); $projektbriefpapier = $this->app->DB->Select( sprintf( 'SELECT `projekt` FROM `gutschrift` WHERE `id` = %d LIMIT 1', $id ) ); if(class_exists('GutschriftPDFCustom')) { $Brief = new GutschriftPDFCustom($this->app,$projektbriefpapier); } else{ $Brief = new GutschriftPDF($this->app,$projektbriefpapier); } $Brief->GetGutschrift($id); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(1, 1); $this->app->DB->Update( sprintf( 'UPDATE `gutschrift` SET `schreibschutz` = 1 WHERE `id` = %d', $id ) ); @unlink($tmpfile); $this->app->Location->execute('index.php?module=gutschrift&action=edit&id='.$id); } public function GutschriftPDFFromArchiv() { $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( sprintf( 'SELECT `projekt` FROM `gutschrift` WHERE `id` = %d', $archiv ) ); if(class_exists('GutschriftPDFCustom')) { $Brief = new GutschriftPDFCustom($this->app,$projekt); } else{ $Brief = new GutschriftPDF($this->app,$projekt); } $content = $Brief->getArchivByID($id); if(empty($content)) { header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="Fehler.pdf"'); $this->app->ExitXentral(); } header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="'.$content['belegnr'].'.pdf"'); echo $content['file']; $this->app->ExitXentral(); } public function GutschriftCopy() { $id = $this->app->Secure->GetGET('id'); $newid = $this->CopyGutschrift($id); $this->app->Location->execute('index.php?module=gutschrift&action=edit&id='.$newid); } public function GutschriftDeleteRabatte() { $id=$this->app->Secure->GetGET('id'); $this->app->DB->Update( sprintf( 'UPDATE `gutschrift` SET `rabatt` = 0, `rabatt1` = 0,`rabatt2` = 0,`rabatt3` = 0,`rabatt4` = 0,`rabatt5` = 0,`realrabatt`= 0 WHERE `id` = %d LIMIT 1', $id ) ); $msg = $this->app->erp->base64_url_encode('
Die Rabatte wurden entfernt!
'); $this->app->Location->execute("index.php?module=gutschrift&action=edit&id=$id&msg=$msg"); } public function GutschriftSchreibschutz() { $id = $this->app->Secure->GetGET('id'); $this->app->DB->Update( sprintf( 'UPDATE gutschrift SET zuarchivieren=1, schreibschutz = 0 WHERE id = %d', $id ) ); $this->app->erp->GutschriftProtokoll($id,'Schreibschutz entfernt'); $this->app->Location->execute('index.php?module=gutschrift&action=edit&id='.$id); } public function GutschriftDateien() { $id = $this->app->Secure->GetGET('id'); $this->GutschriftMenu(); $this->app->Tpl->Add('UEBERSCHRIFT',' (Dateien)'); $this->app->YUI->DateiUpload('PAGE','Gutschrift',$id); } public function GutschriftZahlungMahnungswesen() { $this->GutschriftMenu(); $this->app->Tpl->Set('TABTEXT','Zahlung-/Mahnwesen'); $this->GutschriftMiniDetail('TAB1',true); $this->app->Tpl->Parse('PAGE','tabview.tpl'); } public function GutschriftEditable() { $this->app->YUI->AARLGEditable(); } /** * @param int $id * @param string $prefix * * @return string|string[] */ public function GutschriftIconMenu($id,$prefix='') { $status = $this->app->DB->Select( sprintf( "SELECT `status` FROM `gutschrift` WHERE `id`= %d LIMIT 1", $id ) ); if($status==='angelegt' || $status==''){ $freigabe = ""; } if($this->app->erp->RechteVorhanden('belegeimport', 'belegcsvexport')) { $casebelegeimport = "case 'belegeimport': window.location.href='index.php?module=belegeimport&action=belegcsvexport&cmd=gutschrift&id=%value%'; break;"; $optionbelegeimport = ""; } $createpayment = ''; $casecreatepayment = ''; $hookoption = ''; $hookcase = ''; $this->app->erp->RunHook('Gutschrift_Aktion_option',3, $id, $status, $hookoption); $this->app->erp->RunHook('Gutschrift_Aktion_case',3, $id, $status, $hookcase); $menu ="  Aktion:   "; $menu = str_replace('%value%',$id,$menu); return $menu; } function GutschriftLiveTabelle() { $id = $this->app->Secure->GetGET('id'); $status = $this->app->DB->Select( sprintf( "SELECT `status` FROM `gutschrift` WHERE `id`= %d LIMIT 1", $id ) ); $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,FORMAT(ap.preis,2,'de_DE') as Preis FROM gutschrift_position ap, artikel a WHERE ap.gutschrift='$id' AND a.id=ap.artikel" ); $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, FORMAT(ap.preis,2,'de_DE') as Preis FROM gutschrift_position ap, artikel a WHERE ap.gutschrift='$id' AND a.id=ap.artikel" ); $artikel = $table->DisplayNew('return','Preis','noAction'); } echo $artikel; $this->app->ExitXentral(); } /** * @param string $parsetarget * @param bool $menu */ public function GutschriftMiniDetail($parsetarget='',$menu=true) { $id = $this->app->Secure->GetGET('id'); if(!$this->app->DB->Select("SELECT deckungsbeitragcalc FROM gutschrift WHERE id='$id' LIMIT 1")) { $this->app->erp->BerechneDeckungsbeitrag($id,'gutschrift'); } $auftragArr = $this->app->DB->SelectArr("SELECT * FROM gutschrift 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('DECKUNGSBEITRAG',0); $this->app->Tpl->Set('DBPROZENT',0); $this->app->Tpl->Set('KUNDE',"".$kundennummer." ".$kundenname); if($this->app->erp->RechteVorhanden("projekt","dashboard")) $this->app->Tpl->Set('PROJEKT',"$projekt"); else $this->app->Tpl->Set('PROJEKT',$projekt); $this->app->Tpl->Set('ZAHLWEISE',$auftragArr[0]['zahlungsweise']); $this->app->Tpl->Set('STATUS',$auftragArr[0]['status']); $internet = $this->app->DB->Select("SELECT a.internet FROM gutschrift g LEFT JOIN rechnung r ON r.id=g.rechnungid LEFT JOIN auftrag a ON a.id=r.auftragid WHERE g.id='$id' AND g.id > 0 LIMIT 1"); $this->app->Tpl->Set('INTERNET',$internet); $rechnung = $this->app->DB->SelectArr( "SELECT `r`.auftragid, CONCAT('', if(`r`.belegnr='0' OR `r`.belegnr='','ENTWURF',`r`.belegnr), '   ' ) as `rechnung` FROM `gutschrift` AS `g` LEFT JOIN `rechnung` AS `r` ON `r`.id=`g`.rechnungid WHERE `g`.id='$id'" ); $orderIds = []; if(!empty($rechnung)) { $cRechnung = (!empty($rechnung)?count($rechnung):0); for($li=0;$li<$cRechnung;$li++) { $orderIds[] = (int)$rechnung[$li]['auftragid']; $this->app->Tpl->Add('RECHNUNG',$rechnung[$li]['rechnung']); if($li<$cRechnung) { $this->app->Tpl->Add('RECHNUNG',"
"); $lieferscheinid = $this->app->DB->Select("SELECT r.lieferschein FROM gutschrift g LEFT JOIN rechnung r ON r.id=g.rechnungid WHERE g.id='$id'"); if($lieferscheinid > 0) { $lieferschein = $this->app->DB->Select("SELECT CONCAT(belegnr,'    ') FROM lieferschein WHERE id='$lieferscheinid' LIMIT 1"); } $this->app->Tpl->Set('LIEFERSCHEIN',$lieferschein); } } } else{ $this->app->Tpl->Set('RECHNUNG', '-'); } $orders = empty($orderIds)?[]:$this->app->DB->SelectFirstCols( sprintf( "SELECT CONCAT('', if(`o`.belegnr='0' OR `o`.belegnr='','ENTWURF',`o`.belegnr), '   ' ) FROM `auftrag` AS `o` WHERE `o`.`id` IN (%s) ORDER BY `o`.datum, `o`.id", implode(',', $orderIds) ) ); if(!empty($orders)) { $this->app->Tpl->Set('AUFTRAG', implode('
', $orders)); } else { $this->app->Tpl->Set('AUFTRAG', '-'); } /* $rechnung = $this->app->DB->Select("SELECT CONCAT(rechnung,'    ') FROM gutschrift WHERE id='$id' LIMIT 1"); if($rechnung=="" || $rechnung <=0 ) $rechnung = "-"; $this->app->Tpl->Set(RECHNUNG,$rechnung); */ 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'); } if($menu) { $menu = $this->GutschriftIconMenu($id); $this->app->Tpl->Set('MENU',$menu); } // ARTIKEL $status = $this->app->DB->Select("SELECT status FROM gutschrift WHERE id='$id' LIMIT 1"); $table = new EasyTable($this->app); $table->Query("SELECT if(CHAR_LENGTH(ap.beschreibung) > 0,CONCAT(ap.bezeichnung,' *'),ap.bezeichnung) as artikel, CONCAT('', ap.nummer,'') as Nummer, ".$this->app->erp->FormatMenge("ap.menge")." as Menge,".$this->app->erp->FormatPreis("ap.preis*(100-ap.rabatt)/100",2)." as Preis FROM gutschrift_position ap, artikel a WHERE ap.gutschrift='$id' AND a.id=ap.artikel ORDER by ap.sort",0,''); $table->align = array('left','left','right','right'); $artikel = $table->DisplayNew('return','Preis','noAction','false',0,0,false); $this->app->Tpl->Set('ARTIKEL','
'.$artikel.'
'); if($auftragArr[0]['belegnr']=='0' || $auftragArr[0]['belegnr']=='') { $auftragArr[0]['belegnr'] = 'ENTWURF'; } $this->app->Tpl->Set('BELEGNR',$auftragArr[0]['belegnr']); $this->app->Tpl->Set('GUTSCHRIFTID',$auftragArr[0]['id']); $this->app->Tpl->Set('DELIVERYTHRESHOLDVATID',!empty($auftragArr[0]['deliverythresholdvatid'])?$auftragArr[0]['deliverythresholdvatid']:''); if($auftragArr[0]['status']==='freigegeben') { $this->app->Tpl->Set('ANGEBOTFARBE',"orange"); $this->app->Tpl->Set('ANGEBOTTEXT',"Das Angebot wurde noch nicht als Auftrag weitergeführt!"); } else if($auftragArr[0]['status']==='versendet') { $this->app->Tpl->Set('ANGEBOTFARBE',"red"); $this->app->Tpl->Set('ANGEBOTTEXT',"Das Angebot versendet aber noch kein Auftrag vom Kunden erhalten!"); } else if($auftragArr[0]['status']==='beauftragt') { $this->app->Tpl->Set('ANGEBOTFARBE','green'); $this->app->Tpl->Set('ANGEBOTTEXT',"Das Angebot wurde beauftragt und abgeschlossen!"); } else if($auftragArr[0]['status']==='angelegt') { $this->app->Tpl->Set('ANGEBOTFARBE',"grey"); $this->app->Tpl->Set('ANGEBOTTEXT',"Das Angebot wird bearbeitet und wurde noch nicht freigegeben und abgesendet!"); } $this->app->Tpl->Set('GUTSCHRIFTADRESSE',$this->Gutschriftadresse($auftragArr[0]['id'])); $tmp = new EasyTable($this->app); $tmp->Query("SELECT zeit,bearbeiter,grund FROM gutschrift_protokoll WHERE gutschrift='$id' ORDER by zeit DESC",0,''); $tmp->DisplayNew('PROTOKOLL',"Protokoll","noAction"); if(class_exists('GutschriftPDFCustom')) { $Brief = new GutschriftPDFCustom($this->app,$projekt); }else{ $Brief = new GutschriftPDF($this->app,$projekt); } $Dokumentenliste = $Brief->getArchivedFiles($id, 'gutschrift'); if($Dokumentenliste) { $tmp3 = new EasyTable($this->app); $tmp3->headings = array('Datum','Belegnr','Bearbeiter','Menü'); foreach($Dokumentenliste as $k => $v) { if(!$v['erstesoriginal']) { $tmpr['datum'] = date('d.m.Y H:i:s',strtotime($v['zeitstempel'])); $tmpr['belegnr'] = str_replace('.pdf','',$v['file']); $tmpr['belegnr'] = substr($tmpr['belegnr'],strrpos($tmpr['belegnr'],'_')+1); if(isset($v['belegnummer']) && $v['belegnummer']) { $tmpr['belegnr'] = $v['belegnummer']; } $tmpr['bearbeiter'] = $v['bearbeiter']; $tmpr['menu'] = ''; $tmp3->datasets[] = $tmpr; } } $tmp3->DisplayNew('PDFARCHIV','Menü','noAction'); } $this->app->Tpl->Add('ZAHLUNGEN',$this->GutschriftZahlung(true)); if($parsetarget=='') { $this->app->Tpl->Output('gutschrift_minidetail.tpl'); $this->app->ExitXentral(); } $this->app->Tpl->Parse($parsetarget,'gutschrift_minidetail.tpl'); } function Gutschriftadresse($id) { $data = $this->app->DB->SelectArr("SELECT * FROM gutschrift WHERE id='$id' LIMIT 1"); foreach($data[0] as $key=>$value) { if($data[0][$key]!='' && $key!=='abweichendelieferadresse' && $key!=='land' && $key!=='plz' && $key!=='lieferland' && $key!=='lieferplz') { $data[0][$key] = $data[0][$key].'
'; } } $rechnungsadresse = $data[0]['name']."".$data[0]['ansprechpartner']."".$data[0]['abteilung']."".$data[0]['unterabteilung']. "".$data[0]['strasse']."".$data[0]['adresszusatz']."".$data[0]['land']."-".$data[0]['plz']." ".$data[0]['ort']; return ""; } /** * Build the html output for minidetail containing the payments * @param bool $return * * @return string */ function GutschriftZahlung($return=false) { $id = $this->app->Secure->GetGET('id'); $zahlungen = $this->app->erp->GetZahlungen($id,'gutschrift',true); // print_r($zahlungen); $result = ""; foreach ($zahlungen as $zahlung) { $result .= " "; } $sum = array_sum(array_column($zahlungen,'betrag'))." ".$zahlung['waehrung']; if ($sum != 0) { $result .= " "; } return("
Gutschrift:

$rechnungsadresse
".$zahlung['datum']." ".ucfirst($zahlung['doc_type'])." ".$zahlung['doc_belegnr']." ".$zahlung['konto']." ".$zahlung['betrag']." ".$zahlung['waehrung']."
Summe: ".$sum."
".$result."
"); } /** * @param string|int $id * * @return int */ public function GutschriftFreigabe($id='') { if($id<=0) { $id = (int)$this->app->Secure->GetGET('id'); $freigabe= $this->app->Secure->GetGET('freigabe'); } else { $intern = true; $freigabe=$intern; } $allowedFrm = true; $showDefault = true; $this->app->Tpl->Set('TABTEXT','Freigabe'); $this->app->erp->GutschriftNeuberechnen($id); $this->app->erp->CheckVertrieb($id,'gutschrift'); $this->app->erp->CheckBearbeiter($id,'gutschrift'); $doctype = 'gutschrift'; if(empty($intern)){ $this->app->erp->RunHook('beleg_freigabe', 4, $doctype, $id, $allowedFrm, $showDefault); } if($allowedFrm && $freigabe==$id) { $belegnr = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1"); if($belegnr=='') { $this->app->erp->BelegFreigabe('gutschrift',$id); if($intern) { return 1; } $msg = $this->app->erp->base64_url_encode("
Die Gutschrift wurde freigegeben und kann jetzt versendet werden!
"); $this->app->Location->execute("index.php?module=gutschrift&action=edit&id=$id&msg=$msg"); } if($intern) { return 0; } $msg = $this->app->erp->base64_url_encode("
Die Gutschrift war bereits freigegeben!
"); $this->app->Location->execute("index.php?module=gutschrift&action=edit&id=$id&msg=$msg"); } if($showDefault){ $name = $this->app->DB->Select("SELECT a.name FROM gutschrift b LEFT JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1"); $summe = $this->app->DB->Select("SELECT soll FROM gutschrift WHERE id='$id' LIMIT 1"); $waehrung = $this->app->DB->Select("SELECT waehrung FROM gutschrift_position WHERE gutschrift='$id' LIMIT 1"); $this->app->Tpl->Set('TAB1', "
Soll die Gutschrift an $name im Wert von $summe $waehrung jetzt freigegeben werden?
"); } $this->GutschriftMenu(); $this->app->Tpl->Parse('PAGE','tabview.tpl'); } function GutschriftAbschicken() { $this->GutschriftMenu(); $this->app->erp->DokumentAbschicken(); } function GutschriftDelete() { $id = $this->app->Secure->GetGET("id"); $belegnr = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1"); $name = $this->app->DB->Select("SELECT name FROM gutschrift WHERE id='$id' LIMIT 1"); $status = $this->app->DB->Select("SELECT status FROM gutschrift WHERE id='$id' LIMIT 1"); if($belegnr=="0" || $belegnr=="") { $this->app->erp->DeleteGutschrift($id); $belegnr="ENTWURF"; $msg = $this->app->erp->base64_url_encode("
Die Gutschrift \"$name\" ($belegnr) wurde gelöscht!
"); //header("Location: ".$_SERVER['HTTP_REFERER']."&msg=$msg"); header("Location: index.php?module=gutschrift&action=list&msg=$msg"); exit; } else { if(0)//$status=="versendet") { // KUNDE muss RMA starten $msg = $this->app->erp->base64_url_encode("
Gutschrift \"$name\" ($belegnr) kann nicht storniert werden sie bereits versendet ist.
"); } else { $maxbelegnr = $this->app->DB->Select("SELECT MAX(belegnr) FROM gutschrift"); if(0)//$maxbelegnr == $belegnr) { $this->app->DB->Delete("DELETE FROM gutschrift_position WHERE gutschrift='$id'"); $this->app->DB->Delete("DELETE FROM gutschrift_protokoll WHERE gutschrift='$id'"); $this->app->DB->Delete("DELETE FROM gutschrift WHERE id='$id'"); $msg = $this->app->erp->base64_url_encode("
Gutschrift \"$name\" ($belegnr) wurde geöscht !
"); } else { $msg = $this->app->erp->base64_url_encode("
Gutschrift \"$name\" ($belegnr) kann nicht storniert werden da sie bereits freigegeben oder versendet ist!
"); } header("Location: index.php?module=gutschrift&action=list&msg=$msg"); exit; } header("Location: index.php?module=gutschrift&action=list&msg=$msg#tabs-1"); exit; } } function GutschriftDelete2() { $id = $this->app->Secure->GetGET("id"); $belegnr = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1"); if($belegnr=="" || $belegnr=="0") { $this->app->erp->DeleteGutschrift($id); $this->app->Tpl->Set('MESSAGE',"
Gutschrift wurde gelöscht!
"); } else { $this->app->Tpl->Set('MESSAGE',"
Die Gutschrift kann nicht mehr gelöscht werden, da diese bereits versendet wurde!
"); } $this->GutschriftList(); } function GutschriftProtokoll() { $this->GutschriftMenu(); $id = $this->app->Secure->GetGET("id"); $this->app->Tpl->Set('TABTEXT',"Protokoll"); $tmp = new EasyTable($this->app); $tmp->Query("SELECT zeit,bearbeiter,grund FROM gutschrift_protokoll WHERE gutschrift='$id' ORDER by zeit DESC"); $tmp->DisplayNew('TAB1',"Protokoll","noAction"); $this->app->Tpl->Parse('PAGE',"tabview.tpl"); } function GutschriftInlinePDF() { $id = $this->app->Secure->GetGET('id'); $this->app->erp->GutschriftNeuberechnen($id); $frame = $this->app->Secure->GetGET('frame'); if($frame=='') { $projekt = $this->app->DB->Select( sprintf( "SELECT `projekt` FROM `gutschrift` WHERE `id` = %d LIMIT 1", $id ) ); if(class_exists('GutschriftPDFCustom')) { $Brief = new GutschriftPDFCustom($this->app,$projekt); } else{ $Brief = new GutschriftPDF($this->app,$projekt); } $Brief->GetGutschrift($id); $Brief->inlineDocument(); } else { $file = urlencode("../../../../index.php?module=gutschrift&action=inlinepdf&id=$id"); echo ""; $this->app->ExitXentral(); } } public function GutschriftPDF() { $id = $this->app->Secure->GetGET('id'); $this->app->erp->GutschriftNeuberechnen($id); $projekt = $this->app->DB->Select("SELECT projekt FROM gutschrift WHERE id='$id' LIMIT 1"); // if(is_numeric($belegnr) && $belegnr!=0) { if(class_exists('GutschriftPDFCustom')) { $Brief = new GutschriftPDFCustom($this->app,$projekt); } else{ $Brief = new GutschriftPDF($this->app,$projekt); } $Brief->GetGutschrift($id); $Brief->displayDocument(); }// else // $this->app->Tpl->Set(MESSAGE,"
Noch nicht freigegebene Gutschriften können nicht als PDF betrachtet werden.!
"); $this->GutschriftList(); } function GutschriftMenu() { $id = $this->app->Secure->GetGET('id'); $belegnr = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1"); $name = $this->app->DB->Select("SELECT name FROM gutschrift WHERE id='$id' LIMIT 1"); if($belegnr=='0' || $belegnr=='') { $belegnr ='(Entwurf)'; } // $this->app->Tpl->Set(KURZUEBERSCHRIFT,"Gutschrift $belegnr"); $this->app->Tpl->Set('KURZUEBERSCHRIFT2',"$name Gutschrift $belegnr"); $this->app->erp->GutschriftNeuberechnen($id); // status bestell $status = $this->app->DB->Select("SELECT status FROM gutschrift WHERE id='$id' LIMIT 1"); if ($status==='angelegt') { $this->app->erp->MenuEintrag('index.php?module=gutschrift&action=freigabe&id='.$id,'Freigabe'); } $this->app->erp->MenuEintrag('index.php?module=gutschrift&action=edit&id='.$id,'Details'); $anzahldateien = $this->app->erp->AnzahlDateien('Gutschein',$id); if($anzahldateien > 0) { $anzahldateien = ' ('.$anzahldateien.')'; } else { $anzahldateien=''; } $this->app->erp->MenuEintrag('index.php?module=gutschrift&action=dateien&id='.$id,'Dateien'.$anzahldateien); $this->app->erp->MenuEintrag('index.php?module=gutschrift&action=zahlungsmahnungswesen&id='.$id,'Zahlung-/Mahnwesen'); $this->app->erp->RunMenuHook('gutschrift'); $this->app->erp->MenuEintrag('index.php?module=gutschrift&action=list','Zurück zur Übersicht'); } public function GutschriftPositionen() { $id = $this->app->Secure->GetGET('id'); $this->app->erp->GutschriftNeuberechnen($id); $this->app->YUI->AARLGPositionen(false); } public function CopyGutschriftPosition() { $this->app->YUI->SortListEvent('copy','gutschrift_position','gutschrift'); $this->GutschriftPositionen(); } public function DelGutschriftPosition() { $this->app->YUI->SortListEvent('del','gutschrift_position','gutschrift'); $this->GutschriftPositionen(); } public function UpGutschriftPosition() { $this->app->YUI->SortListEvent('up','gutschrift_position','gutschrift'); $this->GutschriftPositionen(); } public function DownGutschriftPosition() { $this->app->YUI->SortListEvent('down','gutschrift_position','gutschrift'); $this->GutschriftPositionen(); } public function GutschriftPositionenEditPopup() { $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] = 'gutschrift_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('gutschrift_accordion','',$v['name']); } } } } echo json_encode($ret); $this->app->ExitXentral(); } if($cmd === 'setaccordion') { $name = $this->app->Secure->GetPOST('name'); $active = $this->app->Secure->GetPOST('active'); $this->app->User->SetParameter('gutschrift_accordion'.$name, $active); echo json_encode(array('success'=>1)); $this->app->ExitXentral(); } $id = $this->app->Secure->GetGET('id'); $artikel= $this->app->DB->Select("SELECT artikel FROM gutschrift_position WHERE id='$id' LIMIT 1"); // nach page inhalt des dialogs ausgeben $filename = 'widgets/widget.gutschrift_position_custom.php'; if(is_file($filename)) { include_once $filename; $widget = new WidgetGutschrift_positionCustom($this->app,'PAGE'); } else { $widget = new WidgetGutschrift_position($this->app,'PAGE'); } $sid= $this->app->DB->Select("SELECT gutschrift FROM gutschrift_position WHERE id='$id' LIMIT 1"); $widget->form->SpecialActionAfterExecute('close_refresh', "index.php?module=gutschrift&action=positionen&id=$sid"); $widget->Edit(); $this->app->BuildNavigation=false; } public function GutschriftEdit() { $action = $this->app->Secure->GetGET('action'); $id = $this->app->Secure->GetGET('id'); if($this->app->Secure->GetPOST('resetextsoll')) { $this->app->DB->Update( sprintf( 'UPDATE gutschrift SET extsoll = 0 WHERE id = %d', $id ) ); $this->app->erp->GutschriftNeuberechnen($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 'gutschrift' 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('gutschrift',$id,$cmd,$sid)) { return; } if($this->app->erp->InnendienstAendern('gutschrift',$id,$cmd,$sid)){ return; } if($this->app->erp->Firmendaten('modul_verband')!='1') { $this->app->Tpl->Set('VERBANDSTART',''); } if($this->app->erp->DisableModul('gutschrift',$id)) { //$this->app->erp->MenuEintrag("index.php?module=auftrag&action=list","Zurück zur Übersicht"); $this->GutschriftMenu(); return; } $adresse = $this->app->DB->Select("SELECT adresse FROM gutschrift WHERE id='$id' LIMIT 1"); if($adresse <=0) { $this->app->Tpl->Add('JAVASCRIPT','$(document).ready(function() { if(document.getElementById("adresse"))document.getElementById("adresse").focus(); });'); $this->app->Tpl->Set('MESSAGE',"
Achtung! Dieses Dokument ist mit keiner Kunden-Nr. verlinkt. Bitte geben Sie die Kundennummer an und klicken Sie übernehmen oder Speichern!
"); } $this->app->YUI->AARLGPositionen(); $this->app->erp->CheckBearbeiter($id,"gutschrift"); $this->app->erp->CheckBuchhaltung($id,"gutschrift"); $this->app->erp->GutschriftNeuberechnen($id); $this->app->erp->DisableVerband(); //$this->GutschriftMiniDetail(MINIDETAIL,false); $this->app->Tpl->Set('ICONMENU',$this->GutschriftIconMenu($id)); $this->app->Tpl->Set('ICONMENU2',$this->GutschriftIconMenu($id,2)); $belegnr = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1"); $nummer = $this->app->DB->Select("SELECT belegnr FROM gutschrift WHERE id='$id' LIMIT 1"); $kundennummer = $this->app->DB->Select("SELECT kundennummer FROM gutschrift WHERE id='$id' LIMIT 1"); $adresse = $this->app->DB->Select("SELECT adresse FROM gutschrift WHERE id='$id' LIMIT 1"); $status= $this->app->DB->Select("SELECT status FROM gutschrift WHERE id='$id' LIMIT 1"); $schreibschutz= $this->app->DB->Select("SELECT schreibschutz FROM gutschrift WHERE id='$id' LIMIT 1"); if($status !== 'angelegt' && $status !== 'angelegta' && $status !== 'a') { $Brief = new Briefpapier($this->app); if($Brief->zuArchivieren($id, 'gutschrift')) { $this->app->Tpl->Add('MESSAGE',"
Die Gutschrift ist noch nicht archiviert! Bitte versenden oder manuell archivieren.
"); } elseif(!$this->app->DB->Select("SELECT versendet FROM gutschrift WHERE id = '$id' LIMIT 1")) { $this->app->Tpl->Add('MESSAGE',"
Die Gutschrift wurde noch nicht versendet!
"); } } if($schreibschutz!='1' && $this->app->erp->RechteVorhanden('gutschrift','schreibschutz')){ $this->app->erp->AnsprechpartnerButton($adresse); } if($nummer!='') { $this->app->Tpl->Set('NUMMER',$nummer); if($this->app->erp->RechteVorhanden('adresse','edit')){ $this->app->Tpl->Set('KUNDE', "   Kd-Nr. " . $kundennummer . ""); } else{ $this->app->Tpl->Set('KUNDE', '   Kd-Nr. ' . $kundennummer); } } $zahlungsweise = $this->app->DB->Select("SELECT zahlungsweise FROM gutschrift WHERE id='$id' LIMIT 1"); if($this->app->Secure->GetPOST('zahlungsweise')!='') { $zahlungsweise = $this->app->Secure->GetPOST('zahlungsweise'); } $zahlungsweise = strtolower($zahlungsweise); $this->app->Tpl->Set('RECHNUNG',"none"); $this->app->Tpl->Set('UEBERWEISUNG',"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") $this->app->Tpl->Set('RECHNUNG',""); if($zahlungsweise=="paypal") $this->app->Tpl->Set('PAYPAL',""); if($zahlungsweise=="ueberweisung") $this->app->Tpl->Set('UEBERWEISUNG',""); 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',""); if($schreibschutz=="1" && $this->app->erp->RechteVorhanden("gutschrift","schreibschutz")) { $this->app->Tpl->Set('MESSAGE',"
Diese Gutschrift ist schreibgeschützt und darf daher nicht mehr bearbeitet werden! 
"); // $this->app->erp->CommonReadonly(); } if($schreibschutz=="1") { $this->app->erp->CommonReadonly(); } $rechnungid = $this->app->DB->Select("SELECT rechnungid FROM gutschrift WHERE id='$id' LIMIT 1"); $rechnungid = $this->app->DB->Select("SELECT id FROM rechnung WHERE id='$rechnungid' AND belegnr!='' LIMIT 1"); if($status=="") $this->app->DB->Update("UPDATE gutschrift SET status='angelegt' WHERE id='$id' LIMIT 1"); if($schreibschutz != '1'){ if($this->app->erp->Firmendaten("schnellanlegen") == "1"){ $this->app->Tpl->Set('BUTTON_UEBERNEHMEN', ' '); }else{ $this->app->Tpl->Set('BUTTON_UEBERNEHMEN', ' '); } } // immer wenn sich der lieferant genändert hat standartwerte setzen if($this->app->Secure->GetPOST("adresse")!="") { $tmp = $this->app->Secure->GetPOST("adresse"); $kundennummer = $this->app->erp->FirstTillSpace($tmp); $filter_projekt = $this->app->DB->Select("SELECT projekt FROM gutschrift 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"); $name = substr($tmp,6); $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" && $schreibschutz != '1') // nur neuladen bei tastendruck auf uebernehmen // FRAGEN!!!! { $this->app->erp->LoadGutschriftStandardwerte($id,$adresse); $this->app->erp->GutschriftNeuberechnen($id); header("Location: index.php?module=gutschrift&action=edit&id=$id"); exit; } } // optional rechnungen als bezahlt markieren wenn es jetzt gutschriften gibt $land = $this->app->DB->Select("SELECT land FROM gutschrift WHERE id='$id' LIMIT 1"); $ustid = $this->app->DB->Select("SELECT ustid FROM gutschrift WHERE id='$id' LIMIT 1"); $ust_befreit = $this->app->DB->Select("SELECT ust_befreit FROM gutschrift WHERE id='$id' LIMIT 1"); if($ust_befreit) { $this->app->Tpl->Set('USTBEFREIT',"
EU-Lieferung
(bereits geprüft!)
"); } else if($land!=='DE' && $ustid!='') { $this->app->Tpl->Set('USTBEFREIT',"
EU-Lieferung
(Fehler bei Prüfung!)
"); } // easy table mit arbeitspaketen YUI als template $table = new EasyTable($this->app); $table->Query("SELECT bezeichnung as artikel, nummer as Nummer, menge, vpe as VPE, FORMAT(preis,4) as preis FROM gutschrift_position WHERE gutschrift='$id'",0,''); $table->DisplayNew('POSITIONEN','Preis','noAction'); /* $table->Query("SELECT nummer as Nummer, menge,vpe as VPE, FORMAT(preis,4) as preis, FORMAT(menge*preis,4) as gesamt FROM gutschrift_position WHERE gutschrift='$id'"); $table->DisplayNew(POSITIONEN,"Preis","noAction"); */ $summe = $this->app->DB->Select("SELECT FORMAT(SUM(menge*preis),2) FROM gutschrift_position WHERE gutschrift='$id'"); $waehrung = $this->app->DB->Select("SELECT waehrung FROM gutschrift_position WHERE gutschrift='$id' LIMIT 1"); if($summe > 0) $this->app->Tpl->Add('POSITIONEN', "
Gesamtsumme: $summe $waehrung  
"); $status= $this->app->DB->Select("SELECT status FROM gutschrift WHERE id='$id' LIMIT 1"); // $this->app->Tpl->Set(STATUS,""); $this->app->Tpl->Set('STATUS',""); $internet = $this->app->DB->Select("SELECT a.internet FROM gutschrift g LEFT JOIN rechnung r ON r.id=g.rechnungid LEFT JOIN auftrag a ON a.id=r.auftragid WHERE g.id='$id' AND g.id > 0 LIMIT 1"); if($internet!="") { $this->app->Tpl->Set('INTERNET',"Internet:"); } $this->app->Tpl->Set('AKTIV_TAB1','selected'); $sollExtSoll = $this->app->DB->SelectRow( sprintf( "SELECT extsoll, soll FROM gutschrift WHERE id = %d AND schreibschutz = 0 AND status = 'versendet' AND extsoll <> 0", $id ) ); if(!empty($sollExtSoll['extsoll']) && $sollExtSoll['extsoll'] == $sollExtSoll['soll']) { $sollExtSoll['soll'] = $this->app->DB->Select( sprintf( 'SELECT ROUND(SUM(`umsatz_brutto_gesamt`),2) FROM `gutschrift_position` WHERE `gutschrift` = %d ', $id ) ); } if(!empty($sollExtSoll) && $sollExtSoll['soll'] != $sollExtSoll['extsoll']) { $extsoll = $sollExtSoll['extsoll']; $this->app->Tpl->Add( 'MESSAGE','
Der Sollbetrag stimmt nicht mehr mit ursprünglich festgelegten Betrag '. number_format($extsoll,2,',','.'). ' überein
' ); } parent::GutschriftEdit(); if($id > 0 && $this->app->DB->Select( sprintf( 'SELECT id FROM gutschrift WHERE schreibschutz =1 AND zuarchivieren = 1 AND id = %d', $id ) ) ) { $this->app->erp->PDFArchivieren('gutschrift', $id, true); } $this->app->erp->MessageHandlerStandardForm(); if($this->app->Secure->GetPOST('weiter')!='') { $this->app->Location->execute('index.php?module=gutschrift&action=positionen&id='.$id); } $this->GutschriftMenu(); } public function GutschriftCreate() { $this->app->erp->MenuEintrag('index.php?module=gutschrift&action=list','Zurück zur Übersicht'); $anlegen = $this->app->Secure->GetGET('anlegen'); if($anlegen!='1' && $this->app->erp->Firmendaten('schnellanlegen')=='1') { $this->app->Location->execute('index.php?module=gutschrift&action=create&anlegen=1'); } if($anlegen != '') { $id = $this->app->erp->CreateGutschrift(); $this->app->Location->execute('index.php?module=gutschrift&action=edit&id='.$id); } $this->app->Tpl->Set('MESSAGE',"
Möchten Sie eine Gutschrift jetzt anlegen?  

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

Gutschriften in Bearbeitung

Offene Aufträge, die durch andere Mitarbeiter in Bearbeitung sind.

[AUFTRAGE]"); $this->app->Tpl->Set('AKTIV_TAB1',"selected"); $table = new EasyTable($this->app); $table->Query("SELECT DATE_FORMAT(datum,'%d.%m.%y') as vom, if(belegnr!='',belegnr,'ohne Nummer') as beleg, name, status, id FROM gutschrift WHERE status='angelegt' order by datum DESC, id DESC"); $table->DisplayNew('AUFTRAGE', " "); $this->app->Tpl->Set('TABTEXT','Gutschrift anlegen'); $this->app->Tpl->Parse('PAGE','tabview.tpl'); } public function GutschriftList() { $this->app->Tpl->Set('UEBERSCHRIFT', 'Gutschriften'); if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('gutschrift', 'edit')) { $drucker = $this->app->Secure->GetPOST('seldrucker'); $aktion = $this->app->Secure->GetPOST('sel_aktion'); $auswahl = $this->app->Secure->GetPOST('auswahl'); if($drucker > 0) { $this->app->erp->BriefpapierHintergrundDisable($drucker); } if(is_array($auswahl)) { $ids = []; foreach($auswahl as $id) { $id = (int)$id; if($id > 0) { $ids[] = $id; } } $ids = array_unique($ids); switch($aktion) { case 'erledigtam': if(!empty($ids)){ $this->app->DB->Update( sprintf( "UPDATE `gutschrift` SET `manuell_vorabbezahlt`=CURDATE(), `manuell_vorabbezahlt_hinweis`=CONCAT(`manuell_vorabbezahlt_hinweis`,'\r\n','Erledigt am manuell auf %s gesetzt') WHERE `id` IN (%s)", date('d.m.Y'), implode(',', $ids) ) ); } break; case 'offen': if(!empty($ids)) { $this->app->DB->Update( sprintf( "UPDATE `gutschrift` SET `manuell_vorabbezahlt` = NULL, `manuell_vorabbezahlt_hinweis`=CONCAT(`manuell_vorabbezahlt_hinweis`,'\r\n','Erledigt am manuell zurückgesetzt am %s') WHERE `id` IN (%s)", date('d.m.Y'), implode(',', $ids) ) ); } break; case 'mail': $returnOrders = empty($ids)?[]:$this->app->DB->SelectArr( sprintf( "SELECT * FROM `gutschrift` WHERE `id` IN (%s)", implode(',', $ids) ) ); if(empty($returnOrders)) { $returnOrders = []; } foreach($returnOrders as $returnOrder) { $v = $returnOrder['id']; $email = (string)$returnOrder['email']; $adresse = $returnOrder['adresse']; $projekt = $returnOrder['projekt']; $name = $returnOrder['name']; $sprache = $returnOrder['sprache']; if($sprache=='' && $adresse > 0){ $sprache = $this->app->DB->Select( sprintf( 'SELECT `sprache` FROM `adresse` WHERE `id`= %d AND `geloescht` = 0 LIMIT 1', $adresse ) ); } if($sprache=='') { $sprache='de'; } $emailtext = $this->app->erp->Geschaeftsbriefvorlage($sprache,'gutschrift',$projekt,$name,$v); if($email === '' && $adresse > 0) { $email = (string)$this->app->DB->Select( sprintf( "SELECT `email` FROM `adresse` WHERE `id` = %d LIMIT 1", $adresse ) ); } if($email !== '') { $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; if(class_exists('GutschriftPDFCustom')) { $Brief = new GutschriftPDFCustom($this->app,$projekt); } else{ $Brief = new GutschriftPDF($this->app,$projekt); } $Brief->GetGutschrift($v); $_tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); unlink($_tmpfile); $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; if(class_exists('GutschriftPDFCustom')) { $Brief = new GutschriftPDFCustom($this->app,$projekt); } else{ $Brief = new GutschriftPDF($this->app,$projekt); } $Brief->GetGutschrift($v); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); $fileid = $this->app->erp->CreateDatei( $Brief->filename,'gutschrift','','',$tmpfile,$this->app->User->GetName() ); $this->app->erp->AddDateiStichwort($fileid,'gutschrift','gutschrift',$v); $this->app->erp->DokumentSend( $adresse,'gutschrift', $v, 'email',$emailtext['betreff'],$emailtext['text'], [$tmpfile],'','',$projekt,$email, $name ); $ansprechpartner = $name.' <'.$email.'>'; $this->app->DB->Insert("INSERT INTO dokumente_send (id,dokument,zeit,bearbeiter,adresse,parameter,art,betreff,text,projekt,ansprechpartner,versendet,dateiid) VALUES ('','gutschrift',NOW(),'".$this->app->DB->real_escape_string($this->app->User->GetName())."', '$adresse','$v','email','$betreff','$text','$projekt','$ansprechpartner',1,'$fileid')"); $tmpid = $this->app->DB->GetInsertID(); unlink($tmpfile); $this->app->DB->Update("UPDATE gutschrift SET versendet=1, versendet_am=NOW(), versendet_per='email',versendet_durch='".$this->app->DB->real_escape_string($this->app->User->GetName())."',schreibschutz='1' WHERE id='$v' LIMIT 1"); $this->app->erp->GutschriftProtokoll($v,'Gutschrift versendet'); } } break; case 'versendet': $returnOrders = empty($ids)?[]: $this->app->DB->SelectPairs( sprintf( 'SELECT `id`, `projekt` FROM `gutschrift` WHERE `id` IN (%s)', implode(',', $ids) ) ); foreach($returnOrders as $returnOrderId => $projectId) { if(class_exists('GutschriftPDFCustom')) { $Brief = new GutschriftPDFCustom($this->app,$projectId); } else{ $Brief = new GutschriftPDF($this->app,$projectId); } $Brief->GetGutschrift($returnOrderId); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); $this->app->erp->GutschriftProtokoll($returnOrderId, 'Gutschrift versendet'); $this->app->DB->Update( sprintf( "UPDATE `gutschrift` SET `schreibschutz`=1, `versendet` = 1, `status`='versendet' WHERE `id` = %d LIMIT 1", $returnOrderId ) ); @unlink($tmpfile); } break; case 'drucken': if($drucker && !empty($ids)) { $returnOrders = $this->app->DB->SelectPairs( sprintf( 'SELECT `id`, `projekt` FROM `gutschrift` WHERE `id` IN (%s)', implode(',', $ids) ) ); foreach($returnOrders as $returnOrderId => $projekt) { if(class_exists('GutschriftPDFCustom')) { $Brief = new GutschriftPDFCustom($this->app,$projekt); } else{ $Brief = new GutschriftPDF($this->app,$projekt); } $Brief->GetGutschrift($returnOrderId); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); $this->app->printer->Drucken($drucker,$tmpfile); $doctype = 'gutschrift'; $adressId = $this->app->DB->Select("SELECT adresse FROM gutschrift WHERE id = '$returnOrderId' LIMIT 1"); $this->app->erp->RunHook('dokumentsend_ende', 5, $doctype, $returnOrderId, $projekt, $adressId, $aktion); $this->app->erp->GutschriftProtokoll($returnOrderId,'Gutschrift versendet'); $this->app->DB->Update( sprintf( "UPDATE `gutschrift` SET `schreibschutz` = 1, `versendet` = 1, `status`='versendet' WHERE `id` = %d LIMIT 1", $returnOrderId ) ); } } break; case 'pdf': $tmpfile = []; $returnOrders = empty($ids)?[]: $this->app->DB->SelectPairs( sprintf( 'SELECT `id`, `projekt` FROM `gutschrift` WHERE `id` IN (%s)', implode(',', $ids) ) ); foreach($returnOrders as $returnOrderId => $projectId) { if(class_exists('GutschriftPDFCustom')) { $Brief = new GutschriftPDFCustom($this->app,$projectId); } else{ $Brief = new GutschriftPDF($this->app,$projectId); } $Brief->GetGutschrift($returnOrderId); $tmpfile[] = $Brief->displayTMP(); } 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'); $backurl = $this->app->erp->base64_url_decode($backurl); $this->app->erp->MenuEintrag('index.php?module=gutschrift&action=list','Übersicht'); $this->app->erp->MenuEintrag('index.php?module=gutschrift&action=create','Neue Gutschrift anlegen'); if(strlen($backurl)>5){ $this->app->erp->MenuEintrag((string)$backurl, 'Zurück zur Übersicht'); } else{ $this->app->erp->MenuEintrag('index.php', 'Zurück zur Übersicht'); } $zahlungsweisen = $this->app->DB->SelectArr(' SELECT `zahlungsweise` FROM `gutschrift` GROUP BY `zahlungsweise` '); $zahlungsweiseStr = ''; if ($zahlungsweisen) { foreach ($zahlungsweisen as $zahlungsweise) { if (empty($zahlungsweise['zahlungsweise'])) { continue; } $zahlungsweiseStr .= ''; } } $status = $this->app->DB->SelectArr(' SELECT status FROM gutschrift GROUP BY status '); $statusStr = ''; if ($status) { foreach ($status as $statusE) { if (empty($statusE['status'])) { continue; } $statusStr .= ''; } } $versandarten = $this->app->DB->SelectArr(' SELECT versandart FROM gutschrift 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('gutschriftnummer', 'gutschrift', 1); $this->app->YUI->AutoComplete('artikel', 'artikelnummer', 1); $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','gutschrift_table_filter.tpl'); $this->app->Tpl->Set('AKTIV_TAB1','selected'); $this->app->Tpl->Set('INHALT',''); $this->app->YUI->TableSearch('TAB2','gutschriftenoffene'); $this->app->YUI->TableSearch('TAB1','gutschriften'); $this->app->YUI->TableSearch('TAB3','gutschrifteninbearbeitung'); $this->app->Tpl->Set( 'SELDRUCKER', $this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker')) ); $this->app->Tpl->Parse('PAGE','gutschriftuebersicht.tpl'); } /** * @param int $id * * @return int|string|null */ public function CopyGutschrift($id) { $this->app->DB->Insert('INSERT INTO gutschrift (id) VALUES (NULL)'); $newid = $this->app->DB->GetInsertID(); $arr = $this->app->DB->SelectRow("SELECT NOW() as datum,projekt,bodyzusatz,freitext,adresse,name,abteilung,unterabteilung,strasse,adresszusatz,plz,ort,land,ustid,email,telefon,telefax,betreff,kundennummer, bearbeiter,zahlungszieltage,zahlungszieltageskonto,zahlungsweise,ohne_artikeltext,ohne_briefpapier,'angelegt' as status,typ, zahlungszielskonto,ust_befreit,rabatt,rabatt1,rabatt2,rabatt3,rabatt4,rabatt5,gruppe,vertriebid,bearbeiterid,provision,provision_summe,sprache,anzeigesteuer,waehrung,kurs,kostenstelle, firma FROM gutschrift WHERE id='$id' LIMIT 1"); $this->app->DB->LogIfError(); $arr['kundennummer'] = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE id = '".$arr['adresse']."' LIMIT 1"); $arr['bundesstaat'] = $this->app->DB->Select("SELECT bundesstaat FROM gutschrift WHERE id='$id' LIMIT 1"); $this->app->DB->UpdateArr('gutschrift',$newid,'id',$arr, true); $pos = $this->app->DB->SelectArr("SELECT * FROM gutschrift_position WHERE gutschrift='$id'"); $cpos = !empty($pos)?count($pos):0; for($i=0;$i<$cpos;$i++){ $this->app->DB->Insert("INSERT INTO gutschrift_position (gutschrift) VALUES ($newid)"); $newposid = $this->app->DB->GetInsertID(); $pos[$i]['gutschrift']=$newid; $this->app->DB->UpdateArr('gutschrift_position',$newposid,'id',$pos[$i], true); if(is_null($pos[$i]['steuersatz'])){ $this->app->DB->Update("UPDATE gutschrift_position SET steuersatz = null WHERE id = '$newposid' LIMIT 1"); } } $this->app->erp->CheckFreifelder('gutschrift',$newid); $this->app->erp->CopyBelegZwischenpositionen('gutschrift',$id,'gutschrift',$newid); $this->app->erp->LoadSteuersaetzeWaehrung($newid,'gutschrift'); return $newid; } /** * @param int $id * @param int $adresse */ public function LoadGutschriftStandardwerte($id,$adresse) { if($id==0 || $id=='' || $adresse=='' || $adresse=='0') { return; } // standard adresse von lieferant $arr = $this->app->DB->SelectRow( sprintf( "SELECT adr.*,adr.vertrieb as vertriebid, '' as bearbeiter, adr.innendienst as bearbeiterid FROM `adresse` AS `adr` WHERE adr.id= %d AND adr.geloescht=0 LIMIT 1", $adresse ) ); if($arr['bearbeiterid'] <=0 ){ $arr['bearbeiterid'] = $this->app->User->GetAdresse(); } $arr['gruppe'] = $this->app->erp->GetVerband($adresse); $rolle_projekt = $this->app->DB->Select( sprintf( "SELECT ar.parameter FROM `adresse_rolle` AS `ar` WHERE ar.adresse= %d AND ar.subjekt='Kunde' AND ar.objekt='Projekt' AND (IFNULL(ar.bis,'0000-00-00') ='0000-00-00' OR ar.bis <= CURDATE()) LIMIT 1", $adresse ) ); if($rolle_projekt > 0) { $arr['projekt'] = $rolle_projekt; } $field = [ 'gln','anschreiben','name','abteilung','unterabteilung','strasse','adresszusatz','plz','ort','land','ustid', 'email','telefon','telefax','kundennummer','projekt','ust_befreit','gruppe','typ','vertriebid','bearbeiter', 'ansprechpartner','bearbeiterid','titel','lieferbedingung' ]; foreach($field as $key=>$value) { if($value ==='projekt' && $this->app->Secure->POST[$value]!='' && 0) { $uparr[$value] = str_replace("'", ''',$this->app->Secure->POST[$value]); } else { $this->app->Secure->POST[$value] = str_replace("'", ''',$arr[$value]); $uparr[$value] = str_replace("'", ''',$arr[$value]); } } $uparr['adresse'] = $adresse; $uparr['ust_befreit'] = $this->app->erp->AdresseUSTCheck($adresse); $uparr['zahlungsstatusstatus']='offen'; $this->app->DB->UpdateArr('gutschrift',$id,'id',$uparr,true); $uparr=null; //liefernantenvorlage $arr = $this->app->DB->SelectRow("SELECT * FROM adresse WHERE id='$adresse' LIMIT 1"); $field = array('zahlungsweise','zahlungszieltage','zahlungszieltageskonto','zahlungszielskonto','versandart'); // falls von Benutzer projekt ueberladen werden soll $projekt_bevorzugt=$this->app->DB->Select("SELECT projekt_bevorzugen FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1"); if($projekt_bevorzugt=='1') { $uparr['projekt'] = $this->app->DB->Select("SELECT projekt FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1"); $arr['projekt'] = $uparr['projekt']; $this->app->Secure->POST['projekt']=$this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='".$arr['projekt']."' AND id > 0 LIMIT 1"); } $this->app->erp->LoadZahlungsweise($adresse,$arr); $this->app->Secure->POST['zahlungsweise'] = strtolower($arr['zahlungsweise']); $this->app->Secure->POST['zahlungszieltage'] = strtolower($arr['zahlungszieltage']); $this->app->Secure->POST['zahlungszieltageskonto'] = strtolower($arr['zahlungszieltageskonto']); $this->app->Secure->POST['zahlungszielskonto'] = strtolower($arr['zahlungszielskonto']); $this->app->Secure->POST['versandart'] = strtolower($arr['versandart']); if(isset($arr['usereditid'])){ unset($arr['usereditid']); } // Enter the correct billing address into the credit note data before it gets saved. $arr = $this->app->Container->get('CreditNoteAddressService')->applyBillingAddressToCreditNoteArray($id, $arr); $this->app->DB->UpdateArr('gutschrift',$id,'id',$arr,true); $this->app->erp->LoadSteuersaetzeWaehrung($id,'gutschrift'); $this->app->erp->LoadAdresseStandard('gutschrift',$id,$adresse); } /** * @param int $id * * @return int|mixed */ public function GutschriftSaldo($id) { if($id <= 0) { return 0; } $rechnungid = $this->app->DB->Select( sprintf( 'SELECT `rechnungid` FROM `gutschrift` WHERE `id`= %d LIMIT 1', $id ) ); $auftragid = $rechnungid <= 0?0:$this->app->DB->Select( sprintf( 'SELECT `auftragid` FROM `rechnung` WHERE `id`=%d LIMIT 1', $rechnungid ) ); $eingangArr = $this->app->DB->SelectArr( sprintf( "SELECT ko.bezeichnung as konto, DATE_FORMAT(ke.datum,'%%d.%%m.%%Y') as datum, k.id as kontoauszuege, ke.betrag as betrag FROM `kontoauszuege_zahlungseingang` AS `ke` LEFT JOIN `kontoauszuege` AS `k` ON ke.kontoauszuege=k.id LEFT JOIN `konten` AS `ko` ON k.konto=ko.id WHERE (ke.objekt='gutschrift' AND ke.parameter=%d) OR (ke.objekt='auftrag' AND ke.parameter=%d AND ke.parameter>0) OR (ke.objekt='rechnung' AND ke.parameter=%d AND ke.parameter>0)", $id, $auftragid, $rechnungid ) ); $einnahmen = 0; if(!empty($eingangArr)) { foreach($eingangArr AS $eingangRow) { $einnahmen += $eingangRow['betrag']; } } //$gutschriften = $this->app->DB->SelectArr("SELECT belegnr, DATE_FORMAT(datum,'%d.%m.%Y') as datum,soll FROM gutschrift WHERE rechnungid='$id' "); // alt $gutschriften = $this->app->DB->SelectArr( sprintf( "SELECT ro.belegnr, DATE_FORMAT(ro.datum,'%%d.%%m.%%Y') as datum, ro.soll FROM `gutschrift` AS `ro` WHERE ro.`id` = %d ", $id ) ); if(!empty($gutschriften)) { foreach($gutschriften as $gutschriftRow) { $einnahmen += $gutschriftRow['soll']; } } $ausgangArr = $this->app->DB->SelectArr( sprintf( "SELECT ko.bezeichnung as konto, DATE_FORMAT(ke.datum,'%%d.%%m') as datum, ke.betrag as betrag FROM kontoauszuege_zahlungsausgang ke LEFT JOIN kontoauszuege k ON ke.kontoauszuege=k.id LEFT JOIN konten ko ON k.konto=ko.id WHERE (ke.objekt='gutschrift' AND ke.parameter=%d) OR (ke.objekt='rechnung' AND ke.parameter=%d AND ke.parameter>0) OR (ke.objekt='auftrag' AND ke.parameter=%d AND ke.parameter>0)", $id, $rechnungid, $auftragid ) ); $ausgaben = 0; if(!empty($ausgangArr)){ foreach($ausgangArr as $ausgangRow) { $ausgaben += $ausgangRow['betrg']; } } return $einnahmen - $ausgaben; } }