diff --git a/www/lib/class.erpapi.php b/www/lib/class.erpapi.php index d89d9e71..95cdbf7c 100644 --- a/www/lib/class.erpapi.php +++ b/www/lib/class.erpapi.php @@ -31961,7 +31961,8 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert, if($drucker==$this->app->User->GetEmail()) $from_name = $this->app->User->GetName(); else { - $from_name = $this->app->DB->Select("SELECT absendername FROM firmendaten WHERE absendername!='' AND email!='' AND email='$drucker' LIMIT 1"); +// $from_name = $this->app->DB->Select("SELECT absendername FROM firmendaten WHERE absendername!='' AND email!='' AND email='$drucker' LIMIT 1"); + $from_name = $this->app->DB->Select("SELECT wert FROM firmendaten_werte WHERE name = 'absendername' LIMIT 1"); if($from_name=="") $from_name = $this->app->DB->Select("SELECT smtp_fromname FROM emailbackup WHERE smtp_fromname!='' AND smtp_frommail!='' AND smtp_frommail='$drucker' AND geloescht!=1 LIMIT 1"); @@ -39443,9 +39444,11 @@ function Firmendaten($field,$projekt="") $portosorts = null; $cpos = $pos?count($pos):0; - for($i=0;$i<$cpos;$i++){ + + for($i=0;$i<$cpos;$i++){ /* nur lager artikel in den Lieferschein */ - $portoartikel = $portoartikelArr[$pos[$i]]; + + $portoartikel = !empty($portoartikel)?$portoartikelArr[$pos[(int) $i]]:0; if($portoartikel==0) { $this->app->DB->Insert("INSERT INTO lieferschein_position (id) VALUES('')"); $newposid = $this->app->DB->GetInsertID(); diff --git a/www/lib/dokumente/class.briefpapier.php b/www/lib/dokumente/class.briefpapier.php index f9d6c6ee..5910d29a 100644 --- a/www/lib/dokumente/class.briefpapier.php +++ b/www/lib/dokumente/class.briefpapier.php @@ -2900,7 +2900,7 @@ class Briefpapier extends SuperFPDF { // wenn steuerfrei komplett immer 0 steuer anzeigen - $item['tmptax'] = $item['tax'] + 1; + $item['tmptax'] = (float) $item['tax'] + 1; // standard anzeige mit steuer if(!$this->ust_spalteausblende){ diff --git a/www/lib/dokumente/class.rechnung.php b/www/lib/dokumente/class.rechnung.php index 5eece4a4..cf9cd07b 100644 --- a/www/lib/dokumente/class.rechnung.php +++ b/www/lib/dokumente/class.rechnung.php @@ -1,698 +1,698 @@ -app=$app; - //parent::Briefpapier(); - $this->doctype="rechnung"; - $this->doctypeOrig="Rechnung"; - parent::__construct($this->app,$projekt,$styleData); - } - - public function GetRechnung($id,$als="",$doppeltmp=0, $_datum = null) - { - $this->parameter = $als; - if($this->app->erp->Firmendaten("steuerspalteausblenden")=="1") - { - // pruefe ob es mehr als ein steuersatz gibt // wenn ja dann darf man sie nicht ausblenden - $check = $this->app->erp->SteuerAusBeleg($this->doctype,$id); - if(count($check)>1)$this->ust_spalteausblende=false; - else $this->ust_spalteausblende=true; - } - $lvl = null; - $briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden'); - $briefpapier_vertrieb_ausblenden = $this->app->erp->Firmendaten('briefpapier_vertrieb_ausblenden'); - $this->doctypeid=$id; - // $this->setRecipientDB($adresse); - $this->setRecipientLieferadresse($id,"rechnung"); - - $data = $this->app->DB->SelectRow( - "SELECT r.adresse, if(r.auftragid > 0,a.belegnr,r.auftrag) as auftrag, r.buchhaltung, r.bearbeiter, - r.vertrieb, r.lieferschein AS lieferscheinid, r.projekt, DATE_FORMAT(r.datum,'%d.%m.%Y') AS datum, - DATE_FORMAT(r.mahnwesen_datum,'%d.%m.%Y') AS mahnwesen_datum, - DATE_FORMAT(r.lieferdatum,'%d.%m.%Y') AS lieferdatum, r.belegnr, r.bodyzusatz, r.doppel, - r.freitext, r.systemfreitext, r.ustid, r.typ, r.keinsteuersatz, r.soll, r.ist, r.land, - r.zahlungsweise, r.zahlungsstatus, r.zahlungszieltage, r.zahlungszieltageskonto, - r.zahlungszielskonto, r.ohne_briefpapier, r.ihrebestellnummer, r.ust_befreit, r.waehrung, - r.versandart, - DATE_FORMAT(DATE_ADD(r.datum, INTERVAL r.zahlungszieltage DAY),'%d.%m.%Y') AS zahlungdatum, - DATE_FORMAT(DATE_ADD(r.datum, INTERVAL r.zahlungszieltageskonto DAY),'%d.%m.%Y') AS zahlungszielskontodatum, - r.abweichendebezeichnung AS rechnungersatz, - r.kundennummer, r.sprache, r.schreibschutz, r.soll AS gesamtsumme, - DATE_FORMAT(r.datum,'%Y%m%d') as datum2, r.telefon, r.email - FROM rechnung r LEFT JOIN auftrag a ON a.id=r.auftragid WHERE r.id='$id' LIMIT 1" - ); - extract($data,EXTR_OVERWRITE); - $adresse = $data['adresse']; - $auftrag = $data['auftrag']; - $buchhaltung = $data['buchhaltung']; - $bearbeiter = $data['bearbeiter']; - $vertrieb = $data['vertrieb']; - $lieferscheinid = $data['lieferscheinid']; - $projekt = $data['projekt']; - $datum = $data['datum']; - $mahnwesen_datum = $data['mahnwesen_datum']; - $lieferdatum = $data['lieferdatum']; - $belegnr = $data['belegnr']; - $bodyzusatz = $data['bodyzusatz']; - $doppel = $data['doppel']; - $freitext = $data['freitext']; - $systemfreitext = $data['systemfreitext']; - $ustid = $data['ustid']; - $typ = $data['typ']; - $keinsteuersatz = $data['keinsteuersatz']; - $soll = $data['soll']; - $ist = $data['ist']; - $soll = $data['soll']; - $land = $data['land']; - $zahlungsweise = $data['zahlungsweise']; - $zahlungsstatus = $data['zahlungsstatus']; - $zahlungszieltage = $data['zahlungszieltage']; - $zahlungszieltageskonto = $data['zahlungszieltageskonto']; - $zahlungszielskonto = $data['zahlungszielskonto']; - $versandart = $data['versandart']; - $zahlungdatum = $data['zahlungdatum']; - $zahlungszielskontodatum = $data['zahlungszielskontodatum']; - - $ihrebestellnummer = $data['ihrebestellnummer']; - $ust_befreit = $data['ust_befreit']; - $waehrung = $data['waehrung']; - $ohne_briefpapier = $data['ohne_briefpapier']; - - $rechnungersatz = $data['rechnungersatz']; - $kundennummer = $data['kundennummer']; - $sprache = $data['sprache']; - $schreibschutz = $data['schreibschutz']; - $gesamtsumme = $data['gesamtsumme']; - $datum2 = $data['datum2']; - $email = $data['email']; - $telefon = $data['telefon']; - - $lieferschein = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferscheinid' LIMIT 1"); - - if(empty($als) || $als === 'doppel') { - $rechnungsnummeranzeigen = false; - } - elseif(!empty($belegnr)){ - $rechnungsnummeranzeigen = true; - } - $projektabkuerzung = $this->app->DB->Select(sprintf('SELECT abkuerzung FROM projekt WHERE id = %d', $projekt)); - if(empty($kundennummer)) { - $kundennummer = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE id='$adresse' LIMIT 1"); - } - if(empty($sprache)) { - $sprache = $this->app->DB->Select("SELECT sprache FROM adresse WHERE id='$adresse' LIMIT 1"); - } - - $trackingnummer = $this->app->DB->Select("SELECT tracking FROM versand WHERE rechnung='$id' LIMIT 1"); - - $this->app->erp->BeschriftungSprache($sprache); - if($waehrung) { - $this->waehrung = $waehrung; - } - if($doppeltmp == 1) { - $doppel = $doppeltmp; - } - $this->sprache = $sprache; - $this->projekt = $projekt; - $this->anrede = $typ; - - $ihrebestellnummer = $this->app->erp->ReadyForPDF($ihrebestellnummer); - $bearbeiter = $this->app->erp->ReadyForPDF($bearbeiter); - $vertrieb = $this->app->erp->ReadyForPDF($vertrieb); - - if($ohne_briefpapier=="1") - { - $this->logofile = ""; - $this->briefpapier=""; - $this->briefpapier2=""; - } - - if($zahlungszieltageskonto<=0) - $zahlungszielskontodatum = $zahlungdatum; - - if(!$this->app->erp->RechnungMitUmsatzeuer($id)){ - $this->ust_befreit=true; - } - - $zahlungsweisetext = $this->app->erp->Zahlungsweisetext("rechnung",$id); - - - if($doppel==1) $als = "doppel"; - - if($belegnr=="" || $belegnr=="0") $belegnr = "- ".$this->app->erp->Beschriftung("dokument_entwurf"); - else { - if($doppel==1 || $als=="doppel") - $belegnr .= " (".$this->app->erp->Beschriftung("dokument_rechnung_kopie").")"; - } - - $posanzeigen = true; - if($als=="zahlungserinnerung") - { - $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_zahlungserinnerung")." ".(is_null($_datum)?$mahnwesen_datum:$_datum); - if($this->app->erp->GetKonfiguration("mahnwesen_ze_pos") === '0')$posanzeigen = false; - } - else if($als=="mahnung1") - { - $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_mahnung1")." ".(is_null($_datum)?$mahnwesen_datum:$_datum); - if($this->app->erp->GetKonfiguration("mahnwesen_1_pos") === '0')$posanzeigen = false; - } - else if($als=="mahnung2") - { - $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_mahnung2")." ".(is_null($_datum)?$mahnwesen_datum:$_datum); - if($this->app->erp->GetKonfiguration("mahnwesen_2_pos") === '0')$posanzeigen = false; - } - else if($als=="mahnung3") - { - $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_mahnung3")." ".(is_null($_datum)?$mahnwesen_datum:$_datum); - if($this->app->erp->GetKonfiguration("mahnwesen_3_pos") === '0')$posanzeigen = false; - } - else if($als=="inkasso") - { - $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_mahnunginkasso")." ".(is_null($_datum)?$mahnwesen_datum:$_datum); - if($this->app->erp->GetKonfiguration("mahnwesen_inkasso_pos") === '0')$posanzeigen = false; - } - else - { - if($rechnungersatz) - $this->doctypeOrig=($this->app->erp->Beschriftung("bezeichnungrechnungersatz")?$this->app->erp->Beschriftung("bezeichnungrechnungersatz"):$this->app->erp->Beschriftung("dokument_rechnung"))." $belegnr"; - else - $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_rechnung")." $belegnr"; - } - - - - $this->zusatzfooter = " (RE$belegnr)"; - - $rechnung = "-"; - if($kundennummer=="") $kundennummer= "-"; - - if($auftrag=="0") $auftrag = "-"; - if($lieferschein=="0") $lieferschein= "-"; - if($lieferschein=="") $lieferschein= "-"; - - $datumlieferschein = $this->app->DB->Select("SELECT DATE_FORMAT(datum, '%d.%m.%Y') - FROM lieferschein WHERE id='$lieferscheinid' LIMIT 1"); - - if($datumlieferschein=="00.00.0000") $datumlieferschein = $datum; - if($lieferdatum=="00.00.0000") $lieferdatum = $datum; - if($mahnwesen_datum=="00.00.0000") $mahnwesen_datum = ""; - - $bearbeiteremail = $this->app->DB->Select("SELECT b.email FROM rechnung r LEFT JOIN adresse b ON b.id=r.bearbeiterid WHERE r.id='$id' LIMIT 1"); - $bearbeitertelefon = $this->app->DB->Select("SELECT b.telefon FROM rechnung r LEFT JOIN adresse b ON b.id=r.bearbeiterid WHERE r.id='$id' LIMIT 1"); - - //* start - if($rechnungsnummeranzeigen) - { - $sCD = array($this->app->erp->Beschriftung("dokument_rechnung")=>$belegnr); - }else{ - $sCD = array(); - } - - /** @var \Xentral\Modules\Company\Service\DocumentCustomizationService $service */ - $service = $this->app->Container->get('DocumentCustomizationService'); - if($block = $service->findActiveBlock('corr', 'invoice', $projekt)) { - $sCD = $service->parseBlockAsArray($this->getLanguageCodeFrom($this->sprache),'corr', 'invoice',[ - 'RECHNUNGSNUMMER' => $belegnr, - 'DATUM' => $datum, - 'KUNDENNUMMER' => $kundennummer, - 'BEARBEITER' => $bearbeiter, - 'BEARBEITEREMAIL' => $bearbeiteremail, - 'BEARBEITERTELEFON' => $bearbeitertelefon, - 'VERTRIEB' => $vertrieb, - 'PROJEKT' => $projektabkuerzung, - 'IHREBESTELLNUMMER' => $ihrebestellnummer, - 'AUFTRAGSNUMMER' => $auftrag, - 'LIEFERSCHEINNUMMER' => $lieferschein, - 'LIEFERSCHEINDATUM' => $datumlieferschein, - 'EMAIL' => $email, - 'TELEFON' => $telefon - ], $projekt); - if(!empty($sCD)) { - switch($block['fontstyle']) { - case 'f': - $this->setBoldCorrDetails($sCD); - break; - case 'i': - $this->setItalicCorrDetails($sCD); - break; - case 'fi': - $this->setItalicBoldCorrDetails($sCD); - break; - default: - $this->setCorrDetails($sCD, true); - break; - } - } - } - else{ - if($briefpapier_bearbeiter_ausblenden || $briefpapier_vertrieb_ausblenden) { - if($lieferschein!='-') { - if($auftrag!="-") { - $sCD = array_merge($sCD, array($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_rechnungsdatum")=>$datum,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer")=>$ihrebestellnummer, - $this->app->erp->Beschriftung("dokument_lieferschein")=>$lieferschein,$this->app->erp->Beschriftung("dokument_lieferdatum")=>$datumlieferschein - )); - } - else { - $sCD = array_merge($sCD, array($this->app->erp->Beschriftung("dokument_rechnungsdatum")=>$datum,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer")=>$ihrebestellnummer, - $this->app->erp->Beschriftung("dokument_lieferschein")=>$lieferschein,$this->app->erp->Beschriftung("dokument_lieferdatum")=>$datumlieferschein - )); - } - } - else { - if($auftrag!='-') { - $sCD = array_merge($sCD, array($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_rechnungsdatum")=>$datum,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer")=>$ihrebestellnummer, - $this->app->erp->Beschriftung("dokument_lieferdatum")=>$lieferdatum - )); - } - else { - $sCD = array_merge($sCD, array($this->app->erp->Beschriftung("dokument_rechnungsdatum")=>$datum,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer")=>$ihrebestellnummer, - $this->app->erp->Beschriftung("dokument_lieferdatum")=>$lieferdatum, - $this->app->erp->Beschriftung("dokument_ansprechpartner")=>$buchhaltung - )); - } - } - if(!$briefpapier_bearbeiter_ausblenden) { - if($bearbeiter) { - $sCD[$this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter")] = $bearbeiter; - } - } - elseif(!$briefpapier_vertrieb_ausblenden) { - if($vertrieb)$sCD[$this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb")] = $vertrieb; - } - $this->setCorrDetails($sCD); - } - else { - if($vertrieb!=$bearbeiter) { - if($lieferschein!='-') { - if($auftrag!='-'){ - $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_auftrag") => $auftrag, $this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, - $this->app->erp->Beschriftung("dokument_lieferschein") => $lieferschein, $this->app->erp->Beschriftung("dokument_lieferdatum") => $datumlieferschein, - $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb - ))); - } - else{ - $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, - $this->app->erp->Beschriftung("dokument_lieferschein") => $lieferschein, $this->app->erp->Beschriftung("dokument_lieferdatum") => $datumlieferschein, - $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb - ))); - } - } - else { - if($auftrag!='-') { - $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_auftrag") => $auftrag, $this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, - $this->app->erp->Beschriftung("dokument_lieferdatum") => $lieferdatum, - $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb - ))); - } - else { - $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, - $this->app->erp->Beschriftung("dokument_lieferdatum") => $lieferdatum, - $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb - ))); - } - } - //*ende hack - } else { - //start hack - if($lieferschein!='-') { - if($auftrag!='-') { - $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_auftrag") => $auftrag, $this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, - $this->app->erp->Beschriftung("dokument_lieferschein") => $lieferschein, $this->app->erp->Beschriftung("dokument_lieferdatum") => $datumlieferschein, - $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter - ))); - } - else{ - $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, - $this->app->erp->Beschriftung("dokument_lieferschein") => $lieferschein, $this->app->erp->Beschriftung("dokument_lieferdatum") => $datumlieferschein, - $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter - ))); - } - } - else { - if($auftrag!='-') { - $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_auftrag") => $auftrag, $this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, - $this->app->erp->Beschriftung("dokument_lieferdatum") => $lieferdatum, - $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter - ))); - } - else { - $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, - $this->app->erp->Beschriftung("dokument_lieferdatum") => $lieferdatum, - $this->app->erp->Beschriftung("dokument_ansprechpartner") => $buchhaltung - ))); - } - } - } - } - } - - if($keinsteuersatz!="1") - { - if($ust_befreit!=0) $this->ust_befreit=true; - if($keinsteuersatz!="1"){ - if($ust_befreit==2)//$this->app->erp->Export($land)) - $steuer = $this->app->erp->Beschriftung("export_lieferung_vermerk"); - else { - if($ust_befreit==1 && $ustid!="")//$this->app->erp->IstEU($land)) - $steuer = $this->app->erp->Beschriftung("eu_lieferung_vermerk"); - } - - $kennungustid = substr(strtoupper($ustid),0,2); - if(($kennungustid!=strtoupper($land)) && $kennungustid!="" && $this->app->erp->IsEU($kennungustid)) - { - $steuer = str_replace('{LAND}',$kennungustid,$steuer); - } - else { - $steuer = str_replace('{LAND}',$land,$steuer); - } - - $steuer = str_replace('{USTID}',$ustid,$steuer); - } - } - - - - if($als!="" && $als!="doppel") - { - $body = $this->app->erp->MahnwesenBody($id,$als,$_datum); - $footer =$this->app->erp->ParseUserVars("rechnung",$id, $this->app->erp->Beschriftung("rechnung_footer")); - } - else { - $body = $this->app->erp->Beschriftung("rechnung_header"); - if($bodyzusatz!="") $body=$body."\r\n".$bodyzusatz; - $body = $this->app->erp->ParseUserVars("rechnung",$id,$body); - - if ($versandart!="" && $trackingnummer!="" && $this->app->erp->Firmendaten("festetrackingnummer")=="1"){ - $versandinfo = "$versandart: $trackingnummer\r\n"; - }else{ $versandinfo ="";} - - - if($systemfreitext!="") $systemfreitext = "\r\n\r\n".$systemfreitext; - - if($this->app->erp->Firmendaten("footer_reihenfolge_rechnung_aktivieren")=="1") - { - $footervorlage = $this->app->erp->Firmendaten("footer_reihenfolge_rechnung"); - if($footervorlage=="") - $footervorlage = "{FOOTERVERSANDINFO}{FOOTERFREITEXT}\r\n{FOOTERTEXTVORLAGERECHNUNG}\r\n{FOOTERSTEUER}\r\n{FOOTERZAHLUNGSWEISETEXT}{FOOTERSYSTEMFREITEXT}"; - - $footervorlage = str_replace('{FOOTERVERSANDINFO}',$versandinfo,$footervorlage); - $footervorlage = str_replace('{FOOTERFREITEXT}',$freitext,$footervorlage); - $footervorlage = str_replace('{FOOTERTEXTVORLAGERECHNUNG}',$this->app->erp->Beschriftung("rechnung_footer"),$footervorlage); - $footervorlage = str_replace('{FOOTERSTEUER}',$steuer,$footervorlage); - $footervorlage = str_replace('{FOOTERZAHLUNGSWEISETEXT}',$zahlungsweisetext,$footervorlage); - $footervorlage = str_replace('{FOOTERSYSTEMFREITEXT}',$systemfreitext,$footervorlage); - $footervorlage = $this->app->erp->ParseUserVars("rechnung",$id,$footervorlage); - $footer = $footervorlage; - } else { - $footer = $versandinfo."$freitext"."\r\n".$this->app->erp->ParseUserVars("rechnung",$id,$this->app->erp->Beschriftung("rechnung_footer"). - "\r\n$steuer\r\n$zahlungsweisetext").$systemfreitext; - } - } - - $this->setTextDetails(array( - "body"=>$body, - "footer"=>$footer)); - - $artikel = $this->app->DB->SelectArr("SELECT * FROM rechnung_position WHERE rechnung='$id' ORDER By sort"); - $this->app->erp->RunHook('rechnungpdf_getrechnung', 2, $id, $artikel); - $summe_rabatt = $this->app->DB->Select("SELECT SUM(rabatt) FROM rechnung_position WHERE rechnung='$id'"); - if($summe_rabatt <> 0) $this->rabatt=1; - - if($this->app->erp->Firmendaten("modul_verband")=="1") $this->rabatt=1; - $steuersatzV = $this->app->erp->GetSteuersatzNormal(false,$id,"rechnung"); - $steuersatzR = $this->app->erp->GetSteuersatzErmaessigt(false,$id,"rechnung"); - $gesamtsteuern = 0; - $mitumsatzsteuer = $this->app->erp->RechnungMitUmsatzeuer($id); - - $gesamtsumme = 0; - $summe = 0; - $belege_subpositionenstuecklisten = $this->app->erp->Firmendaten('belege_subpositionenstuecklisten'); - $belege_stuecklisteneinrueckenmm = $this->app->erp->Firmendaten('belege_stuecklisteneinrueckenmm'); - if(!$schreibschutz)$gesamtsumme = 0; - $lastausblenden = false; - foreach($artikel as $key=>$value) - { - $artikel[$key]['anzahlunterartikel'] = 0; - $artikel[$key]['keineeinzelartikelanzeigen'] = $this->app->DB->Select("SELECT keineeinzelartikelanzeigen FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); - if($lastausblenden === false) - { - if($artikel[$key]['keineeinzelartikelanzeigen'])$lastausblenden = $key; - }else{ - if($value['explodiert_parent_artikel'] > 0) - { - $artikel[$lastausblenden]['anzahlunterartikel']++; - }elseif($artikel[$key]['keineeinzelartikelanzeigen']){ - $lastausblenden = $key; - }else $lastausblenden = false; - } - } - //$positionenkaufmaenischrunden = $this->app->erp->Firmendaten('positionenkaufmaenischrunden'); - $positionenkaufmaenischrunden = $this->app->erp->Projektdaten($projekt,"preisberechnung"); - $viernachkommastellen_belege = $this->app->erp->Firmendaten('viernachkommastellen_belege'); - foreach($artikel as $key=>$value) - { - if($value['umsatzsteuer'] != "ermaessigt" && $value['umsatzsteuer'] != "befreit") $value['umsatzsteuer'] = "normal"; - $tmpsteuersatz = null; - $tmpsteuertext = null; - $this->app->erp->GetSteuerPosition('rechnung', $value['id'],$tmpsteuersatz, $tmpsteuertext); - if(is_null($value['steuersatz']) || $value['steuersatz'] < 0) - { - if($value['umsatzsteuer'] == "ermaessigt") - { - $value['steuersatz'] = $steuersatzR; - }elseif($value['umsatzsteuer'] == "befreit") - { - $value['steuersatz'] = 0; - }else{ - $value['steuersatz'] = $steuersatzV; - } - if(!is_null($tmpsteuersatz))$value['steuersatz'] = $tmpsteuersatz; - } - if($tmpsteuertext && !$value['steuertext'])$value['steuertext'] = $tmpsteuertext; - if(!$mitumsatzsteuer)$value['steuersatz'] = 0; - - $value['herstellernummer'] = $this->app->DB->Select("SELECT herstellernummer FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); - $value['hersteller'] = $this->app->DB->Select("SELECT hersteller FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); - - $ohne_artikeltext = $this->app->DB->Select("SELECT ohne_artikeltext FROM ".$this->table." WHERE id='".$this->id."' LIMIT 1"); - if($ohne_artikeltext=="1") $value['beschreibung']=""; - - if($value['explodiert_parent_artikel'] > 0) - { - if($value['preis'] == 0) - { - $value['preis'] = "-"; $value['umsatzsteuer']="hidden"; - } - if($belege_subpositionenstuecklisten || $belege_stuecklisteneinrueckenmm)$value['bezeichnung'] = ltrim(ltrim($value['bezeichnung'],'*')); - if(isset($lvl) && isset($lvl[$value['explodiert_parent_artikel']])) - { - $value['lvl'] = $lvl[$value['explodiert_parent_artikel']] + 1; - }else{ - $value['lvl'] = 1; - } - $lvl[$value['artikel']] = $value['lvl']; - $check_ausblenden = $this->app->DB->Select("SELECT keineeinzelartikelanzeigen FROM artikel WHERE id='".$value['explodiert_parent_artikel']."' LIMIT 1"); - if(!$check_ausblenden && isset($ausblenden) && in_array($value['explodiert_parent_artikel'], $ausblenden)) - { - $check_ausblenden = true; - } - if($check_ausblenden) - { - $ausblenden[] = $value['artikel']; - } - } else - { - $check_ausblenden=0; - $lvl[$value['artikel']] = 0; - $value['lvl'] = 0; - } - - - if($value['ausblenden_im_pdf']) $check_ausblenden=1; - - $value = $this->CheckPosition($value,"rechnung",$this->doctypeid,$value['id']); - - $value['menge'] = (float)$value['menge']; - - if($check_ausblenden!=1 && $posanzeigen)// && $als=="") //TODO MAHNWESEN - { - $this->addItem(array( - 'belegposition'=>$value['id'], - 'currency'=>$value['waehrung'],'lvl'=>isset($value['lvl'])?$value['lvl']:0, - 'amount'=>$value['menge'], - 'price'=>$value['preis'], - 'tax'=>$value['umsatzsteuer'], - 'steuersatz'=>$value['steuersatz'], - 'itemno'=>$value['nummer'], - 'artikel'=>$value['artikel'], - 'unit'=>$value['einheit'], - 'desc'=>$value['beschreibung'], - 'hersteller'=>$value['hersteller'], - 'zolltarifnummer'=>$value['zolltarifnummer'], - 'herkunftsland'=>$value['herkunftsland'], - 'herstellernummer'=>trim($value['herstellernummer']), - 'artikelnummerkunde'=>$value['artikelnummerkunde'], - 'lieferdatum'=>$value['lieferdatum'], - 'lieferdatumkw'=>$value['lieferdatumkw'], - 'ohnepreis'=>$value['ohnepreis'], - 'grundrabatt'=>$value['grundrabatt'], - 'rabatt1'=>$value['rabatt1'], - 'rabatt2'=>$value['rabatt2'], - 'rabatt3'=>$value['rabatt3'], - 'rabatt4'=>$value['rabatt4'], - 'rabatt5'=>$value['rabatt5'], - 'freifeld1'=>$value['freifeld1'], - 'freifeld2'=>$value['freifeld2'], - 'freifeld3'=>$value['freifeld3'], - 'freifeld4'=>$value['freifeld4'], - 'freifeld5'=>$value['freifeld5'], - 'freifeld6'=>$value['freifeld6'], - 'freifeld7'=>$value['freifeld7'], - 'freifeld8'=>$value['freifeld8'], - 'freifeld9'=>$value['freifeld9'], - 'freifeld10'=>$value['freifeld10'], - 'freifeld11'=>$value['freifeld11'], - 'freifeld12'=>$value['freifeld12'], - 'freifeld13'=>$value['freifeld13'], - 'freifeld14'=>$value['freifeld14'], - 'freifeld15'=>$value['freifeld15'], - 'freifeld16'=>$value['freifeld16'], - 'freifeld17'=>$value['freifeld17'], - 'freifeld18'=>$value['freifeld18'], - 'freifeld19'=>$value['freifeld19'], - 'freifeld20'=>$value['freifeld20'], - 'freifeld21'=>$value['freifeld21'], - 'freifeld22'=>$value['freifeld22'], - 'freifeld23'=>$value['freifeld23'], - 'freifeld24'=>$value['freifeld24'], - 'freifeld25'=>$value['freifeld25'], - 'freifeld26'=>$value['freifeld26'], - 'freifeld27'=>$value['freifeld27'], - 'freifeld28'=>$value['freifeld28'], - 'freifeld29'=>$value['freifeld29'], - 'freifeld30'=>$value['freifeld30'], - 'freifeld31'=>$value['freifeld31'], - 'freifeld32'=>$value['freifeld32'], - 'freifeld33'=>$value['freifeld33'], - 'freifeld34'=>$value['freifeld34'], - 'freifeld35'=>$value['freifeld35'], - 'freifeld36'=>$value['freifeld36'], - 'freifeld37'=>$value['freifeld37'], - 'freifeld38'=>$value['freifeld38'], - 'freifeld39'=>$value['freifeld39'], - 'freifeld40'=>$value['freifeld40'], - 'steuertext'=>$value['steuertext'], - "name"=>ltrim($value['bezeichnung']), - "keinrabatterlaubt"=>$value['keinrabatterlaubt'], - "rabatt"=>$value['rabatt'], - "keineeinzelartikelanzeigen"=>$value['keineeinzelartikelanzeigen'], - "anzahlunterartikel"=>$value['anzahlunterartikel'])); - } - if($positionenkaufmaenischrunden == 3) { - $netto_gesamt = $value['menge'] * round($value['preis'] - ($value['preis'] / 100 * $value['rabatt']),2); - }else{ - $netto_gesamt = $value['menge'] * ($value['preis'] - ($value['preis'] / 100 * $value['rabatt'])); - } - $netto_gesamt_ungerundet = $netto_gesamt; - if($positionenkaufmaenischrunden) - { - $netto_gesamt = round($netto_gesamt, 2); - } - - $summe = $summe + $netto_gesamt; - - if(!isset($summen[$value['steuersatz']]))$summen[$value['steuersatz']] = 0; - $tmpbrutto = ($netto_gesamt_ungerundet/100)*$value['steuersatz']; - if($positionenkaufmaenischrunden) - { - $tmpbrutto = round($tmpbrutto, 2); - } - $summen[$value['steuersatz']] += $tmpbrutto; - $gesamtsteuern += $tmpbrutto; - /* - if($value['umsatzsteuer']=="" || $value['umsatzsteuer']=="normal") - { - $summeV = $summeV + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzNormal(false,$id,"rechnung")); - $totalV = $totalV + $netto_gesamt; - } - else { - $summeR = $summeR + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzErmaessigt(false,$id,"rechnung")); - $totalR = $totalR + $netto_gesamt; - } - */ - - } - - if($positionenkaufmaenischrunden && isset($summen) && is_array($summen)) - { - $gesamtsteuern = 0; - foreach($summen as $k => $v) - { - $summen[$k] = round($v, 2); - $gesamtsteuern += round($v, 2); - } - } - if($positionenkaufmaenischrunden) - { - list($summe,$gesamtsumme, $summen) = $this->app->erp->steuerAusBelegPDF($this->table, $this->id); - $gesamtsteuern = $gesamtsumme - $summe; - } - - if($this->app->erp->RechnungMitUmsatzeuer($id)) - { - //$this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $summeV + $summeR,"totalTaxV"=>$summeV,"totalTaxR"=>$summeR,"totalR"=>$totalR,"totalV"=>$totalV)); - $this->setTotals(array("totalArticles"=>$summe,"total"=>($gesamtsumme != 0?$gesamtsumme:( $summe + $gesamtsteuern)),"summen"=>$summen,"totalTaxV"=>0,"totalTaxR"=>0)); - } else - { - $this->setTotals(array("totalArticles"=>$summe,"total"=>($gesamtsumme != 0?$gesamtsumme:$summe))); - } - - /* Dateiname */ - $tmp_name = str_replace(' ','',trim($this->recipient['enterprise'])); - $tmp_name = str_replace('.','',$tmp_name); - - if($als=="" || $als=="doppel") - $this->filename = $datum2."_RE".$belegnr.".pdf"; - else - $this->filename = $datum2."_MA".$belegnr.".pdf"; - - $this->setBarcode($belegnr); - } - - -} +app=$app; + //parent::Briefpapier(); + $this->doctype="rechnung"; + $this->doctypeOrig="Rechnung"; + parent::__construct($this->app,$projekt,$styleData); + } + + public function GetRechnung($id,$als="",$doppeltmp=0, $_datum = null) + { + $this->parameter = $als; + if($this->app->erp->Firmendaten("steuerspalteausblenden")=="1") + { + // pruefe ob es mehr als ein steuersatz gibt // wenn ja dann darf man sie nicht ausblenden + $check = $this->app->erp->SteuerAusBeleg($this->doctype,$id); + if(count($check)>1)$this->ust_spalteausblende=false; + else $this->ust_spalteausblende=true; + } + $lvl = null; + $briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden'); + $briefpapier_vertrieb_ausblenden = $this->app->erp->Firmendaten('briefpapier_vertrieb_ausblenden'); + $this->doctypeid=$id; + // $this->setRecipientDB($adresse); + $this->setRecipientLieferadresse($id,"rechnung"); + + $data = $this->app->DB->SelectRow( + "SELECT r.adresse, if(r.auftragid > 0,a.belegnr,r.auftrag) as auftrag, r.buchhaltung, r.bearbeiter, + r.vertrieb, r.lieferschein AS lieferscheinid, r.projekt, DATE_FORMAT(r.datum,'%d.%m.%Y') AS datum, + DATE_FORMAT(r.mahnwesen_datum,'%d.%m.%Y') AS mahnwesen_datum, + DATE_FORMAT(r.lieferdatum,'%d.%m.%Y') AS lieferdatum, r.belegnr, r.bodyzusatz, r.doppel, + r.freitext, r.systemfreitext, r.ustid, r.typ, r.keinsteuersatz, r.soll, r.ist, r.land, + r.zahlungsweise, r.zahlungsstatus, r.zahlungszieltage, r.zahlungszieltageskonto, + r.zahlungszielskonto, r.ohne_briefpapier, r.ihrebestellnummer, r.ust_befreit, r.waehrung, + r.versandart, + DATE_FORMAT(DATE_ADD(r.datum, INTERVAL r.zahlungszieltage DAY),'%d.%m.%Y') AS zahlungdatum, + DATE_FORMAT(DATE_ADD(r.datum, INTERVAL r.zahlungszieltageskonto DAY),'%d.%m.%Y') AS zahlungszielskontodatum, + r.abweichendebezeichnung AS rechnungersatz, + r.kundennummer, r.sprache, r.schreibschutz, r.soll AS gesamtsumme, + DATE_FORMAT(r.datum,'%Y%m%d') as datum2, r.telefon, r.email + FROM rechnung r LEFT JOIN auftrag a ON a.id=r.auftragid WHERE r.id='$id' LIMIT 1" + ); + extract($data,EXTR_OVERWRITE); + $adresse = $data['adresse']; + $auftrag = $data['auftrag']; + $buchhaltung = $data['buchhaltung']; + $bearbeiter = $data['bearbeiter']; + $vertrieb = $data['vertrieb']; + $lieferscheinid = $data['lieferscheinid']; + $projekt = $data['projekt']; + $datum = $data['datum']; + $mahnwesen_datum = $data['mahnwesen_datum']; + $lieferdatum = $data['lieferdatum']; + $belegnr = $data['belegnr']; + $bodyzusatz = $data['bodyzusatz']; + $doppel = $data['doppel']; + $freitext = $data['freitext']; + $systemfreitext = $data['systemfreitext']; + $ustid = $data['ustid']; + $typ = $data['typ']; + $keinsteuersatz = $data['keinsteuersatz']; + $soll = $data['soll']; + $ist = $data['ist']; + $soll = $data['soll']; + $land = $data['land']; + $zahlungsweise = $data['zahlungsweise']; + $zahlungsstatus = $data['zahlungsstatus']; + $zahlungszieltage = $data['zahlungszieltage']; + $zahlungszieltageskonto = $data['zahlungszieltageskonto']; + $zahlungszielskonto = $data['zahlungszielskonto']; + $versandart = $data['versandart']; + $zahlungdatum = $data['zahlungdatum']; + $zahlungszielskontodatum = $data['zahlungszielskontodatum']; + + $ihrebestellnummer = $data['ihrebestellnummer']; + $ust_befreit = $data['ust_befreit']; + $waehrung = $data['waehrung']; + $ohne_briefpapier = $data['ohne_briefpapier']; + + $rechnungersatz = $data['rechnungersatz']; + $kundennummer = $data['kundennummer']; + $sprache = $data['sprache']; + $schreibschutz = $data['schreibschutz']; + $gesamtsumme = $data['gesamtsumme']; + $datum2 = $data['datum2']; + $email = $data['email']; + $telefon = $data['telefon']; + + $lieferschein = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferscheinid' LIMIT 1"); + + if(empty($als) || $als === 'doppel') { + $rechnungsnummeranzeigen = false; + } + elseif(!empty($belegnr)){ + $rechnungsnummeranzeigen = true; + } + $projektabkuerzung = $this->app->DB->Select(sprintf('SELECT abkuerzung FROM projekt WHERE id = %d', $projekt)); + if(empty($kundennummer)) { + $kundennummer = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE id='$adresse' LIMIT 1"); + } + if(empty($sprache)) { + $sprache = $this->app->DB->Select("SELECT sprache FROM adresse WHERE id='$adresse' LIMIT 1"); + } + + $trackingnummer = $this->app->DB->Select("SELECT tracking FROM versand WHERE rechnung='$id' LIMIT 1"); + + $this->app->erp->BeschriftungSprache($sprache); + if($waehrung) { + $this->waehrung = $waehrung; + } + if($doppeltmp == 1) { + $doppel = $doppeltmp; + } + $this->sprache = $sprache; + $this->projekt = $projekt; + $this->anrede = $typ; + + $ihrebestellnummer = $this->app->erp->ReadyForPDF($ihrebestellnummer); + $bearbeiter = $this->app->erp->ReadyForPDF($bearbeiter); + $vertrieb = $this->app->erp->ReadyForPDF($vertrieb); + + if($ohne_briefpapier=="1") + { + $this->logofile = ""; + $this->briefpapier=""; + $this->briefpapier2=""; + } + + if($zahlungszieltageskonto<=0) + $zahlungszielskontodatum = $zahlungdatum; + + if(!$this->app->erp->RechnungMitUmsatzeuer($id)){ + $this->ust_befreit=true; + } + + $zahlungsweisetext = $this->app->erp->Zahlungsweisetext("rechnung",$id); + + + if($doppel==1) $als = "doppel"; + + if($belegnr=="" || $belegnr=="0") $belegnr = "- ".$this->app->erp->Beschriftung("dokument_entwurf"); + else { + if($doppel==1 || $als=="doppel") + $belegnr .= " (".$this->app->erp->Beschriftung("dokument_rechnung_kopie").")"; + } + + $posanzeigen = true; + if($als=="zahlungserinnerung") + { + $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_zahlungserinnerung")." ".(is_null($_datum)?$mahnwesen_datum:$_datum); + if($this->app->erp->GetKonfiguration("mahnwesen_ze_pos") === '0')$posanzeigen = false; + } + else if($als=="mahnung1") + { + $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_mahnung1")." ".(is_null($_datum)?$mahnwesen_datum:$_datum); + if($this->app->erp->GetKonfiguration("mahnwesen_1_pos") === '0')$posanzeigen = false; + } + else if($als=="mahnung2") + { + $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_mahnung2")." ".(is_null($_datum)?$mahnwesen_datum:$_datum); + if($this->app->erp->GetKonfiguration("mahnwesen_2_pos") === '0')$posanzeigen = false; + } + else if($als=="mahnung3") + { + $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_mahnung3")." ".(is_null($_datum)?$mahnwesen_datum:$_datum); + if($this->app->erp->GetKonfiguration("mahnwesen_3_pos") === '0')$posanzeigen = false; + } + else if($als=="inkasso") + { + $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_mahnunginkasso")." ".(is_null($_datum)?$mahnwesen_datum:$_datum); + if($this->app->erp->GetKonfiguration("mahnwesen_inkasso_pos") === '0')$posanzeigen = false; + } + else + { + if($rechnungersatz) + $this->doctypeOrig=($this->app->erp->Beschriftung("bezeichnungrechnungersatz")?$this->app->erp->Beschriftung("bezeichnungrechnungersatz"):$this->app->erp->Beschriftung("dokument_rechnung"))." $belegnr"; + else + $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_rechnung")." $belegnr"; + } + + + + $this->zusatzfooter = " (RE$belegnr)"; + + $rechnung = "-"; + if($kundennummer=="") $kundennummer= "-"; + + if($auftrag=="0") $auftrag = "-"; + if($lieferschein=="0") $lieferschein= "-"; + if($lieferschein=="") $lieferschein= "-"; + + $datumlieferschein = $this->app->DB->Select("SELECT DATE_FORMAT(datum, '%d.%m.%Y') + FROM lieferschein WHERE id='$lieferscheinid' LIMIT 1"); + + if($datumlieferschein=="00.00.0000") $datumlieferschein = $datum; + if($lieferdatum=="00.00.0000") $lieferdatum = $datum; + if($mahnwesen_datum=="00.00.0000") $mahnwesen_datum = ""; + + $bearbeiteremail = $this->app->DB->Select("SELECT b.email FROM rechnung r LEFT JOIN adresse b ON b.id=r.bearbeiterid WHERE r.id='$id' LIMIT 1"); + $bearbeitertelefon = $this->app->DB->Select("SELECT b.telefon FROM rechnung r LEFT JOIN adresse b ON b.id=r.bearbeiterid WHERE r.id='$id' LIMIT 1"); + + //* start + if($rechnungsnummeranzeigen) + { + $sCD = array($this->app->erp->Beschriftung("dokument_rechnung")=>$belegnr); + }else{ + $sCD = array(); + } + + /** @var \Xentral\Modules\Company\Service\DocumentCustomizationService $service */ + $service = $this->app->Container->get('DocumentCustomizationService'); + if($block = $service->findActiveBlock('corr', 'invoice', $projekt)) { + $sCD = $service->parseBlockAsArray($this->getLanguageCodeFrom($this->sprache),'corr', 'invoice',[ + 'RECHNUNGSNUMMER' => $belegnr, + 'DATUM' => $datum, + 'KUNDENNUMMER' => $kundennummer, + 'BEARBEITER' => $bearbeiter, + 'BEARBEITEREMAIL' => $bearbeiteremail, + 'BEARBEITERTELEFON' => $bearbeitertelefon, + 'VERTRIEB' => $vertrieb, + 'PROJEKT' => $projektabkuerzung, + 'IHREBESTELLNUMMER' => $ihrebestellnummer, + 'AUFTRAGSNUMMER' => $auftrag, + 'LIEFERSCHEINNUMMER' => $lieferschein, + 'LIEFERSCHEINDATUM' => $datumlieferschein, + 'EMAIL' => $email, + 'TELEFON' => $telefon + ], $projekt); + if(!empty($sCD)) { + switch($block['fontstyle']) { + case 'f': + $this->setBoldCorrDetails($sCD); + break; + case 'i': + $this->setItalicCorrDetails($sCD); + break; + case 'fi': + $this->setItalicBoldCorrDetails($sCD); + break; + default: + $this->setCorrDetails($sCD, true); + break; + } + } + } + else{ + if($briefpapier_bearbeiter_ausblenden || $briefpapier_vertrieb_ausblenden) { + if($lieferschein!='-') { + if($auftrag!="-") { + $sCD = array_merge($sCD, array($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_rechnungsdatum")=>$datum,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer")=>$ihrebestellnummer, + $this->app->erp->Beschriftung("dokument_lieferschein")=>$lieferschein,$this->app->erp->Beschriftung("dokument_lieferdatum")=>$datumlieferschein + )); + } + else { + $sCD = array_merge($sCD, array($this->app->erp->Beschriftung("dokument_rechnungsdatum")=>$datum,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer")=>$ihrebestellnummer, + $this->app->erp->Beschriftung("dokument_lieferschein")=>$lieferschein,$this->app->erp->Beschriftung("dokument_lieferdatum")=>$datumlieferschein + )); + } + } + else { + if($auftrag!='-') { + $sCD = array_merge($sCD, array($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_rechnungsdatum")=>$datum,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer")=>$ihrebestellnummer, + $this->app->erp->Beschriftung("dokument_lieferdatum")=>$lieferdatum + )); + } + else { + $sCD = array_merge($sCD, array($this->app->erp->Beschriftung("dokument_rechnungsdatum")=>$datum,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer")=>$ihrebestellnummer, + $this->app->erp->Beschriftung("dokument_lieferdatum")=>$lieferdatum, + $this->app->erp->Beschriftung("dokument_ansprechpartner")=>$buchhaltung + )); + } + } + if(!$briefpapier_bearbeiter_ausblenden) { + if($bearbeiter) { + $sCD[$this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter")] = $bearbeiter; + } + } + elseif(!$briefpapier_vertrieb_ausblenden) { + if($vertrieb)$sCD[$this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb")] = $vertrieb; + } + $this->setCorrDetails($sCD); + } + else { + if($vertrieb!=$bearbeiter) { + if($lieferschein!='-') { + if($auftrag!='-'){ + $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_auftrag") => $auftrag, $this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, + $this->app->erp->Beschriftung("dokument_lieferschein") => $lieferschein, $this->app->erp->Beschriftung("dokument_lieferdatum") => $datumlieferschein, + $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb + ))); + } + else{ + $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, + $this->app->erp->Beschriftung("dokument_lieferschein") => $lieferschein, $this->app->erp->Beschriftung("dokument_lieferdatum") => $datumlieferschein, + $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb + ))); + } + } + else { + if($auftrag!='-') { + $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_auftrag") => $auftrag, $this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, + $this->app->erp->Beschriftung("dokument_lieferdatum") => $lieferdatum, + $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb + ))); + } + else { + $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, + $this->app->erp->Beschriftung("dokument_lieferdatum") => $lieferdatum, + $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb + ))); + } + } + //*ende hack + } else { + //start hack + if($lieferschein!='-') { + if($auftrag!='-') { + $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_auftrag") => $auftrag, $this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, + $this->app->erp->Beschriftung("dokument_lieferschein") => $lieferschein, $this->app->erp->Beschriftung("dokument_lieferdatum") => $datumlieferschein, + $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter + ))); + } + else{ + $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, + $this->app->erp->Beschriftung("dokument_lieferschein") => $lieferschein, $this->app->erp->Beschriftung("dokument_lieferdatum") => $datumlieferschein, + $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter + ))); + } + } + else { + if($auftrag!='-') { + $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_auftrag") => $auftrag, $this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, + $this->app->erp->Beschriftung("dokument_lieferdatum") => $lieferdatum, + $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter + ))); + } + else { + $this->setCorrDetails(array_merge($sCD, array($this->app->erp->Beschriftung("dokument_rechnungsdatum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, + $this->app->erp->Beschriftung("dokument_lieferdatum") => $lieferdatum, + $this->app->erp->Beschriftung("dokument_ansprechpartner") => $buchhaltung + ))); + } + } + } + } + } + + if($keinsteuersatz!="1") + { + if($ust_befreit!=0) $this->ust_befreit=true; + if($keinsteuersatz!="1"){ + if($ust_befreit==2)//$this->app->erp->Export($land)) + $steuer = $this->app->erp->Beschriftung("export_lieferung_vermerk"); + else { + if($ust_befreit==1 && $ustid!="")//$this->app->erp->IstEU($land)) + $steuer = $this->app->erp->Beschriftung("eu_lieferung_vermerk"); + } + + $kennungustid = substr(strtoupper($ustid),0,2); + if(($kennungustid!=strtoupper($land)) && $kennungustid!="" && $this->app->erp->IsEU($kennungustid)) + { + $steuer = str_replace('{LAND}',$kennungustid,$steuer); + } + else { + $steuer = str_replace('{LAND}',$land,$steuer); + } + + $steuer = str_replace('{USTID}',$ustid,$steuer); + } + } + + + + if($als!="" && $als!="doppel") + { + $body = $this->app->erp->MahnwesenBody($id,$als,$_datum); + $footer =$this->app->erp->ParseUserVars("rechnung",$id, $this->app->erp->Beschriftung("rechnung_footer")); + } + else { + $body = $this->app->erp->Beschriftung("rechnung_header"); + if($bodyzusatz!="") $body=$body."\r\n".$bodyzusatz; + $body = $this->app->erp->ParseUserVars("rechnung",$id,$body); + + if ($versandart!="" && $trackingnummer!="" && $this->app->erp->Firmendaten("festetrackingnummer")=="1"){ + $versandinfo = "$versandart: $trackingnummer\r\n"; + }else{ $versandinfo ="";} + + + if($systemfreitext!="") $systemfreitext = "\r\n\r\n".$systemfreitext; + + if($this->app->erp->Firmendaten("footer_reihenfolge_rechnung_aktivieren")=="1") + { + $footervorlage = $this->app->erp->Firmendaten("footer_reihenfolge_rechnung"); + if($footervorlage=="") + $footervorlage = "{FOOTERVERSANDINFO}{FOOTERFREITEXT}\r\n{FOOTERTEXTVORLAGERECHNUNG}\r\n{FOOTERSTEUER}\r\n{FOOTERZAHLUNGSWEISETEXT}{FOOTERSYSTEMFREITEXT}"; + + $footervorlage = str_replace('{FOOTERVERSANDINFO}',$versandinfo,$footervorlage); + $footervorlage = str_replace('{FOOTERFREITEXT}',$freitext,$footervorlage); + $footervorlage = str_replace('{FOOTERTEXTVORLAGERECHNUNG}',$this->app->erp->Beschriftung("rechnung_footer"),$footervorlage); + $footervorlage = str_replace('{FOOTERSTEUER}',$steuer,$footervorlage); + $footervorlage = str_replace('{FOOTERZAHLUNGSWEISETEXT}',$zahlungsweisetext,$footervorlage); + $footervorlage = str_replace('{FOOTERSYSTEMFREITEXT}',$systemfreitext,$footervorlage); + $footervorlage = $this->app->erp->ParseUserVars("rechnung",$id,$footervorlage); + $footer = $footervorlage; + } else { + $footer = $versandinfo."$freitext"."\r\n".$this->app->erp->ParseUserVars("rechnung",$id,$this->app->erp->Beschriftung("rechnung_footer"). + "\r\n$steuer\r\n$zahlungsweisetext").$systemfreitext; + } + } + + $this->setTextDetails(array( + "body"=>$body, + "footer"=>$footer)); + + $artikel = $this->app->DB->SelectArr("SELECT * FROM rechnung_position WHERE rechnung='$id' ORDER By sort"); + $this->app->erp->RunHook('rechnungpdf_getrechnung', 2, $id, $artikel); + $summe_rabatt = $this->app->DB->Select("SELECT SUM(rabatt) FROM rechnung_position WHERE rechnung='$id'"); + if($summe_rabatt <> 0) $this->rabatt=1; + + if($this->app->erp->Firmendaten("modul_verband")=="1") $this->rabatt=1; + $steuersatzV = $this->app->erp->GetSteuersatzNormal(false,$id,"rechnung"); + $steuersatzR = $this->app->erp->GetSteuersatzErmaessigt(false,$id,"rechnung"); + $gesamtsteuern = 0; + $mitumsatzsteuer = $this->app->erp->RechnungMitUmsatzeuer($id); + + $gesamtsumme = 0; + $summe = 0; + $belege_subpositionenstuecklisten = $this->app->erp->Firmendaten('belege_subpositionenstuecklisten'); + $belege_stuecklisteneinrueckenmm = $this->app->erp->Firmendaten('belege_stuecklisteneinrueckenmm'); + if(!$schreibschutz)$gesamtsumme = 0; + $lastausblenden = false; + foreach($artikel as $key=>$value) + { + $artikel[$key]['anzahlunterartikel'] = 0; + $artikel[$key]['keineeinzelartikelanzeigen'] = $this->app->DB->Select("SELECT keineeinzelartikelanzeigen FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); + if($lastausblenden === false) + { + if($artikel[$key]['keineeinzelartikelanzeigen'])$lastausblenden = $key; + }else{ + if($value['explodiert_parent_artikel'] > 0) + { + $artikel[$lastausblenden]['anzahlunterartikel']++; + }elseif($artikel[$key]['keineeinzelartikelanzeigen']){ + $lastausblenden = $key; + }else $lastausblenden = false; + } + } + //$positionenkaufmaenischrunden = $this->app->erp->Firmendaten('positionenkaufmaenischrunden'); + $positionenkaufmaenischrunden = $this->app->erp->Projektdaten($projekt,"preisberechnung"); + $viernachkommastellen_belege = $this->app->erp->Firmendaten('viernachkommastellen_belege'); + foreach($artikel as $key=>$value) + { + if($value['umsatzsteuer'] != "ermaessigt" && $value['umsatzsteuer'] != "befreit") $value['umsatzsteuer'] = "normal"; + $tmpsteuersatz = null; + $tmpsteuertext = null; + $this->app->erp->GetSteuerPosition('rechnung', $value['id'],$tmpsteuersatz, $tmpsteuertext); + if(is_null($value['steuersatz']) || $value['steuersatz'] < 0) + { + if($value['umsatzsteuer'] == "ermaessigt") + { + $value['steuersatz'] = $steuersatzR; + }elseif($value['umsatzsteuer'] == "befreit") + { + $value['steuersatz'] = 0; + }else{ + $value['steuersatz'] = $steuersatzV; + } + if(!is_null($tmpsteuersatz))$value['steuersatz'] = $tmpsteuersatz; + } + if($tmpsteuertext && !$value['steuertext'])$value['steuertext'] = $tmpsteuertext; + if(!$mitumsatzsteuer)$value['steuersatz'] = 0; + + $value['herstellernummer'] = $this->app->DB->Select("SELECT herstellernummer FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); + $value['hersteller'] = $this->app->DB->Select("SELECT hersteller FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); + + $ohne_artikeltext = $this->app->DB->Select("SELECT ohne_artikeltext FROM ".$this->table." WHERE id='".$this->id."' LIMIT 1"); + if($ohne_artikeltext=="1") $value['beschreibung']=""; + + if($value['explodiert_parent_artikel'] > 0) + { + if($value['preis'] == 0) + { + $value['preis'] = "-"; $value['umsatzsteuer']="hidden"; + } + if($belege_subpositionenstuecklisten || $belege_stuecklisteneinrueckenmm)$value['bezeichnung'] = ltrim(ltrim($value['bezeichnung'],'*')); + if(isset($lvl) && isset($lvl[$value['explodiert_parent_artikel']])) + { + $value['lvl'] = $lvl[$value['explodiert_parent_artikel']] + 1; + }else{ + $value['lvl'] = 1; + } + $lvl[$value['artikel']] = $value['lvl']; + $check_ausblenden = $this->app->DB->Select("SELECT keineeinzelartikelanzeigen FROM artikel WHERE id='".$value['explodiert_parent_artikel']."' LIMIT 1"); + if(!$check_ausblenden && isset($ausblenden) && in_array($value['explodiert_parent_artikel'], $ausblenden)) + { + $check_ausblenden = true; + } + if($check_ausblenden) + { + $ausblenden[] = $value['artikel']; + } + } else + { + $check_ausblenden=0; + $lvl[$value['artikel']] = 0; + $value['lvl'] = 0; + } + + + if($value['ausblenden_im_pdf']) $check_ausblenden=1; + + $value = $this->CheckPosition($value,"rechnung",$this->doctypeid,$value['id']); + + $value['menge'] = (float)$value['menge']; + + if($check_ausblenden!=1 && $posanzeigen)// && $als=="") //TODO MAHNWESEN + { + $this->addItem(array( + 'belegposition'=>$value['id'], + 'currency'=>$value['waehrung'],'lvl'=>isset($value['lvl'])?$value['lvl']:0, + 'amount'=>$value['menge'], + 'price'=>$value['preis'], + 'tax'=>$value['umsatzsteuer'], + 'steuersatz'=>$value['steuersatz'], + 'itemno'=>$value['nummer'], + 'artikel'=>$value['artikel'], + 'unit'=>$value['einheit'], + 'desc'=>$value['beschreibung'], + 'hersteller'=>$value['hersteller'], + 'zolltarifnummer'=>$value['zolltarifnummer'], + 'herkunftsland'=>$value['herkunftsland'], + 'herstellernummer'=>trim($value['herstellernummer']), + 'artikelnummerkunde'=>$value['artikelnummerkunde'], + 'lieferdatum'=>$value['lieferdatum'], + 'lieferdatumkw'=>$value['lieferdatumkw'], + 'ohnepreis'=>$value['ohnepreis'], + 'grundrabatt'=>$value['grundrabatt'], + 'rabatt1'=>$value['rabatt1'], + 'rabatt2'=>$value['rabatt2'], + 'rabatt3'=>$value['rabatt3'], + 'rabatt4'=>$value['rabatt4'], + 'rabatt5'=>$value['rabatt5'], + 'freifeld1'=>$value['freifeld1'], + 'freifeld2'=>$value['freifeld2'], + 'freifeld3'=>$value['freifeld3'], + 'freifeld4'=>$value['freifeld4'], + 'freifeld5'=>$value['freifeld5'], + 'freifeld6'=>$value['freifeld6'], + 'freifeld7'=>$value['freifeld7'], + 'freifeld8'=>$value['freifeld8'], + 'freifeld9'=>$value['freifeld9'], + 'freifeld10'=>$value['freifeld10'], + 'freifeld11'=>$value['freifeld11'], + 'freifeld12'=>$value['freifeld12'], + 'freifeld13'=>$value['freifeld13'], + 'freifeld14'=>$value['freifeld14'], + 'freifeld15'=>$value['freifeld15'], + 'freifeld16'=>$value['freifeld16'], + 'freifeld17'=>$value['freifeld17'], + 'freifeld18'=>$value['freifeld18'], + 'freifeld19'=>$value['freifeld19'], + 'freifeld20'=>$value['freifeld20'], + 'freifeld21'=>$value['freifeld21'], + 'freifeld22'=>$value['freifeld22'], + 'freifeld23'=>$value['freifeld23'], + 'freifeld24'=>$value['freifeld24'], + 'freifeld25'=>$value['freifeld25'], + 'freifeld26'=>$value['freifeld26'], + 'freifeld27'=>$value['freifeld27'], + 'freifeld28'=>$value['freifeld28'], + 'freifeld29'=>$value['freifeld29'], + 'freifeld30'=>$value['freifeld30'], + 'freifeld31'=>$value['freifeld31'], + 'freifeld32'=>$value['freifeld32'], + 'freifeld33'=>$value['freifeld33'], + 'freifeld34'=>$value['freifeld34'], + 'freifeld35'=>$value['freifeld35'], + 'freifeld36'=>$value['freifeld36'], + 'freifeld37'=>$value['freifeld37'], + 'freifeld38'=>$value['freifeld38'], + 'freifeld39'=>$value['freifeld39'], + 'freifeld40'=>$value['freifeld40'], + 'steuertext'=>$value['steuertext'], + "name"=>ltrim($value['bezeichnung']), + "keinrabatterlaubt"=>$value['keinrabatterlaubt'], + "rabatt"=>$value['rabatt'], + "keineeinzelartikelanzeigen"=>$value['keineeinzelartikelanzeigen'], + "anzahlunterartikel"=>$value['anzahlunterartikel'])); + } + if($positionenkaufmaenischrunden == 3) { + $netto_gesamt = $value['menge'] * round($value['preis'] - ($value['preis'] / 100 * $value['rabatt']),2); + }else{ + $netto_gesamt = ((float) $value['menge']) * ((float) $value['preis'] - ((float) $value['preis'] / 100.0 * (float) $value['rabatt'])); + } + $netto_gesamt_ungerundet = $netto_gesamt; + if($positionenkaufmaenischrunden) + { + $netto_gesamt = round($netto_gesamt, 2); + } + + $summe = $summe + $netto_gesamt; + + if(!isset($summen[$value['steuersatz']]))$summen[$value['steuersatz']] = 0; + $tmpbrutto = ($netto_gesamt_ungerundet/100)*$value['steuersatz']; + if($positionenkaufmaenischrunden) + { + $tmpbrutto = round($tmpbrutto, 2); + } + $summen[$value['steuersatz']] += $tmpbrutto; + $gesamtsteuern += $tmpbrutto; + /* + if($value['umsatzsteuer']=="" || $value['umsatzsteuer']=="normal") + { + $summeV = $summeV + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzNormal(false,$id,"rechnung")); + $totalV = $totalV + $netto_gesamt; + } + else { + $summeR = $summeR + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzErmaessigt(false,$id,"rechnung")); + $totalR = $totalR + $netto_gesamt; + } + */ + + } + + if($positionenkaufmaenischrunden && isset($summen) && is_array($summen)) + { + $gesamtsteuern = 0; + foreach($summen as $k => $v) + { + $summen[$k] = round($v, 2); + $gesamtsteuern += round($v, 2); + } + } + if($positionenkaufmaenischrunden) + { + list($summe,$gesamtsumme, $summen) = $this->app->erp->steuerAusBelegPDF($this->table, $this->id); + $gesamtsteuern = $gesamtsumme - $summe; + } + + if($this->app->erp->RechnungMitUmsatzeuer($id)) + { + //$this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $summeV + $summeR,"totalTaxV"=>$summeV,"totalTaxR"=>$summeR,"totalR"=>$totalR,"totalV"=>$totalV)); + $this->setTotals(array("totalArticles"=>$summe,"total"=>($gesamtsumme != 0?$gesamtsumme:( $summe + $gesamtsteuern)),"summen"=>$summen,"totalTaxV"=>0,"totalTaxR"=>0)); + } else + { + $this->setTotals(array("totalArticles"=>$summe,"total"=>($gesamtsumme != 0?$gesamtsumme:$summe))); + } + + /* Dateiname */ + $tmp_name = str_replace(' ','',trim($this->recipient['enterprise'])); + $tmp_name = str_replace('.','',$tmp_name); + + if($als=="" || $als=="doppel") + $this->filename = $datum2."_RE".$belegnr.".pdf"; + else + $this->filename = $datum2."_MA".$belegnr.".pdf"; + + $this->setBarcode($belegnr); + } + + +}