diff --git a/www/lib/dokumente/class.angebot.php b/www/lib/dokumente/class.angebot.php index aaddc3cf..abb92ce7 100644 --- a/www/lib/dokumente/class.angebot.php +++ b/www/lib/dokumente/class.angebot.php @@ -1,554 +1,554 @@ -app=$app; - //parent::Briefpapier(); - $this->doctype="angebot"; - $this->doctypeOrig="Angebot"; - parent::__construct($this->app,$projekt); - } - - function GetAngebot($id) - { - $this->doctypeid = $id; - - 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; - } - - $briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden'); - $briefpapier_vertrieb_ausblenden = $this->app->erp->Firmendaten('briefpapier_vertrieb_ausblenden'); - //$this->setRecipientDB($adresse); - $this->setRecipientLieferadresse($id,"angebot"); - $email = ''; - $telefon = ''; - $data = $this->app->DB->SelectRow("SELECT adresse, kundennummer, sprache, ustid, ust_befreit, keinsteuersatz, land, - anfrage, vertrieb, bearbeiter, DATE_FORMAT(datum,'%d.%m.%Y') AS datum, - DATE_FORMAT(gueltigbis,'%d.%m.%Y') AS gueltigbis, belegnr, freitext, typ, zahlungsweise, - abweichendebezeichnung AS angebotersatz, zahlungszieltage, zahlungszieltageskonto, - zahlungszielskonto, projekt, waehrung, bodyzusatz, ohne_briefpapier,DATE_FORMAT(datum,'%Y%m%d') as datum2 - FROM angebot WHERE id='$id' LIMIT 1"); - - extract($data,EXTR_OVERWRITE); - $adresse = $data['adresse']; - $kundennummer = $data['kundennummer']; - $sprache = $data['sprache']; - $ustid = $data['ustid']; - $ust_befreit = $data['ust_befreit']; - $keinsteuersatz = $data['keinsteuersatz']; - $land = $data['land']; - - $anfrage = $data['anfrage']; - $vertrieb = $data['vertrieb']; - $bearbeiter = $data['bearbeiter']; - $freitext = $data['freitext']; - $gueltigbis = $data['gueltigbis']; - $datum = $data['datum']; - $belegnr = $data['belegnr']; - $typ = $data['typ']; - $zahlungsweise = $data['zahlungsweise']; - $angebotersatz = $data['angebotersatz']; - $zahlungszieltage = $data['zahlungszieltage']; - $zahlungszieltageskonto = $data['zahlungszieltageskonto']; - - $zahlungszielskonto = $data['zahlungszielskonto']; - $projekt = $data['projekt']; - $waehrung = $data['waehrung']; - $ohne_briefpapier = $data['ohne_briefpapier']; - $bodyzusatz = $data['bodyzusatz']; - $datum2 = $data['datum2']; - - 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"); - } - - $this->app->erp->BeschriftungSprache($sprache); - if($waehrung) { - $this->waehrung = $waehrung; - } - $this->projekt = $projekt; - $projektabkuerzung = $this->app->DB->Select(sprintf('SELECT abkuerzung FROM projekt WHERE id = %d', $projekt)); - $this->sprache = $sprache; - $this->anrede = $typ; - - $zahlungsweise = $this->app->erp->ReadyForPDF($zahlungsweise); - $bearbeiter = $this->app->erp->ReadyForPDF($bearbeiter); - $vertrieb = $this->app->erp->ReadyForPDF($vertrieb); - $anfrage = $this->app->erp->ReadyForPDF($anfrage); - - if($ohne_briefpapier=="1") - { - $this->logofile = ""; - $this->briefpapier=""; - $this->briefpapier2=""; - } - - $zahlungstext = $this->app->erp->Zahlungsweisetext("angebot", $id); -/* - - //$zahlungstext = "\nZahlungsweise: $zahlungsweise "; - if($zahlungsweise=="rechnung") - { - if($zahlungszieltage >0) $zahlungstext = $this->app->erp->Beschriftung("dokument_zahlung_rechnung_anab"); - else { - $zahlungstext = $this->app->erp->Beschriftung("zahlung_rechnung_sofort_de"); - } - - - if($this->app->erp->Firmendaten("eigener_skontotext")=="1" && $zahlungszielskonto>0) - { - $skontotext = $this->app->erp->Beschriftung("eigener_skontotext_anab"); - $skontotext = str_replace('{ZAHLUNGSZIELSKONTO}',number_format($zahlungszielskonto,2,',','.'),$skontotext); - $skontotext = str_replace('{ZAHLUNGSZIELTAGESKONTO}',$zahlungszieltageskonto,$skontotext); - $zahlungstext .= "\n".$skontotext; - } else { - if($zahlungszielskonto>0) $zahlungstext .= "\n".$this->app->erp->Beschriftung("dokument_skonto")." ".number_format($zahlungszielskonto,2,',','.')."% ".$this->app->erp->Beschriftung("dokument_innerhalb")." $zahlungszieltageskonto ".$this->app->erp->Beschriftung("dokument_tagen"); - } - - } else { - $zahlungstext = $this->app->DB->Select("SELECT freitext FROM zahlungsweisen WHERE type='".$zahlungsweise."' AND aktiv='1' AND type!='' LIMIT 1"); - if($zahlungstext=="") - $zahlungstext = $this->app->erp->Beschriftung("zahlung_".$zahlungsweise."_de"); - if($zahlungstext=="") - $zahlungstext = $this->app->erp->Beschriftung("dokument_zahlung_per")." ".ucfirst($zahlungsweise); - } -*/ - - $zahlungsweise = ucfirst($zahlungsweise); - - if($belegnr=="" || $belegnr=="0") $belegnr = "- ".$this->app->erp->Beschriftung("dokument_entwurf"); - - if($angebotersatz) - $this->doctypeOrig=($this->app->erp->Beschriftung("bezeichnungangebotersatz")?$this->app->erp->Beschriftung("bezeichnungangebotersatz"):$this->app->erp->Beschriftung("dokument_angebot"))." $belegnr"; - else - $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_angebot")." $belegnr"; - - - $this->zusatzfooter = " (AN$belegnr)"; - - if($angebot=="") $angebot = "-"; - if($kundennummer=="") $kundennummer= "-"; - - $bearbeiteremail = $this->app->DB->Select("SELECT b.email FROM angebot a LEFT JOIN adresse b ON b.id=a.bearbeiterid WHERE a.id='$id' LIMIT 1"); - $bearbeitertelefon = $this->app->DB->Select("SELECT b.telefon FROM angebot a LEFT JOIN adresse b ON b.id=a.bearbeiterid WHERE a.id='$id' LIMIT 1"); - - /** @var \Xentral\Modules\Company\Service\DocumentCustomizationService $service */ - $service = $this->app->Container->get('DocumentCustomizationService'); - if($block = $service->findActiveBlock('corr', 'offer', $projekt)) { - $sCD = $service->parseBlockAsArray($this->getLanguageCodeFrom($this->sprache),'corr', 'offer',[ - 'ANGEBOTSNUMMER' => $belegnr, - 'DATUM' => $datum, - 'KUNDENNUMMER' => $kundennummer, - 'BEARBEITER' => $bearbeiter, - 'BEARBEITEREMAIL' => $bearbeiteremail, - 'BEARBEITERTELEFON' => $bearbeitertelefon, - 'VERTRIEB' => $vertrieb, - 'PROJEKT' => $projektabkuerzung, - 'ANFRAGENUMMER' => $anfrage, - 'EMAIL' => $email, - 'TELEFON' => $telefon - ], $projekt); - - if(!empty($block['alignment'])) { - $this->boxalignmentleft = $block['alignment'][0]; - $this->boxalignmentright = $block['alignment'][1]; - } - - /*$elements =explode("\n", str_replace("\r",'', $this->app->erp->Firmendaten('document_settings_angebot_elements'))); - $previewArr = [ - 'DATUM' => 'datum', - 'BEARBEITER' => 'bearbeiter', - 'VERTRIEB' => 'vertrieb', - 'EMAIL' => 'email', - 'TELEFON' => 'telefon', - 'ANGEBOTSNUMMER' => 'belegnr', - 'KUNDENNUMMER' => 'kundennummer', - 'PROJEKT' => 'projektabkuerzung' - ]; - foreach($elements as $key => $el) { - $el = trim($el); - $elements[$key] = $el; - foreach($previewArr as $prevKey => $preVal) { - if(strpos($el, '{'.$prevKey.'}') !== false) { - if(empty($$preVal)) { - - unset($elements[$key]); - break; - } - $elements[$key] = trim(str_replace('{'.$prevKey.'}', $$preVal, $el)); - - break; - } - } - } - $elements = explode("\n", $this->app->erp->ParseIfVars(implode("\n", $elements))); - foreach($elements as $key => $el) { - if(!empty($elements[$key])){ - $row = explode('|', $elements[$key], 2); - $sCD[trim(rtrim(trim($row[0]),':'))] = !empty($row[1]) ? $row[1] : ''; - } - }*/ - - 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){ - $sCD = array($this->app->erp->Beschriftung("dokument_angebot_anfrage") => $anfrage, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("dokument_datum") => $datum); - 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); - //$this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_angebot_anfrage")=>$anfrage,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("dokument_datum")=>$datum)); - }else{ - if($vertrieb == $bearbeiter){ - $this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_angebot_anfrage") => $anfrage, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("dokument_datum") => $datum, $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter)); - }else{ - $this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_angebot_anfrage") => $anfrage, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("dokument_datum") => $datum, $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb)); - } - } - } - - 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"); - } - $steuer = str_replace('{USTID}',$ustid,$steuer); - $steuer = str_replace('{LAND}',$land,$steuer); - } - - $body=$this->app->erp->Beschriftung("angebot_header"); - if($bodyzusatz!="") $body=$body."\r\n".$bodyzusatz; - - - if($this->app->erp->Firmendaten("footer_reihenfolge_angebot_aktivieren")=="1") - { - $footervorlage = $this->app->erp->Firmendaten("footer_reihenfolge_angebot"); - if($footervorlage=="") - $footervorlage = "{FOOTERFREITEXT}\r\n{FOOTERTEXTVORLAGEANGEBOT}\r\n{FOOTERSTEUER}\r\n{FOOTERZAHLUNGSWEISETEXT}"; - $footervorlage = str_replace('{FOOTERFREITEXT}',$freitext,$footervorlage); - $footervorlage = str_replace('{FOOTERTEXTVORLAGEANGEBOT}',$this->app->erp->Beschriftung("angebot_footer"),$footervorlage); - $footervorlage = str_replace('{FOOTERSTEUER}',$steuer,$footervorlage); - $footervorlage = str_replace('{FOOTERZAHLUNGSWEISETEXT}',$zahlungstext,$footervorlage); - $footervorlage = $this->app->erp->ParseUserVars("angebot",$id,$footervorlage); - $footer = $footervorlage; - } else { - $footer = "$freitext\r\n".$this->app->erp->ParseUserVars("angebot",$id,$this->app->erp->Beschriftung("angebot_footer")."\r\n$steuer\r\n$zahlungstext"); - } - - - $body = $this->app->erp->ParseUserVars("angebot",$id,$body); - $this->setTextDetails(array( - "body"=>$body, - "footer"=>$footer)); - - $artikel = $this->app->DB->SelectArr("SELECT * FROM angebot_position WHERE angebot='$id' ORDER By sort"); - if(!$this->app->erp->AngebotMitUmsatzeuer($id)) $this->ust_befreit=true; - - $summe_rabatt = $this->app->DB->Select("SELECT SUM(rabatt) FROM angebot_position WHERE angebot='$id'"); - if($summe_rabatt <> 0) $this->rabatt=1; - - if($this->app->erp->Firmendaten("modul_verband")=="1") $this->rabatt=1; - - $summe = 0; - $steuersatzV = $this->app->erp->GetSteuersatzNormal(false,$id,"angebot"); - $steuersatzR = $this->app->erp->GetSteuersatzErmaessigt(false,$id,"angebot"); - $gesamtsteuern = 0; - $mitumsatzsteuer = $this->app->erp->AngebotMitUmsatzeuer($id); - //$waehrung = $this->app->DB->Select("SELECT waehrung FROM angebot_position WHERE angebot='$id' LIMIT 1"); - $berechnen_aus_teile = false; - - foreach($artikel as $key=>$value) - { - if($value['explodiert_parent']) - { - $explodiert[$value['explodiert_parent']] = true; - } - } - $belege_subpositionenstuecklisten = $this->app->erp->Firmendaten('belege_subpositionenstuecklisten'); - $belege_stuecklisteneinrueckenmm = $this->app->erp->Firmendaten('belege_stuecklisteneinrueckenmm'); - //$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) - { - // sichtbare positionen - $checksichtbar = $this->app->DB->Select("SELECT COUNT(id)-SUM(ausblenden_im_pdf) FROM angebot_position WHERE explodiert_parent='".$value['id']."'"); - if(isset($explodiert) && $explodiert[$value['id']] && $checksichtbar > 0) $value['bezeichnung'] = $value['bezeichnung']." ".$this->app->erp->Beschriftung("dokument_stueckliste"); - if($value['explodiert_parent'] > 0) { - if($value['preis'] == 0){ - $value['preis'] = "-"; $value['umsatzsteuer']="hidden"; - } - if(!$belege_subpositionenstuecklisten && !$belege_stuecklisteneinrueckenmm)$value['bezeichnung'] = "-".$value['bezeichnung']; - //$value[beschreibung] .= $value[beschreibung]." (Bestandteil von Stückliste)"; - } - - $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'] > 0) - { - if(isset($lvl) && isset($lvl[$value['explodiert_parent']])) - { - $value['lvl'] = $lvl[$value['explodiert_parent']] + 1; - }else{ - $value['lvl'] = 1; - } - $lvl[$value['id']] = $value['lvl']; - } else - { - $lvl[$value['id']] = 0; - } - - if($value['umsatzsteuer'] != "ermaessigt") $value['umsatzsteuer'] = "normal"; - $tmpsteuersatz = null; - $tmpsteuertext = null; - $this->app->erp->GetSteuerPosition('angebot', $value['id'],$tmpsteuersatz, $tmpsteuertext); - if(is_null($value['steuersatz']) || $value['steuersatz'] < 0) - { - if($value['umsatzsteuer'] == "ermaessigt") - { - $value['steuersatz'] = $steuersatzR; - }else{ - $value['steuersatz'] = $steuersatzV; - } - if(!is_null($tmpsteuersatz))$value['steuersatz'] = $tmpsteuersatz; - } - if($tmpsteuertext && !$value['steuertext'])$value['steuertext'] = $tmpsteuertext; - if(!$mitumsatzsteuer)$value['steuersatz'] = 0; - // Herstellernummer von Artikel - $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"); - - $is_angebot_mit_bild=0; - if($is_angebot_mit_bild) { - $image_tmp = $this->app->erp->GetArtikelStandardbild($value['artikel']); - $value['image'] = $image_tmp['image']; - $value['image_type'] = $image_tmp['extenstion']; - } - - if($value['optional']=="1") $value['bezeichnung'] = $this->app->erp->Beschriftung("dokument_optional").$value['bezeichnung']; - - - if(!$this->app->erp->Export($land)) - { - $value['zolltarifnummer']=""; - $value['herkunftsland']=""; - } - - $value = $this->CheckPosition($value,"angebot",$this->doctypeid,$value['id']); - - $value['menge'] = floatval($value['menge']); - if(!$value['explodiert_parent']) - { - if($value['berechnen_aus_teile']) - { - $berechnen_aus_teile = true; - }else{ - $berechnen_aus_teile = false; - } - } - $value['nicht_einrechnen'] = false; - if($value['optional']!="1"){ - if($value['explodiert_parent'] != 0 && $berechnen_aus_teile) - { - $value['ohnepreis'] = 1; - $value['nicht_einrechnen'] = true; - $value['umsatzsteuer'] = 'hidden'; - } - } - - if($value['textalternativpreis']!="") - { - $value['preis']=$value['textalternativpreis']; - $value['ohnepreis'] = 2; - $value['nicht_einrechnen'] = true; - $value['umsatzsteuer'] = 'hidden'; - $value['menge']=""; - } - - if(!$value['ausblenden_im_pdf'])$this->addItem(array( - 'belegposition'=>$value['id'], - 'currency'=>$value['waehrung'],'lvl'=>$value['lvl'], - 'amount'=>$value['menge'], - 'price'=>$value['preis'], - 'tax'=>$value['umsatzsteuer'], - 'steuersatz'=>$value['steuersatz'], - 'itemno'=>$value['nummer'], - 'artikel'=>$value['artikel'], - 'desc'=>$value['beschreibung'], - 'optional'=>$value['optional'],'nicht_einrechnen'=>$value['nicht_einrechnen'], - 'ohnepreis'=>$value['ohnepreis'], - 'unit'=>$value['einheit'], - 'hersteller'=>$value['hersteller'], - 'zolltarifnummer'=>$value['zolltarifnummer'], - 'herkunftsland'=>$value['herkunftsland'], - 'herstellernummer'=>trim($value['herstellernummer']), - 'lieferdatum'=>$value['lieferdatum'], - 'lieferdatumkw'=>$value['lieferdatumkw'], - 'artikelnummerkunde'=>$value['artikelnummerkunde'], - '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'], - "name"=>ltrim($value['bezeichnung']), - "keinrabatterlaubt"=>$value['keinrabatterlaubt'], - "rabatt"=>$value['rabatt'], - "steuertext"=>$value['steuertext'])); - 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'])); - } - if($positionenkaufmaenischrunden) - { - $netto_gesamt = round($netto_gesamt, 2); - } - if($value['optional']!="1"){ - if($value['explodiert_parent'] == 0 || !$berechnen_aus_teile) - { - $summe = $summe + $netto_gesamt; - if(!isset($summen[$value['steuersatz']]))$summen[$value['steuersatz']] = 0; - $summen[$value['steuersatz']] += ($netto_gesamt/100)*$value['steuersatz']; - $gesamtsteuern +=($netto_gesamt/100)*$value['steuersatz']; - } - /* - if($value['umsatzsteuer']=="" || $value['umsatzsteuer']=="normal") - { - $summeV = $summeV + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzNormal(false,$id,"angebot")); - } - else { - $summeR = $summeR + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzErmaessigt(false,$id,"angebot")); - }*/ - } - } - - 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->AngebotMitUmsatzeuer($id)) - { - $this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $gesamtsteuern,"summen"=>$summen,"totalTaxV"=>0,"totalTaxR"=>0)); - //$this->setTotals(array("totalArticles"=>$summe,"totalTaxV"=>$summeV,"totalTaxR"=>$summeR,"total"=>$summe+$summeV+$summeR)); - } else { - $this->setTotals(array("totalArticles"=>$summe,"total"=>$summe)); - } - - /* Dateiname */ - //$tmp_name = str_replace(' ','',trim($this->recipient['enterprise'])); - //$tmp_name = str_replace('.','',$tmp_name); - - $this->filename = $datum2."_AN".$belegnr.".pdf"; - $this->setBarcode($belegnr); - } - - -} +app=$app; + //parent::Briefpapier(); + $this->doctype="angebot"; + $this->doctypeOrig="Angebot"; + parent::__construct($this->app,$projekt); + } + + function GetAngebot($id) + { + $this->doctypeid = $id; + + 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(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false; + else $this->ust_spalteausblende=true; + } + + $briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden'); + $briefpapier_vertrieb_ausblenden = $this->app->erp->Firmendaten('briefpapier_vertrieb_ausblenden'); + //$this->setRecipientDB($adresse); + $this->setRecipientLieferadresse($id,"angebot"); + $email = ''; + $telefon = ''; + $data = $this->app->DB->SelectRow("SELECT adresse, kundennummer, sprache, ustid, ust_befreit, keinsteuersatz, land, + anfrage, vertrieb, bearbeiter, DATE_FORMAT(datum,'%d.%m.%Y') AS datum, + DATE_FORMAT(gueltigbis,'%d.%m.%Y') AS gueltigbis, belegnr, freitext, typ, zahlungsweise, + abweichendebezeichnung AS angebotersatz, zahlungszieltage, zahlungszieltageskonto, + zahlungszielskonto, projekt, waehrung, bodyzusatz, ohne_briefpapier,DATE_FORMAT(datum,'%Y%m%d') as datum2 + FROM angebot WHERE id='$id' LIMIT 1"); + + extract($data,EXTR_OVERWRITE); + $adresse = $data['adresse']; + $kundennummer = $data['kundennummer']; + $sprache = $data['sprache']; + $ustid = $data['ustid']; + $ust_befreit = $data['ust_befreit']; + $keinsteuersatz = $data['keinsteuersatz']; + $land = $data['land']; + + $anfrage = $data['anfrage']; + $vertrieb = $data['vertrieb']; + $bearbeiter = $data['bearbeiter']; + $freitext = $data['freitext']; + $gueltigbis = $data['gueltigbis']; + $datum = $data['datum']; + $belegnr = $data['belegnr']; + $typ = $data['typ']; + $zahlungsweise = $data['zahlungsweise']; + $angebotersatz = $data['angebotersatz']; + $zahlungszieltage = $data['zahlungszieltage']; + $zahlungszieltageskonto = $data['zahlungszieltageskonto']; + + $zahlungszielskonto = $data['zahlungszielskonto']; + $projekt = $data['projekt']; + $waehrung = $data['waehrung']; + $ohne_briefpapier = $data['ohne_briefpapier']; + $bodyzusatz = $data['bodyzusatz']; + $datum2 = $data['datum2']; + + 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"); + } + + $this->app->erp->BeschriftungSprache($sprache); + if($waehrung) { + $this->waehrung = $waehrung; + } + $this->projekt = $projekt; + $projektabkuerzung = $this->app->DB->Select(sprintf('SELECT abkuerzung FROM projekt WHERE id = %d', $projekt)); + $this->sprache = $sprache; + $this->anrede = $typ; + + $zahlungsweise = $this->app->erp->ReadyForPDF($zahlungsweise); + $bearbeiter = $this->app->erp->ReadyForPDF($bearbeiter); + $vertrieb = $this->app->erp->ReadyForPDF($vertrieb); + $anfrage = $this->app->erp->ReadyForPDF($anfrage); + + if($ohne_briefpapier=="1") + { + $this->logofile = ""; + $this->briefpapier=""; + $this->briefpapier2=""; + } + + $zahlungstext = $this->app->erp->Zahlungsweisetext("angebot", $id); +/* + + //$zahlungstext = "\nZahlungsweise: $zahlungsweise "; + if($zahlungsweise=="rechnung") + { + if($zahlungszieltage >0) $zahlungstext = $this->app->erp->Beschriftung("dokument_zahlung_rechnung_anab"); + else { + $zahlungstext = $this->app->erp->Beschriftung("zahlung_rechnung_sofort_de"); + } + + + if($this->app->erp->Firmendaten("eigener_skontotext")=="1" && $zahlungszielskonto>0) + { + $skontotext = $this->app->erp->Beschriftung("eigener_skontotext_anab"); + $skontotext = str_replace('{ZAHLUNGSZIELSKONTO}',number_format($zahlungszielskonto,2,',','.'),$skontotext); + $skontotext = str_replace('{ZAHLUNGSZIELTAGESKONTO}',$zahlungszieltageskonto,$skontotext); + $zahlungstext .= "\n".$skontotext; + } else { + if($zahlungszielskonto>0) $zahlungstext .= "\n".$this->app->erp->Beschriftung("dokument_skonto")." ".number_format($zahlungszielskonto,2,',','.')."% ".$this->app->erp->Beschriftung("dokument_innerhalb")." $zahlungszieltageskonto ".$this->app->erp->Beschriftung("dokument_tagen"); + } + + } else { + $zahlungstext = $this->app->DB->Select("SELECT freitext FROM zahlungsweisen WHERE type='".$zahlungsweise."' AND aktiv='1' AND type!='' LIMIT 1"); + if($zahlungstext=="") + $zahlungstext = $this->app->erp->Beschriftung("zahlung_".$zahlungsweise."_de"); + if($zahlungstext=="") + $zahlungstext = $this->app->erp->Beschriftung("dokument_zahlung_per")." ".ucfirst($zahlungsweise); + } +*/ + + $zahlungsweise = ucfirst($zahlungsweise); + + if($belegnr=="" || $belegnr=="0") $belegnr = "- ".$this->app->erp->Beschriftung("dokument_entwurf"); + + if($angebotersatz) + $this->doctypeOrig=($this->app->erp->Beschriftung("bezeichnungangebotersatz")?$this->app->erp->Beschriftung("bezeichnungangebotersatz"):$this->app->erp->Beschriftung("dokument_angebot"))." $belegnr"; + else + $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_angebot")." $belegnr"; + + + $this->zusatzfooter = " (AN$belegnr)"; + + if($angebot=="") $angebot = "-"; + if($kundennummer=="") $kundennummer= "-"; + + $bearbeiteremail = $this->app->DB->Select("SELECT b.email FROM angebot a LEFT JOIN adresse b ON b.id=a.bearbeiterid WHERE a.id='$id' LIMIT 1"); + $bearbeitertelefon = $this->app->DB->Select("SELECT b.telefon FROM angebot a LEFT JOIN adresse b ON b.id=a.bearbeiterid WHERE a.id='$id' LIMIT 1"); + + /** @var \Xentral\Modules\Company\Service\DocumentCustomizationService $service */ + $service = $this->app->Container->get('DocumentCustomizationService'); + if($block = $service->findActiveBlock('corr', 'offer', $projekt)) { + $sCD = $service->parseBlockAsArray($this->getLanguageCodeFrom($this->sprache),'corr', 'offer',[ + 'ANGEBOTSNUMMER' => $belegnr, + 'DATUM' => $datum, + 'KUNDENNUMMER' => $kundennummer, + 'BEARBEITER' => $bearbeiter, + 'BEARBEITEREMAIL' => $bearbeiteremail, + 'BEARBEITERTELEFON' => $bearbeitertelefon, + 'VERTRIEB' => $vertrieb, + 'PROJEKT' => $projektabkuerzung, + 'ANFRAGENUMMER' => $anfrage, + 'EMAIL' => $email, + 'TELEFON' => $telefon + ], $projekt); + + if(!empty($block['alignment'])) { + $this->boxalignmentleft = $block['alignment'][0]; + $this->boxalignmentright = $block['alignment'][1]; + } + + /*$elements =explode("\n", str_replace("\r",'', $this->app->erp->Firmendaten('document_settings_angebot_elements'))); + $previewArr = [ + 'DATUM' => 'datum', + 'BEARBEITER' => 'bearbeiter', + 'VERTRIEB' => 'vertrieb', + 'EMAIL' => 'email', + 'TELEFON' => 'telefon', + 'ANGEBOTSNUMMER' => 'belegnr', + 'KUNDENNUMMER' => 'kundennummer', + 'PROJEKT' => 'projektabkuerzung' + ]; + foreach($elements as $key => $el) { + $el = trim($el); + $elements[$key] = $el; + foreach($previewArr as $prevKey => $preVal) { + if(strpos($el, '{'.$prevKey.'}') !== false) { + if(empty($$preVal)) { + + unset($elements[$key]); + break; + } + $elements[$key] = trim(str_replace('{'.$prevKey.'}', $$preVal, $el)); + + break; + } + } + } + $elements = explode("\n", $this->app->erp->ParseIfVars(implode("\n", $elements))); + foreach($elements as $key => $el) { + if(!empty($elements[$key])){ + $row = explode('|', $elements[$key], 2); + $sCD[trim(rtrim(trim($row[0]),':'))] = !empty($row[1]) ? $row[1] : ''; + } + }*/ + + 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){ + $sCD = array($this->app->erp->Beschriftung("dokument_angebot_anfrage") => $anfrage, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("dokument_datum") => $datum); + 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); + //$this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_angebot_anfrage")=>$anfrage,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("dokument_datum")=>$datum)); + }else{ + if($vertrieb == $bearbeiter){ + $this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_angebot_anfrage") => $anfrage, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("dokument_datum") => $datum, $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter)); + }else{ + $this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_angebot_anfrage") => $anfrage, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("dokument_datum") => $datum, $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb)); + } + } + } + + 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"); + } + $steuer = str_replace('{USTID}',$ustid,$steuer); + $steuer = str_replace('{LAND}',$land,$steuer); + } + + $body=$this->app->erp->Beschriftung("angebot_header"); + if($bodyzusatz!="") $body=$body."\r\n".$bodyzusatz; + + + if($this->app->erp->Firmendaten("footer_reihenfolge_angebot_aktivieren")=="1") + { + $footervorlage = $this->app->erp->Firmendaten("footer_reihenfolge_angebot"); + if($footervorlage=="") + $footervorlage = "{FOOTERFREITEXT}\r\n{FOOTERTEXTVORLAGEANGEBOT}\r\n{FOOTERSTEUER}\r\n{FOOTERZAHLUNGSWEISETEXT}"; + $footervorlage = str_replace('{FOOTERFREITEXT}',$freitext,$footervorlage); + $footervorlage = str_replace('{FOOTERTEXTVORLAGEANGEBOT}',$this->app->erp->Beschriftung("angebot_footer"),$footervorlage); + $footervorlage = str_replace('{FOOTERSTEUER}',$steuer,$footervorlage); + $footervorlage = str_replace('{FOOTERZAHLUNGSWEISETEXT}',$zahlungstext,$footervorlage); + $footervorlage = $this->app->erp->ParseUserVars("angebot",$id,$footervorlage); + $footer = $footervorlage; + } else { + $footer = "$freitext\r\n".$this->app->erp->ParseUserVars("angebot",$id,$this->app->erp->Beschriftung("angebot_footer")."\r\n$steuer\r\n$zahlungstext"); + } + + + $body = $this->app->erp->ParseUserVars("angebot",$id,$body); + $this->setTextDetails(array( + "body"=>$body, + "footer"=>$footer)); + + $artikel = $this->app->DB->SelectArr("SELECT * FROM angebot_position WHERE angebot='$id' ORDER By sort"); + if(!$this->app->erp->AngebotMitUmsatzeuer($id)) $this->ust_befreit=true; + + $summe_rabatt = $this->app->DB->Select("SELECT SUM(rabatt) FROM angebot_position WHERE angebot='$id'"); + if($summe_rabatt <> 0) $this->rabatt=1; + + if($this->app->erp->Firmendaten("modul_verband")=="1") $this->rabatt=1; + + $summe = 0; + $steuersatzV = $this->app->erp->GetSteuersatzNormal(false,$id,"angebot"); + $steuersatzR = $this->app->erp->GetSteuersatzErmaessigt(false,$id,"angebot"); + $gesamtsteuern = 0; + $mitumsatzsteuer = $this->app->erp->AngebotMitUmsatzeuer($id); + //$waehrung = $this->app->DB->Select("SELECT waehrung FROM angebot_position WHERE angebot='$id' LIMIT 1"); + $berechnen_aus_teile = false; + + foreach($artikel as $key=>$value) + { + if($value['explodiert_parent']) + { + $explodiert[$value['explodiert_parent']] = true; + } + } + $belege_subpositionenstuecklisten = $this->app->erp->Firmendaten('belege_subpositionenstuecklisten'); + $belege_stuecklisteneinrueckenmm = $this->app->erp->Firmendaten('belege_stuecklisteneinrueckenmm'); + //$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) + { + // sichtbare positionen + $checksichtbar = $this->app->DB->Select("SELECT COUNT(id)-SUM(ausblenden_im_pdf) FROM angebot_position WHERE explodiert_parent='".$value['id']."'"); + if(isset($explodiert) && $explodiert[$value['id']] && $checksichtbar > 0) $value['bezeichnung'] = $value['bezeichnung']." ".$this->app->erp->Beschriftung("dokument_stueckliste"); + if($value['explodiert_parent'] > 0) { + if($value['preis'] == 0){ + $value['preis'] = "-"; $value['umsatzsteuer']="hidden"; + } + if(!$belege_subpositionenstuecklisten && !$belege_stuecklisteneinrueckenmm)$value['bezeichnung'] = "-".$value['bezeichnung']; + //$value[beschreibung] .= $value[beschreibung]." (Bestandteil von Stückliste)"; + } + + $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'] > 0) + { + if(isset($lvl) && isset($lvl[$value['explodiert_parent']])) + { + $value['lvl'] = $lvl[$value['explodiert_parent']] + 1; + }else{ + $value['lvl'] = 1; + } + $lvl[$value['id']] = $value['lvl']; + } else + { + $lvl[$value['id']] = 0; + } + + if($value['umsatzsteuer'] != "ermaessigt") $value['umsatzsteuer'] = "normal"; + $tmpsteuersatz = null; + $tmpsteuertext = null; + $this->app->erp->GetSteuerPosition('angebot', $value['id'],$tmpsteuersatz, $tmpsteuertext); + if(is_null($value['steuersatz']) || $value['steuersatz'] < 0) + { + if($value['umsatzsteuer'] == "ermaessigt") + { + $value['steuersatz'] = $steuersatzR; + }else{ + $value['steuersatz'] = $steuersatzV; + } + if(!is_null($tmpsteuersatz))$value['steuersatz'] = $tmpsteuersatz; + } + if($tmpsteuertext && !$value['steuertext'])$value['steuertext'] = $tmpsteuertext; + if(!$mitumsatzsteuer)$value['steuersatz'] = 0; + // Herstellernummer von Artikel + $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"); + + $is_angebot_mit_bild=0; + if($is_angebot_mit_bild) { + $image_tmp = $this->app->erp->GetArtikelStandardbild($value['artikel']); + $value['image'] = $image_tmp['image']; + $value['image_type'] = $image_tmp['extenstion']; + } + + if($value['optional']=="1") $value['bezeichnung'] = $this->app->erp->Beschriftung("dokument_optional").$value['bezeichnung']; + + + if(!$this->app->erp->Export($land)) + { + $value['zolltarifnummer']=""; + $value['herkunftsland']=""; + } + + $value = $this->CheckPosition($value,"angebot",$this->doctypeid,$value['id']); + + $value['menge'] = floatval($value['menge']); + if(!$value['explodiert_parent']) + { + if($value['berechnen_aus_teile']) + { + $berechnen_aus_teile = true; + }else{ + $berechnen_aus_teile = false; + } + } + $value['nicht_einrechnen'] = false; + if($value['optional']!="1"){ + if($value['explodiert_parent'] != 0 && $berechnen_aus_teile) + { + $value['ohnepreis'] = 1; + $value['nicht_einrechnen'] = true; + $value['umsatzsteuer'] = 'hidden'; + } + } + + if($value['textalternativpreis']!="") + { + $value['preis']=$value['textalternativpreis']; + $value['ohnepreis'] = 2; + $value['nicht_einrechnen'] = true; + $value['umsatzsteuer'] = 'hidden'; + $value['menge']=""; + } + + if(!$value['ausblenden_im_pdf'])$this->addItem(array( + 'belegposition'=>$value['id'], + 'currency'=>$value['waehrung'],'lvl'=>$value['lvl'], + 'amount'=>$value['menge'], + 'price'=>$value['preis'], + 'tax'=>$value['umsatzsteuer'], + 'steuersatz'=>$value['steuersatz'], + 'itemno'=>$value['nummer'], + 'artikel'=>$value['artikel'], + 'desc'=>$value['beschreibung'], + 'optional'=>$value['optional'],'nicht_einrechnen'=>$value['nicht_einrechnen'], + 'ohnepreis'=>$value['ohnepreis'], + 'unit'=>$value['einheit'], + 'hersteller'=>$value['hersteller'], + 'zolltarifnummer'=>$value['zolltarifnummer'], + 'herkunftsland'=>$value['herkunftsland'], + 'herstellernummer'=>trim($value['herstellernummer']), + 'lieferdatum'=>$value['lieferdatum'], + 'lieferdatumkw'=>$value['lieferdatumkw'], + 'artikelnummerkunde'=>$value['artikelnummerkunde'], + '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'], + "name"=>ltrim($value['bezeichnung']), + "keinrabatterlaubt"=>$value['keinrabatterlaubt'], + "rabatt"=>$value['rabatt'], + "steuertext"=>$value['steuertext'])); + 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'])); + } + if($positionenkaufmaenischrunden) + { + $netto_gesamt = round($netto_gesamt, 2); + } + if($value['optional']!="1"){ + if($value['explodiert_parent'] == 0 || !$berechnen_aus_teile) + { + $summe = $summe + $netto_gesamt; + if(!isset($summen[$value['steuersatz']]))$summen[$value['steuersatz']] = 0; + $summen[$value['steuersatz']] += ($netto_gesamt/100)*$value['steuersatz']; + $gesamtsteuern +=($netto_gesamt/100)*$value['steuersatz']; + } + /* + if($value['umsatzsteuer']=="" || $value['umsatzsteuer']=="normal") + { + $summeV = $summeV + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzNormal(false,$id,"angebot")); + } + else { + $summeR = $summeR + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzErmaessigt(false,$id,"angebot")); + }*/ + } + } + + 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->AngebotMitUmsatzeuer($id)) + { + $this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $gesamtsteuern,"summen"=>$summen,"totalTaxV"=>0,"totalTaxR"=>0)); + //$this->setTotals(array("totalArticles"=>$summe,"totalTaxV"=>$summeV,"totalTaxR"=>$summeR,"total"=>$summe+$summeV+$summeR)); + } else { + $this->setTotals(array("totalArticles"=>$summe,"total"=>$summe)); + } + + /* Dateiname */ + //$tmp_name = str_replace(' ','',trim($this->recipient['enterprise'])); + //$tmp_name = str_replace('.','',$tmp_name); + + $this->filename = $datum2."_AN".$belegnr.".pdf"; + $this->setBarcode($belegnr); + } + + +} diff --git a/www/lib/dokumente/class.auftrag.php b/www/lib/dokumente/class.auftrag.php index 13b838e5..00f43182 100644 --- a/www/lib/dokumente/class.auftrag.php +++ b/www/lib/dokumente/class.auftrag.php @@ -43,7 +43,7 @@ class AuftragPDF extends BriefpapierCustom { { // 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; + if(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false; else $this->ust_spalteausblende=true; } diff --git a/www/lib/dokumente/class.gutschrift.php b/www/lib/dokumente/class.gutschrift.php index d809d4c9..b81d3afc 100644 --- a/www/lib/dokumente/class.gutschrift.php +++ b/www/lib/dokumente/class.gutschrift.php @@ -1,491 +1,491 @@ -app=$app; - //parent::Briefpapier(); - $this->doctype="gutschrift"; - $this->doctypeOrig="Gutschrift"; - parent::__construct($this->app,$projekt); - } - - - function GetGutschrift($id) - { - $this->doctypeid = $id; - - 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; - } - - $briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden'); - $briefpapier_vertrieb_ausblenden = $this->app->erp->Firmendaten('briefpapier_vertrieb_ausblenden'); - //$this->setRecipientDB($adresse); - $this->setRecipientLieferadresse($id,"gutschrift"); - - $data = $this->app->DB->SelectRow( - "SELECT adresse,kundennummer, sprache, rechnungid, buchhaltung, bearbeiter, vertrieb, - lieferschein AS lieferscheinid, DATE_FORMAT(datum,'%d.%m.%Y') AS datum, - DATE_FORMAT(lieferdatum,'%d.%m.%Y') AS lieferdatum, belegnr, freitext, ustid, ust_befreit, - stornorechnung, keinsteuersatz, land, typ, zahlungsweise, zahlungsstatus, zahlungszieltage, - zahlungszielskonto, projekt, waehrung, bodyzusatz, - DATE_FORMAT(DATE_ADD(datum, INTERVAL zahlungszieltage DAY),'%d.%m.%Y') AS zahlungsdatum, - ohne_briefpapier, ihrebestellnummer,DATE_FORMAT(datum,'%Y%m%d') as datum2, email, telefon - FROM gutschrift WHERE id='$id' LIMIT 1" - ); - extract($data,EXTR_OVERWRITE); - $adresse = $data['adresse']; - $kundennummer = $data['kundennummer']; - $sprache = $data['sprache']; - $rechnungid = $data['rechnungid']; - $buchhaltung = $data['buchhaltung']; - $email = $data['email']; - $telefon = $data['telefon']; - $bearbeiter = $data['bearbeiter']; - $vertrieb = $data['vertrieb']; - $lieferscheinid = $data['lieferscheinid']; - $datum = $data['datum']; - $lieferdatum = $data['lieferdatum']; - $belegnr = $data['belegnr']; - $freitext = $data['freitext']; - $ustid = $data['ustid']; - $ust_befreit = $data['ust_befreit']; - $stornorechnung = $data['stornorechnung']; - $keinsteuersatz = $data['keinsteuersatz']; - $land = $data['land']; - $typ = $data['typ']; - $zahlungsweise = $data['zahlungsweise']; - $zahlungszieltage = $data['zahlungszieltage']; - - $zahlungszielskonto = $data['zahlungszielskonto']; - $projekt = $data['projekt']; - $waehrung = $data['waehrung']; - $bodyzusatz = $data['bodyzusatz']; - $zahlungsdatum = $data['zahlungsdatum']; - $ohne_briefpapier = $data['ohne_briefpapier']; - $ihrebestellnummer = $data['ihrebestellnummer']; - $datum2 = $data['datum2']; - $projektabkuerzung = $this->app->DB->Select(sprintf('SELECT abkuerzung FROM projekt WHERE id = %d', $projekt)); - $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"); - } - $lieferschein = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferscheinid' LIMIT 1"); - $lieferscheindatum = $this->app->DB->Select("SELECT DATE_FORMAT(datum, '%d.%m.%Y') AS datum FROM lieferschein WHERE id = '$lieferscheinid' LIMIT 1"); - $rechnung = $this->app->DB->Select("SELECT belegnr FROM rechnung WHERE id='$rechnungid' LIMIT 1"); - $rechnungsdatum = $this->app->DB->Select("SELECT DATE_FORMAT(datum, '%d.%m.%Y') AS datum FROM rechnung WHERE id = '$rechnungid' LIMIT 1"); - $auftrag = $this->app->DB->Select("SELECT auftrag FROM rechnung WHERE id = '$rechnungid' LIMIT 1"); - - $ihrebestellnummer = $this->app->erp->ReadyForPDF($ihrebestellnummer); - $bearbeiter = $this->app->erp->ReadyForPDF($bearbeiter); - $vertrieb = $this->app->erp->ReadyForPDF($vertrieb); - - $this->app->erp->BeschriftungSprache($sprache); - if($waehrung)$this->waehrung = $waehrung; - $this->sprache = $sprache; - $this->projekt = $projekt; - $this->anrede = $typ; - - if($vertrieb==$bearbeiter && (!$briefpapier_bearbeiter_ausblenden && !$briefpapier_vertrieb_ausblenden)) $vertrieb=""; - - if($ohne_briefpapier=="1") - { - $this->logofile = ""; - $this->briefpapier=""; - $this->briefpapier2=""; - } - - // $zahlungsweise = strtolower($zahlungsweise); - - if($zahlungsweise=="lastschrift" || $zahlungsweise=="einzugsermaechtigung") - { - $zahlungsweisetext = "\n".$this->app->erp->Beschriftung("dokument_offene_lastschriften"); - } - - //if($zahlungszielskonto>0) $zahlungsweisetext .= "\n".$this->app->erp->Beschriftung("dokument_skonto")." $zahlungszielskonto% ".$this->app->erp->Beschriftung("dokument_auszahlungskonditionen"); - - if($zahlungszielskonto!=0) - $zahlungsweisetext .="\r\n".$this->app->erp->Beschriftung("dokument_skontoanderezahlungsweisen"); - - $zahlungsweisetext = str_replace('{ZAHLUNGSZIELSKONTO}',number_format($zahlungszielskonto,2,',','.'),$zahlungsweisetext); - - if($belegnr=="" || $belegnr=="0") $belegnr = "- ".$this->app->erp->Beschriftung("dokument_entwurf"); - - - if($stornorechnung) - $this->doctypeOrig=$this->app->erp->Beschriftung("bezeichnungstornorechnung")." $belegnr"; - else - $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_gutschrift")." $belegnr"; - - if($gutschrift=="") $gutschrift = "-"; - if($kundennummer=="") $kundennummer= "-"; - - if($auftrag=="0") $auftrag = "-"; - if($lieferschein=="0") $lieferschein= "-"; - - $bearbeiteremail = $this->app->DB->Select("SELECT b.email FROM gutschrift g LEFT JOIN adresse b ON b.id=g.bearbeiterid WHERE g.id='$id' LIMIT 1"); - $bearbeitertelefon = $this->app->DB->Select("SELECT b.telefon FROM gutschrift g LEFT JOIN adresse b ON b.id=g.bearbeiterid WHERE g.id='$id' LIMIT 1"); - - /** @var \Xentral\Modules\Company\Service\DocumentCustomizationService $service */ - $service = $this->app->Container->get('DocumentCustomizationService'); - if($block = $service->findActiveBlock('corr', 'credit_note', $projekt)) { - $sCD = $service->parseBlockAsArray($this->getLanguageCodeFrom($this->sprache),'corr', 'credit_note',[ - 'GUTSCHRIFTSNUMMER' => $belegnr, - 'DATUM' => $datum, - 'RECHNUNGSNUMMER' => $rechnung, - 'RECHNUNGSDATUM' => $rechnungsdatum, - 'KUNDENNUMMER' => $kundennummer, - 'BEARBEITER' => $bearbeiter, - 'BEARBEITEREMAIL' => $bearbeiteremail, - 'BEARBEITERTELEFON' => $bearbeitertelefon, - 'VERTRIEB' => $vertrieb, - 'PROJEKT' => $projektabkuerzung, - 'AUFTRAGSNUMMER' => $auftrag, - 'LIEFERSCHEINNUMMER' => $lieferschein, - 'LIEFERSCHEINDATUM' => $lieferscheindatum, - '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{ - - //$this->setCorrDetails(array("Auftrag"=>$auftrag,"Datum"=>$datum,"Ihre Kunden-Nr."=>$kundennummer,"Lieferschein"=>$lieferschein,"Buchhaltung"=>$buchhaltung)); - if($briefpapier_bearbeiter_ausblenden || $briefpapier_vertrieb_ausblenden){ - if($rechnung != ""){ - $sCD = array($this->app->erp->Beschriftung("dokument_rechnung") => $rechnung, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, $this->app->erp->Beschriftung("dokument_datum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer); - }else{ - $sCD = array($this->app->erp->Beschriftung("dokument_datum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer); - //$this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_datum")=>$datum,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer")=>$ihrebestellnummer)); - } - 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; - } - - }else{ - if($rechnung != "") - $sCD = array($this->app->erp->Beschriftung("dokument_rechnung") => $rechnung, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, $this->app->erp->Beschriftung("dokument_datum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb); - else - $sCD = array($this->app->erp->Beschriftung("dokument_datum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb); - } - - if($lieferdatum != "00.00.0000") - $sCD[$this->app->erp->Beschriftung("dokument_lieferdatum")] = $lieferdatum; - - - $this->setCorrDetails($sCD); - } - - 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"); - } - $steuer = str_replace('{USTID}',$ustid,$steuer); - $steuer = str_replace('{LAND}',$land,$steuer); - } - - $gutschrift_header=$this->app->erp->Beschriftung("gutschrift_header"); - if($bodyzusatz!="") $gutschrift_header=$gutschrift_header."\r\n".$bodyzusatz; - - if($stornorechnung) - { - $gutschrift_header = str_replace('{ART}',$this->app->erp->Beschriftung("bezeichnungstornorechnung"),$gutschrift_header); - } else { - $gutschrift_header = str_replace('{ART}',$this->app->erp->Beschriftung("dokument_gutschrift"),$gutschrift_header); - } - - $gutschrift_header = $this->app->erp->ParseUserVars("gutschrift",$id,$gutschrift_header); - - - if($this->app->erp->Firmendaten("footer_reihenfolge_gutschrift_aktivieren")=="1") { - $footervorlage = $this->app->erp->Firmendaten("footer_reihenfolge_gutschrift"); - if($footervorlage=="") - $footervorlage = "{FOOTERFREITEXT}\r\n{FOOTERTEXTVORLAGEGUTSCHRIFT}\r\n{FOOTERSTEUER}\r\n{FOOTERZAHLUNGSWEISETEXT}"; - - $footervorlage = str_replace('{FOOTERFREITEXT}',$freitext,$footervorlage); - $footervorlage = str_replace('{FOOTERTEXTVORLAGEGUTSCHRIFT}',$this->app->erp->Beschriftung("gutschrift_footer"),$footervorlage); - $footervorlage = str_replace('{FOOTERSTEUER}',$steuer,$footervorlage); - $footervorlage = str_replace('{FOOTERZAHLUNGSWEISETEXT}',$zahlungsweisetext,$footervorlage); - $footervorlage = $this->app->erp->ParseUserVars("gutschrift",$id,$footervorlage); - $footer = $footervorlage; - } else { - $footer = "$freitext"."\r\n".$this->app->erp->ParseUserVars("gutschrift",$id,$this->app->erp->Beschriftung("gutschrift_footer"))."\r\n$zahlungsweisetext\r\n$steuer"; - } - - - $this->setTextDetails(array( - "body"=>$gutschrift_header, - "footer"=>$footer)); - - $artikel = $this->app->DB->SelectArr("SELECT * FROM gutschrift_position WHERE gutschrift='$id' ORDER By sort"); - - if(!$this->app->erp->GutschriftMitUmsatzeuer($id)) $this->ust_befreit=true; - - $summe_rabatt = $this->app->DB->Select("SELECT SUM(rabatt) FROM gutschrift_position WHERE gutschrift='$id'"); - if($summe_rabatt <> 0) $this->rabatt=1; - - if($this->app->erp->Firmendaten("modul_verband")=="1") $this->rabatt=1; - - //$waehrung = $this->app->DB->Select("SELECT waehrung FROM gutschrift_position WHERE gutschrift='$id' LIMIT 1"); - $steuersatzV = $this->app->erp->GetSteuersatzNormal(false,$id,"gutschrift"); - $steuersatzR = $this->app->erp->GetSteuersatzErmaessigt(false,$id,"gutschrift"); - $gesamtsteuern = 0; - $mitumsatzsteuer = $this->app->erp->GutschriftMitUmsatzeuer($id); - $belege_subpositionenstuecklisten = $this->app->erp->Firmendaten('belege_subpositionenstuecklisten'); - $belege_stuecklisteneinrueckenmm = $this->app->erp->Firmendaten('belege_stuecklisteneinrueckenmm'); - //$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('gutschrift', $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'] = $steuersatzR; - }else{ - $value['steuersatz'] = $steuersatzV; - } - if(!is_null($tmpsteuersatz))$value['steuersatz'] = $tmpsteuersatz; - } - if($tmpsteuertext && !$value['steuertext'])$value['steuertext'] = $tmpsteuertext; - if(!$mitumsatzsteuer)$value['steuersatz'] = 0; - // negative Darstellung bei Stornorechnung - if($stornorechnung) $value['preis'] = $value['preis'] *-1; - - if(!$this->app->erp->Export($land)) - { - $value['zolltarifnummer']=""; - $value['herkunftsland']=""; - } - - $value = $this->CheckPosition($value,"gutschrift",$this->doctypeid,$value['id']); - - $value['menge'] = floatval($value['menge']); - - if($value['explodiert_parent_artikel'] > 0) - { - 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; - - $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($check_ausblenden!=1) - { - $this->addItem(array('currency'=>$value['waehrung'],'lvl'=>isset($value['lvl'])?$value['lvl']:0, - 'amount'=>$value['menge'], - 'price'=>$value['preis'], - 'tax'=>$value['umsatzsteuer'], - 'steuersatz'=>$value['steuersatz'], - 'steuertext'=>$value['steuertext'], - 'itemno'=>$value['nummer'], - 'artikel'=>$value['artikel'], - 'unit'=>$value['einheit'], - 'desc'=>$value['beschreibung'], - "name"=>ltrim($value['bezeichnung']), - 'artikelnummerkunde'=>$value['artikelnummerkunde'], - 'lieferdatum'=>$value['lieferdatum'], - 'lieferdatumkw'=>$value['lieferdatumkw'], - 'zolltarifnummer'=>$value['zolltarifnummer'], - 'herkunftsland'=>$value['herkunftsland'], - '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'], - "keinrabatterlaubt"=>$value['keinrabatterlaubt'], - "rabatt"=>$value['rabatt'])); - } - 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'])); - } - if($positionenkaufmaenischrunden) - { - $netto_gesamt = round($netto_gesamt, 2); - } - $summe = $summe + $netto_gesamt; - if(!isset($summen[$value['steuersatz']]))$summen[$value['steuersatz']] = 0; - $summen[$value['steuersatz']] += ($netto_gesamt/100)*$value['steuersatz']; - $gesamtsteuern +=($netto_gesamt/100)*$value['steuersatz']; - /* - if($value['umsatzsteuer']=="" || $value['umsatzsteuer']=="normal") - { - $summeV = $summeV + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzNormal(false,$id,"gutschrift")); - } - else { - $summeR = $summeR + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzErmaessigt(false,$id,"gutschrift")); - }*/ - - } - - 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; - } - - /* - $summe = $this->app->DB->Select("SELECT SUM(menge*preis) FROM gutschrift_position WHERE gutschrift='$id'"); - - $summeV = $this->app->DB->Select("SELECT SUM(menge*preis) FROM gutschrift_position WHERE gutschrift='$id' AND (umsatzsteuer='normal' or umsatzsteuer='')")/100 * 19; - $summeR = $this->app->DB->Select("SELECT SUM(menge*preis) FROM gutschrift_position WHERE gutschrift='$id' AND umsatzsteuer='ermaessigt'")/100 * 7; - */ - if($this->app->erp->GutschriftMitUmsatzeuer($id)) - { - $this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $gesamtsteuern,"summen"=>$summen,"totalTaxV"=>0,"totalTaxR"=>0)); - //$this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $summeV + $summeR,"totalTaxV"=>$summeV,"totalTaxR"=>$summeR)); - } else - $this->setTotals(array("totalArticles"=>$summe,"total"=>$summe)); - - /* Dateiname */ - $tmp_name = str_replace(' ','',trim($this->recipient['enterprise'])); - $tmp_name = str_replace('.','',$tmp_name); - - if($stornorechnung) - $this->filename = $datum2."_STORNO_".$belegnr.".pdf"; - else - $this->filename = $datum2."_GS".$belegnr.".pdf"; - - $this->setBarcode($belegnr); - } - - -} +app=$app; + //parent::Briefpapier(); + $this->doctype="gutschrift"; + $this->doctypeOrig="Gutschrift"; + parent::__construct($this->app,$projekt); + } + + + function GetGutschrift($id) + { + $this->doctypeid = $id; + + 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(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false; + else $this->ust_spalteausblende=true; + } + + $briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden'); + $briefpapier_vertrieb_ausblenden = $this->app->erp->Firmendaten('briefpapier_vertrieb_ausblenden'); + //$this->setRecipientDB($adresse); + $this->setRecipientLieferadresse($id,"gutschrift"); + + $data = $this->app->DB->SelectRow( + "SELECT adresse,kundennummer, sprache, rechnungid, buchhaltung, bearbeiter, vertrieb, + lieferschein AS lieferscheinid, DATE_FORMAT(datum,'%d.%m.%Y') AS datum, + DATE_FORMAT(lieferdatum,'%d.%m.%Y') AS lieferdatum, belegnr, freitext, ustid, ust_befreit, + stornorechnung, keinsteuersatz, land, typ, zahlungsweise, zahlungsstatus, zahlungszieltage, + zahlungszielskonto, projekt, waehrung, bodyzusatz, + DATE_FORMAT(DATE_ADD(datum, INTERVAL zahlungszieltage DAY),'%d.%m.%Y') AS zahlungsdatum, + ohne_briefpapier, ihrebestellnummer,DATE_FORMAT(datum,'%Y%m%d') as datum2, email, telefon + FROM gutschrift WHERE id='$id' LIMIT 1" + ); + extract($data,EXTR_OVERWRITE); + $adresse = $data['adresse']; + $kundennummer = $data['kundennummer']; + $sprache = $data['sprache']; + $rechnungid = $data['rechnungid']; + $buchhaltung = $data['buchhaltung']; + $email = $data['email']; + $telefon = $data['telefon']; + $bearbeiter = $data['bearbeiter']; + $vertrieb = $data['vertrieb']; + $lieferscheinid = $data['lieferscheinid']; + $datum = $data['datum']; + $lieferdatum = $data['lieferdatum']; + $belegnr = $data['belegnr']; + $freitext = $data['freitext']; + $ustid = $data['ustid']; + $ust_befreit = $data['ust_befreit']; + $stornorechnung = $data['stornorechnung']; + $keinsteuersatz = $data['keinsteuersatz']; + $land = $data['land']; + $typ = $data['typ']; + $zahlungsweise = $data['zahlungsweise']; + $zahlungszieltage = $data['zahlungszieltage']; + + $zahlungszielskonto = $data['zahlungszielskonto']; + $projekt = $data['projekt']; + $waehrung = $data['waehrung']; + $bodyzusatz = $data['bodyzusatz']; + $zahlungsdatum = $data['zahlungsdatum']; + $ohne_briefpapier = $data['ohne_briefpapier']; + $ihrebestellnummer = $data['ihrebestellnummer']; + $datum2 = $data['datum2']; + $projektabkuerzung = $this->app->DB->Select(sprintf('SELECT abkuerzung FROM projekt WHERE id = %d', $projekt)); + $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"); + } + $lieferschein = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferscheinid' LIMIT 1"); + $lieferscheindatum = $this->app->DB->Select("SELECT DATE_FORMAT(datum, '%d.%m.%Y') AS datum FROM lieferschein WHERE id = '$lieferscheinid' LIMIT 1"); + $rechnung = $this->app->DB->Select("SELECT belegnr FROM rechnung WHERE id='$rechnungid' LIMIT 1"); + $rechnungsdatum = $this->app->DB->Select("SELECT DATE_FORMAT(datum, '%d.%m.%Y') AS datum FROM rechnung WHERE id = '$rechnungid' LIMIT 1"); + $auftrag = $this->app->DB->Select("SELECT auftrag FROM rechnung WHERE id = '$rechnungid' LIMIT 1"); + + $ihrebestellnummer = $this->app->erp->ReadyForPDF($ihrebestellnummer); + $bearbeiter = $this->app->erp->ReadyForPDF($bearbeiter); + $vertrieb = $this->app->erp->ReadyForPDF($vertrieb); + + $this->app->erp->BeschriftungSprache($sprache); + if($waehrung)$this->waehrung = $waehrung; + $this->sprache = $sprache; + $this->projekt = $projekt; + $this->anrede = $typ; + + if($vertrieb==$bearbeiter && (!$briefpapier_bearbeiter_ausblenden && !$briefpapier_vertrieb_ausblenden)) $vertrieb=""; + + if($ohne_briefpapier=="1") + { + $this->logofile = ""; + $this->briefpapier=""; + $this->briefpapier2=""; + } + + // $zahlungsweise = strtolower($zahlungsweise); + + if($zahlungsweise=="lastschrift" || $zahlungsweise=="einzugsermaechtigung") + { + $zahlungsweisetext = "\n".$this->app->erp->Beschriftung("dokument_offene_lastschriften"); + } + + //if($zahlungszielskonto>0) $zahlungsweisetext .= "\n".$this->app->erp->Beschriftung("dokument_skonto")." $zahlungszielskonto% ".$this->app->erp->Beschriftung("dokument_auszahlungskonditionen"); + + if($zahlungszielskonto!=0) + $zahlungsweisetext .="\r\n".$this->app->erp->Beschriftung("dokument_skontoanderezahlungsweisen"); + + $zahlungsweisetext = str_replace('{ZAHLUNGSZIELSKONTO}',number_format($zahlungszielskonto,2,',','.'),$zahlungsweisetext); + + if($belegnr=="" || $belegnr=="0") $belegnr = "- ".$this->app->erp->Beschriftung("dokument_entwurf"); + + + if($stornorechnung) + $this->doctypeOrig=$this->app->erp->Beschriftung("bezeichnungstornorechnung")." $belegnr"; + else + $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_gutschrift")." $belegnr"; + + if($gutschrift=="") $gutschrift = "-"; + if($kundennummer=="") $kundennummer= "-"; + + if($auftrag=="0") $auftrag = "-"; + if($lieferschein=="0") $lieferschein= "-"; + + $bearbeiteremail = $this->app->DB->Select("SELECT b.email FROM gutschrift g LEFT JOIN adresse b ON b.id=g.bearbeiterid WHERE g.id='$id' LIMIT 1"); + $bearbeitertelefon = $this->app->DB->Select("SELECT b.telefon FROM gutschrift g LEFT JOIN adresse b ON b.id=g.bearbeiterid WHERE g.id='$id' LIMIT 1"); + + /** @var \Xentral\Modules\Company\Service\DocumentCustomizationService $service */ + $service = $this->app->Container->get('DocumentCustomizationService'); + if($block = $service->findActiveBlock('corr', 'credit_note', $projekt)) { + $sCD = $service->parseBlockAsArray($this->getLanguageCodeFrom($this->sprache),'corr', 'credit_note',[ + 'GUTSCHRIFTSNUMMER' => $belegnr, + 'DATUM' => $datum, + 'RECHNUNGSNUMMER' => $rechnung, + 'RECHNUNGSDATUM' => $rechnungsdatum, + 'KUNDENNUMMER' => $kundennummer, + 'BEARBEITER' => $bearbeiter, + 'BEARBEITEREMAIL' => $bearbeiteremail, + 'BEARBEITERTELEFON' => $bearbeitertelefon, + 'VERTRIEB' => $vertrieb, + 'PROJEKT' => $projektabkuerzung, + 'AUFTRAGSNUMMER' => $auftrag, + 'LIEFERSCHEINNUMMER' => $lieferschein, + 'LIEFERSCHEINDATUM' => $lieferscheindatum, + '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{ + + //$this->setCorrDetails(array("Auftrag"=>$auftrag,"Datum"=>$datum,"Ihre Kunden-Nr."=>$kundennummer,"Lieferschein"=>$lieferschein,"Buchhaltung"=>$buchhaltung)); + if($briefpapier_bearbeiter_ausblenden || $briefpapier_vertrieb_ausblenden){ + if($rechnung != ""){ + $sCD = array($this->app->erp->Beschriftung("dokument_rechnung") => $rechnung, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, $this->app->erp->Beschriftung("dokument_datum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer); + }else{ + $sCD = array($this->app->erp->Beschriftung("dokument_datum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer); + //$this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_datum")=>$datum,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer")=>$ihrebestellnummer)); + } + 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; + } + + }else{ + if($rechnung != "") + $sCD = array($this->app->erp->Beschriftung("dokument_rechnung") => $rechnung, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, $this->app->erp->Beschriftung("dokument_datum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb); + else + $sCD = array($this->app->erp->Beschriftung("dokument_datum") => $datum, $this->app->erp->Beschriftung("bezeichnungkundennummer") => $kundennummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bestellnummer") => $ihrebestellnummer, $this->app->erp->Beschriftung("auftrag_bezeichnung_bearbeiter") => $bearbeiter, $this->app->erp->Beschriftung("auftrag_bezeichnung_vertrieb") => $vertrieb); + } + + if($lieferdatum != "00.00.0000") + $sCD[$this->app->erp->Beschriftung("dokument_lieferdatum")] = $lieferdatum; + + + $this->setCorrDetails($sCD); + } + + 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"); + } + $steuer = str_replace('{USTID}',$ustid,$steuer); + $steuer = str_replace('{LAND}',$land,$steuer); + } + + $gutschrift_header=$this->app->erp->Beschriftung("gutschrift_header"); + if($bodyzusatz!="") $gutschrift_header=$gutschrift_header."\r\n".$bodyzusatz; + + if($stornorechnung) + { + $gutschrift_header = str_replace('{ART}',$this->app->erp->Beschriftung("bezeichnungstornorechnung"),$gutschrift_header); + } else { + $gutschrift_header = str_replace('{ART}',$this->app->erp->Beschriftung("dokument_gutschrift"),$gutschrift_header); + } + + $gutschrift_header = $this->app->erp->ParseUserVars("gutschrift",$id,$gutschrift_header); + + + if($this->app->erp->Firmendaten("footer_reihenfolge_gutschrift_aktivieren")=="1") { + $footervorlage = $this->app->erp->Firmendaten("footer_reihenfolge_gutschrift"); + if($footervorlage=="") + $footervorlage = "{FOOTERFREITEXT}\r\n{FOOTERTEXTVORLAGEGUTSCHRIFT}\r\n{FOOTERSTEUER}\r\n{FOOTERZAHLUNGSWEISETEXT}"; + + $footervorlage = str_replace('{FOOTERFREITEXT}',$freitext,$footervorlage); + $footervorlage = str_replace('{FOOTERTEXTVORLAGEGUTSCHRIFT}',$this->app->erp->Beschriftung("gutschrift_footer"),$footervorlage); + $footervorlage = str_replace('{FOOTERSTEUER}',$steuer,$footervorlage); + $footervorlage = str_replace('{FOOTERZAHLUNGSWEISETEXT}',$zahlungsweisetext,$footervorlage); + $footervorlage = $this->app->erp->ParseUserVars("gutschrift",$id,$footervorlage); + $footer = $footervorlage; + } else { + $footer = "$freitext"."\r\n".$this->app->erp->ParseUserVars("gutschrift",$id,$this->app->erp->Beschriftung("gutschrift_footer"))."\r\n$zahlungsweisetext\r\n$steuer"; + } + + + $this->setTextDetails(array( + "body"=>$gutschrift_header, + "footer"=>$footer)); + + $artikel = $this->app->DB->SelectArr("SELECT * FROM gutschrift_position WHERE gutschrift='$id' ORDER By sort"); + + if(!$this->app->erp->GutschriftMitUmsatzeuer($id)) $this->ust_befreit=true; + + $summe_rabatt = $this->app->DB->Select("SELECT SUM(rabatt) FROM gutschrift_position WHERE gutschrift='$id'"); + if($summe_rabatt <> 0) $this->rabatt=1; + + if($this->app->erp->Firmendaten("modul_verband")=="1") $this->rabatt=1; + + //$waehrung = $this->app->DB->Select("SELECT waehrung FROM gutschrift_position WHERE gutschrift='$id' LIMIT 1"); + $steuersatzV = $this->app->erp->GetSteuersatzNormal(false,$id,"gutschrift"); + $steuersatzR = $this->app->erp->GetSteuersatzErmaessigt(false,$id,"gutschrift"); + $gesamtsteuern = 0; + $mitumsatzsteuer = $this->app->erp->GutschriftMitUmsatzeuer($id); + $belege_subpositionenstuecklisten = $this->app->erp->Firmendaten('belege_subpositionenstuecklisten'); + $belege_stuecklisteneinrueckenmm = $this->app->erp->Firmendaten('belege_stuecklisteneinrueckenmm'); + //$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('gutschrift', $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'] = $steuersatzR; + }else{ + $value['steuersatz'] = $steuersatzV; + } + if(!is_null($tmpsteuersatz))$value['steuersatz'] = $tmpsteuersatz; + } + if($tmpsteuertext && !$value['steuertext'])$value['steuertext'] = $tmpsteuertext; + if(!$mitumsatzsteuer)$value['steuersatz'] = 0; + // negative Darstellung bei Stornorechnung + if($stornorechnung) $value['preis'] = $value['preis'] *-1; + + if(!$this->app->erp->Export($land)) + { + $value['zolltarifnummer']=""; + $value['herkunftsland']=""; + } + + $value = $this->CheckPosition($value,"gutschrift",$this->doctypeid,$value['id']); + + $value['menge'] = floatval($value['menge']); + + if($value['explodiert_parent_artikel'] > 0) + { + 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; + + $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($check_ausblenden!=1) + { + $this->addItem(array('currency'=>$value['waehrung'],'lvl'=>isset($value['lvl'])?$value['lvl']:0, + 'amount'=>$value['menge'], + 'price'=>$value['preis'], + 'tax'=>$value['umsatzsteuer'], + 'steuersatz'=>$value['steuersatz'], + 'steuertext'=>$value['steuertext'], + 'itemno'=>$value['nummer'], + 'artikel'=>$value['artikel'], + 'unit'=>$value['einheit'], + 'desc'=>$value['beschreibung'], + "name"=>ltrim($value['bezeichnung']), + 'artikelnummerkunde'=>$value['artikelnummerkunde'], + 'lieferdatum'=>$value['lieferdatum'], + 'lieferdatumkw'=>$value['lieferdatumkw'], + 'zolltarifnummer'=>$value['zolltarifnummer'], + 'herkunftsland'=>$value['herkunftsland'], + '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'], + "keinrabatterlaubt"=>$value['keinrabatterlaubt'], + "rabatt"=>$value['rabatt'])); + } + 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'])); + } + if($positionenkaufmaenischrunden) + { + $netto_gesamt = round($netto_gesamt, 2); + } + $summe = $summe + $netto_gesamt; + if(!isset($summen[$value['steuersatz']]))$summen[$value['steuersatz']] = 0; + $summen[$value['steuersatz']] += ($netto_gesamt/100)*$value['steuersatz']; + $gesamtsteuern +=($netto_gesamt/100)*$value['steuersatz']; + /* + if($value['umsatzsteuer']=="" || $value['umsatzsteuer']=="normal") + { + $summeV = $summeV + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzNormal(false,$id,"gutschrift")); + } + else { + $summeR = $summeR + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzErmaessigt(false,$id,"gutschrift")); + }*/ + + } + + 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; + } + + /* + $summe = $this->app->DB->Select("SELECT SUM(menge*preis) FROM gutschrift_position WHERE gutschrift='$id'"); + + $summeV = $this->app->DB->Select("SELECT SUM(menge*preis) FROM gutschrift_position WHERE gutschrift='$id' AND (umsatzsteuer='normal' or umsatzsteuer='')")/100 * 19; + $summeR = $this->app->DB->Select("SELECT SUM(menge*preis) FROM gutschrift_position WHERE gutschrift='$id' AND umsatzsteuer='ermaessigt'")/100 * 7; + */ + if($this->app->erp->GutschriftMitUmsatzeuer($id)) + { + $this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $gesamtsteuern,"summen"=>$summen,"totalTaxV"=>0,"totalTaxR"=>0)); + //$this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $summeV + $summeR,"totalTaxV"=>$summeV,"totalTaxR"=>$summeR)); + } else + $this->setTotals(array("totalArticles"=>$summe,"total"=>$summe)); + + /* Dateiname */ + $tmp_name = str_replace(' ','',trim($this->recipient['enterprise'])); + $tmp_name = str_replace('.','',$tmp_name); + + if($stornorechnung) + $this->filename = $datum2."_STORNO_".$belegnr.".pdf"; + else + $this->filename = $datum2."_GS".$belegnr.".pdf"; + + $this->setBarcode($belegnr); + } + + +} diff --git a/www/lib/dokumente/class.proformarechnung.php b/www/lib/dokumente/class.proformarechnung.php index f27c3c60..8ad3f647 100644 --- a/www/lib/dokumente/class.proformarechnung.php +++ b/www/lib/dokumente/class.proformarechnung.php @@ -1,577 +1,577 @@ -app=$app; - //parent::Briefpapier(); - $this->doctype="proformarechnung"; - $this->doctypeOrig=($this->app->erp->Beschriftung("bezeichnungproformarechnungersatz")?$this->app->erp->Beschriftung("bezeichnungproformarechnungersatz"):$this->app->erp->Beschriftung("dokument_proformarechnung"))." $belegnr"; - parent::__construct($this->app,$projekt); - } - - function GetProformarechnung($id,$als="",$doppeltmp=0, $_datum = null) - { - - 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; - } - - $briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden'); - $briefpapier_vertrieb_ausblenden = $this->app->erp->Firmendaten('briefpapier_vertrieb_ausblenden'); - $this->doctypeid=$id; - $this->setRecipientLieferadresse($id,"proformarechnung"); - - $data = $this->app->DB->SelectArr( - "SELECT adresse, kundennummer, sprache, auftrag, buchhaltung, bearbeiter, vertrieb, - lieferschein AS lieferscheinid, projekt, DATE_FORMAT(datum,'%d.%m.%Y') AS datum, - DATE_FORMAT(mahnwesen_datum,'%d.%m.%Y') AS mahnwesen_datum, DATE_FORMAT(lieferdatum,'%d.%m.%Y') AS lieferdatum, - belegnr, bodyzusatz, doppel, freitext, systemfreitext, ustid, typ, keinsteuersatz, soll, ist, land, - zahlungsweise, zahlungsstatus, zahlungszieltage, zahlungszieltageskonto, zahlungszielskonto, ohne_briefpapier, - ihrebestellnummer, ust_befreit, waehrung, versandart, - DATE_FORMAT(DATE_ADD(datum, INTERVAL zahlungszieltage DAY),'%d.%m.%Y') AS zahlungdatum, - DATE_FORMAT(DATE_ADD(datum, INTERVAL zahlungszieltageskonto DAY),'%d.%m.%Y') AS zahlungszielskontodatum, - abweichendebezeichnung AS proformarechnungersatz, zollinformation, lieferland, abweichendelieferadresse - FROM proformarechnung WHERE id='$id' LIMIT 1" - ); - $data = reset($data); - extract($data,EXTR_OVERWRITE); - - if($abweichendelieferadresse==1 && !empty($lieferland)){ - $land = $lieferland; - } - - 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 proformarechnung='$id' LIMIT 1"); - $lieferschein = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); - $this->app->erp->BeschriftungSprache($sprache); - - if($waehrung)$this->waehrung = $waehrung; - if($doppeltmp==1) $doppel = $doppeltmp; - $this->projekt = $projekt; - $this->anrede = $typ; - - $ihrebestellnummer = $this->app->erp->ReadyForPDF($ihrebestellnummer); - $bearbeiter = $this->app->erp->ReadyForPDF($bearbeiter); - $vertrieb = $this->app->erp->ReadyForPDF($vertrieb); - - $seriennummern = array(); - if($lieferscheinid)$seriennummern = $this->app->DB->SelectArr("SELECT * FROM seriennummern WHERE lieferschein='$lieferscheinid' AND lieferschein <> 0"); - $chargen = array(); - if($lieferscheinid)$chargen = $this->app->DB->SelectArr("SELECT * FROM chargen WHERE lieferschein='$lieferscheinid' AND lieferschein <> 0"); - - if($ohne_briefpapier=="1") - { - $this->logofile = ""; - $this->briefpapier=""; - $this->briefpapier2=""; - } - - if($zahlungszieltageskonto<=0) - $zahlungszielskontodatum = $zahlungdatum; - else - $zahlungszielskontodatum = $this->app->DB->Select("SELECT DATE_FORMAT(DATE_ADD(datum, INTERVAL $zahlungszieltageskonto DAY),'%d.%m.%Y') FROM proformarechnung WHERE id='$id' LIMIT 1"); - - if(!$this->app->erp->ProformarechnungMitUmsatzeuer($id)){ - $this->ust_befreit=true; - } - - - $zahlungsweise = strtolower($zahlungsweise); - //if($zahlungsweise=="proformarechnung"&&$zahlungsstatus!="bezahlt") -/* - if(1)$zahlungsweise=="rechnung" || $zahlungsweise=="einzugsermaechtigung" || $zahlungsweise=="lastschrift") - { - if($zahlungsweise=="rechnung") - { - } else { - //lastschrift - $zahlungsweisetext = $this->app->erp->Beschriftung("zahlung_".$zahlungsweise."_de"); - if($zahlungsweisetext=="") $zahlungsweisetext ="Der Betrag wird von Ihrem Konto abgebucht."; - if($zahlungszielskonto!=0) - $zahlungsweisetext .="\r\n".$this->app->erp->Beschriftung("dokument_skonto")." $zahlungszielskonto % aus Zahlungskonditionen"; - } - } - else { - $zahlungsweisetext = $this->app->erp->Beschriftung("zahlung_".$zahlungsweise."_de"); - if($zahlungsweisetext=="" || $zahlungsweise=="vorkasse") - $zahlungsweisetext = $this->app->erp->Beschriftung("dokument_zahlung_per")." ".ucfirst($zahlungsweise); - } -*/ - if($zahlungszieltage==0){ - $zahlungsweisetext = $this->app->erp->Beschriftung("zahlung_proformarechnung_sofort_de"); - if($zahlungsweisetext=="") $zahlungsweisetext ="Proformarechnung zahlbar sofort. "; - } - else { - $zahlungsweisetext = $this->app->erp->Beschriftung("zahlung_proformarechnung_de"); - if($zahlungsweisetext=="") $zahlungsweisetext ="Proformarechnung zahlbar innerhalb von {ZAHLUNGSZIELTAGE} Tagen bis zum {ZAHLUNGBISDATUM}. "; - $zahlungsweisetext = str_replace("{ZAHLUNGSZIELTAGE}",$zahlungszieltage,$zahlungsweisetext); - $zahlungsweisetext = str_replace("{ZAHLUNGBISDATUM}",$zahlungdatum,$zahlungsweisetext); - } - - if($zahlungszielskonto!=0) - { - $zahlungsweisetext .="\n".$this->app->erp->Beschriftung("dokument_skonto")." $zahlungszielskonto % ".$this->app->erp->Beschriftung("dokument_innerhalb")." $zahlungszieltageskonto ".$this->app->erp->Beschriftung("dokument_tagebiszum")." ".$zahlungszielskontodatum; - } - - - if($zahlungszielskonto!=0) - { - $zahlungsweisetext = str_replace("{ZAHLUNGSZIELSKONTO}",$zahlungszielskonto,$zahlungsweisetext); - $zahlungsweisetext = str_replace("{ZAHLUNGSZIELTAGESKONTO}",$zahlungszieltageskonto,$zahlungsweisetext); - $zahlungsweisetext = str_replace("{ZAHLUNGSZIELSKONTODATUM}",$zahlungszielskontodatum,$zahlungsweisetext); - } else { - $zahlungsweisetext = str_replace("{ZAHLUNGSZIELSKONTO}","",$zahlungsweisetext); - $zahlungsweisetext = str_replace("{ZAHLUNGSZIELTAGESKONTO}","",$zahlungsweisetext); - $zahlungsweisetext = str_replace("{ZAHLUNGSZIELSKONTODATUM}","",$zahlungsweisetext); - } - -/* - if($belegnr=="" || $belegnr=="0") $belegnr = "- ".$this->app->erp->Beschriftung("dokument_entwurf"); - else { - if($doppel==1 || $als=="doppel") - $belegnr .= " (".$this->app->erp->Beschriftung("dokument_proformarechnung_kopie").")"; - } -*/ - if($als=="zahlungserinnerung") - $this->doctypeOrig="Zahlungserinnerung vom ".(is_null($_datum)?$mahnwesen_datum:$_datum); - else if($als=="mahnung1") - $this->doctypeOrig="1. Mahnung vom ".(is_null($_datum)?$mahnwesen_datum:$_datum); - else if($als=="mahnung2") - $this->doctypeOrig="2. Mahnung vom ".(is_null($_datum)?$mahnwesen_datum:$_datum); - else if($als=="mahnung3") - $this->doctypeOrig="3. Mahnung vom ".(is_null($_datum)?$mahnwesen_datum:$_datum); - else if($als=="inkasso") - $this->doctypeOrig="Inkasso-Mahnung vom ".(is_null($_datum)?$mahnwesen_datum:$_datum); - else - { - if($proformarechnungersatz) - $this->doctypeOrig=($this->app->erp->Beschriftung("bezeichnungproformarechnungersatz")?$this->app->erp->Beschriftung("bezeichnungproformarechnungersatz"):$this->app->erp->Beschriftung("dokument_proformarechnung"))." $belegnr"; - else - $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_proformarechnung")." $belegnr"; - } - - - - $this->zusatzfooter = " (RE$belegnr)"; - - if($proformarechnung=="") $proformarechnung = "-"; - 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 = ""; - - //* start - if($briefpapier_bearbeiter_ausblenden || $briefpapier_vertrieb_ausblenden) - { - if($lieferschein!='-') - { - if($auftrag!="-") - { - $sCD = array($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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 - )); - } - } - } - //ende hack - - //if(!$this->app->erp->ProformarechnungMitUmsatzeuer($id) && $ustid!="" ) - if(!$this->app->erp->ProformarechnungMitUmsatzeuer($id) && $keinsteuersatz!="1") - { - $this->ust_befreit=true; - if($keinsteuersatz!="1"){ - if($this->app->erp->Export($land)) - $steuer = $this->app->erp->Beschriftung("export_lieferung_vermerk"); - else - $steuer = $this->app->erp->Beschriftung("eu_lieferung_vermerk"); - $steuer = str_replace('{USTID}',$ustid,$steuer); - $steuer = str_replace('{LAND}',$land,$steuer); - } - } - - if($als!="") - { - $body = $this->app->erp->MahnwesenBody($id,$als,$_datum); - $footer =$this->app->erp->ParseUserVars("proformarechnung",$id, $this->app->erp->Beschriftung("proformarechnung_footer")); - } - else { - $body = $this->app->erp->Beschriftung("proformarechnung_header"); - if($bodyzusatz!="") $body=$body."\r\n".$bodyzusatz; - $body = $this->app->erp->ParseUserVars("proformarechnung",$id,$body); - - if ($versandart!="" && $trackingnummer!=""){ - $versandinfo = "$versandart: $trackingnummer\r\n"; - }else{ $versandinfo ="";} - - - if($systemfreitext!="") $systemfreitext = "\r\n\r\n".$systemfreitext; - //$footer = $versandinfo."$freitext"."\r\n".$this->app->erp->ParseUserVars("proformarechnung",$id,$this->app->erp->Beschriftung("proformarechnung_footer"). - // "\r\n$steuer\r\n$zahlungsweisetext").$systemfreitext; - - - if($this->app->erp->Firmendaten("footer_reihenfolge_proformarechnung_aktivieren")=="1") - { - $footervorlage = $this->app->erp->Firmendaten("footer_reihenfolge_proformarechnung"); - 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("proformarechnung_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("proformarechnung",$id,$footervorlage); - $footer = $footervorlage; - } else { - $footer = $versandinfo."$freitext"."\r\n".$this->app->erp->ParseUserVars("proformarechnung",$id,$this->app->erp->Beschriftung("proformarechnung_footer"). - "\r\n$steuer\r\n$zahlungsweisetext").$systemfreitext; - } - } - - $this->setTextDetails(array( - "body"=>$body, - "footer"=>$footer)); - - $artikel = $this->app->DB->SelectArr("SELECT * FROM proformarechnung_position WHERE proformarechnung='$id' ORDER By sort"); - $summe_rabatt = $this->app->DB->Select("SELECT SUM(rabatt) FROM proformarechnung_position WHERE proformarechnung='$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,"proformarechnung"); - $steuersatzR = $this->app->erp->GetSteuersatzErmaessigt(false,$id,"proformarechnung"); - $gesamtsteuern = 0; - $mitumsatzsteuer = $this->app->erp->ProformarechnungMitUmsatzeuer($id); - foreach($artikel as $key=>$value) - { - if($value['umsatzsteuer'] != "ermaessigt" && $value['umsatzsteuer'] != "befreit") $value['umsatzsteuer'] = "normal"; - $tmpsteuersatz = null; - $tmpsteuertext = null; - $this->app->erp->GetSteuerPosition('proformarechnung', $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; - /* - $limit = 60; - $summary= $value['bezeichnung']; - if (strlen($summary) > $limit) - { - $value['desc']= $value['bezeichnung']; - $value['bezeichnung'] = substr($summary, 0, strrpos(substr($summary, 0, $limit), ' ')) . '...'; - } -*/ - - $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"); - - if($zollinformation) - { - - if($value['gewicht']=="") $value['gewicht'] = $this->app->DB->Select("SELECT gewicht FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); - if($value['zolltarifnummer']=="" || $value['zolltarifnummer']=="0") $value['zolltarifnummer'] = $this->app->DB->Select("SELECT zolltarifnummer FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); - if($value['herkunftsland']=="" || $value['herkunftsland']=="0") $value['herkunftsland'] = $this->app->DB->Select("SELECT herkunftsland FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); - - - $gewichtbezeichnung = $this->app->erp->Firmendaten('gewichtbezeichnung'); - if($gewichtbezeichnung=="") $gewichtbezeichnung = "kg"; - $value['beschreibung'] = $value['beschreibung']."\r\nCustoms tariff number: ".$value['zolltarifnummer']." Country of origin: ".$value['herkunftsland']; - if($value['gewicht']!="") $value['beschreibung'] = $value['beschreibung']."\r\nWeight: ".floatval($value['menge'])." x ".$value['gewicht']." ".$gewichtbezeichnung." = ".floatval($value['gewicht']*$value['menge'])." ".$gewichtbezeichnung; - } else { - $value['zolltarifnummer']=""; - $value['herkunftsland']=""; - } - - - if(!empty($seriennummern)) - { - foreach($seriennummern as $seriennummern=>$seriennummer) - { - $seriennummernliste = $seriennummernliste.$seriennummer['seriennummer'].";"; - } - - $seriennummernliste=substr($seriennummernliste, 0, -1); - - $value['seriennummern'] = $this->app->DB->Select("SELECT seriennummern FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); - - if ($value['seriennummern']=="keine"){ - $value['beschreibung'] = $value['beschreibung']; - }elseif ($value['seriennummern']==""){ - $value['beschreibung'] = $value['beschreibung']; - }else{ - $value['beschreibung'] = $value['beschreibung']."\r\n".$this->app->erp->Beschriftung("dokument_seriennummer").": ". $seriennummernliste; - } - } - - if(!empty($chargen)) - { - foreach($chargen as $chargen=>$charge) - { - $chargenliste = $chargenliste.$charge['charge'].";"; - } - - $chargenliste=substr($chargenliste, 0, -1); - - $value['chargen'] = $this->app->DB->Select("SELECT chargenverwaltung FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); - - if ($value['chargen']=="0"){ - $value['beschreibung'] = $value['beschreibung']; - }else{ - $value['beschreibung'] = $value['beschreibung']."\r\n".$this->app->erp->Beschriftung("dokument_charge").": ". $chargenliste; - } - } - - - if($value['explodiert_parent_artikel'] > 0) - { - $check_ausblenden = $this->app->DB->Select("SELECT keineeinzelartikelanzeigen FROM artikel WHERE id='".$value['explodiert_parent_artikel']."' LIMIT 1"); - } else $check_ausblenden=0; - - $value = $this->CheckPosition($value,"proformarechnung",$this->doctypeid,$value['id']); - - $value['menge'] = floatval($value['menge']); - - if($check_ausblenden!=1)// && $als=="") //TODO MAHNWESEN - { - $this->addItem(array('currency'=>$value['waehrung'], - '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'], - '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'], - "name"=>ltrim($value['bezeichnung']), - 'steuertext'=>$value['steuertext'], - "rabatt"=>$value['rabatt'])); - } - $netto_gesamt = $value['menge']*($value['preis']-($value['preis']/100*$value['rabatt'])); - $summe = $summe + $netto_gesamt; - if(!isset($summen[$value['steuersatz']]))$summen[$value['steuersatz']] = 0; - $summen[$value['steuersatz']] += ($netto_gesamt/100)*$value['steuersatz']; - $gesamtsteuern +=($netto_gesamt/100)*$value['steuersatz']; - - /* - if($value['umsatzsteuer']=="" || $value['umsatzsteuer']=="normal") - { - $summeV = $summeV + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzNormal(false,$id,"proformarechnung")); - } - else { - $summeR = $summeR + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzErmaessigt(false,$id,"proformarechnung")); - }*/ - - - } - /* - $summe = $this->app->DB->Select("SELECT SUM(menge*preis) FROM proformarechnung_position WHERE proformarechnung='$id'"); - $summeV = $this->app->DB->Select("SELECT SUM(menge*preis) FROM proformarechnung_position WHERE proformarechnung='$id' AND (umsatzsteuer!='ermaessigt')")/100 * 19; - $summeR = $this->app->DB->Select("SELECT SUM(menge*preis) FROM proformarechnung_position WHERE proformarechnung='$id' AND umsatzsteuer='ermaessigt'")/100 * 7; - */ - if($this->app->erp->ProformarechnungMitUmsatzeuer($id)) - { - //$this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $summeV + $summeR,"totalTaxV"=>$summeV,"totalTaxR"=>$summeR)); - $this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $gesamtsteuern,"summen"=>$summen,"totalTaxV"=>0,"totalTaxR"=>0)); - } else - { - $this->setTotals(array("totalArticles"=>$summe,"total"=>$summe)); - } - - /* Dateiname */ - $tmp_name = str_replace(' ','',trim($this->recipient['enterprise'])); - $tmp_name = str_replace('.','',$tmp_name); - - $this->filename = $datum."_PRE".$belegnr.".pdf"; - - $this->setBarcode($belegnr); - } - - -} +app=$app; + //parent::Briefpapier(); + $this->doctype="proformarechnung"; + $this->doctypeOrig=($this->app->erp->Beschriftung("bezeichnungproformarechnungersatz")?$this->app->erp->Beschriftung("bezeichnungproformarechnungersatz"):$this->app->erp->Beschriftung("dokument_proformarechnung"))." $belegnr"; + parent::__construct($this->app,$projekt); + } + + function GetProformarechnung($id,$als="",$doppeltmp=0, $_datum = null) + { + + 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(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false; + else $this->ust_spalteausblende=true; + } + + $briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden'); + $briefpapier_vertrieb_ausblenden = $this->app->erp->Firmendaten('briefpapier_vertrieb_ausblenden'); + $this->doctypeid=$id; + $this->setRecipientLieferadresse($id,"proformarechnung"); + + $data = $this->app->DB->SelectArr( + "SELECT adresse, kundennummer, sprache, auftrag, buchhaltung, bearbeiter, vertrieb, + lieferschein AS lieferscheinid, projekt, DATE_FORMAT(datum,'%d.%m.%Y') AS datum, + DATE_FORMAT(mahnwesen_datum,'%d.%m.%Y') AS mahnwesen_datum, DATE_FORMAT(lieferdatum,'%d.%m.%Y') AS lieferdatum, + belegnr, bodyzusatz, doppel, freitext, systemfreitext, ustid, typ, keinsteuersatz, soll, ist, land, + zahlungsweise, zahlungsstatus, zahlungszieltage, zahlungszieltageskonto, zahlungszielskonto, ohne_briefpapier, + ihrebestellnummer, ust_befreit, waehrung, versandart, + DATE_FORMAT(DATE_ADD(datum, INTERVAL zahlungszieltage DAY),'%d.%m.%Y') AS zahlungdatum, + DATE_FORMAT(DATE_ADD(datum, INTERVAL zahlungszieltageskonto DAY),'%d.%m.%Y') AS zahlungszielskontodatum, + abweichendebezeichnung AS proformarechnungersatz, zollinformation, lieferland, abweichendelieferadresse + FROM proformarechnung WHERE id='$id' LIMIT 1" + ); + $data = reset($data); + extract($data,EXTR_OVERWRITE); + + if($abweichendelieferadresse==1 && !empty($lieferland)){ + $land = $lieferland; + } + + 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 proformarechnung='$id' LIMIT 1"); + $lieferschein = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$lieferschein' LIMIT 1"); + $this->app->erp->BeschriftungSprache($sprache); + + if($waehrung)$this->waehrung = $waehrung; + if($doppeltmp==1) $doppel = $doppeltmp; + $this->projekt = $projekt; + $this->anrede = $typ; + + $ihrebestellnummer = $this->app->erp->ReadyForPDF($ihrebestellnummer); + $bearbeiter = $this->app->erp->ReadyForPDF($bearbeiter); + $vertrieb = $this->app->erp->ReadyForPDF($vertrieb); + + $seriennummern = array(); + if($lieferscheinid)$seriennummern = $this->app->DB->SelectArr("SELECT * FROM seriennummern WHERE lieferschein='$lieferscheinid' AND lieferschein <> 0"); + $chargen = array(); + if($lieferscheinid)$chargen = $this->app->DB->SelectArr("SELECT * FROM chargen WHERE lieferschein='$lieferscheinid' AND lieferschein <> 0"); + + if($ohne_briefpapier=="1") + { + $this->logofile = ""; + $this->briefpapier=""; + $this->briefpapier2=""; + } + + if($zahlungszieltageskonto<=0) + $zahlungszielskontodatum = $zahlungdatum; + else + $zahlungszielskontodatum = $this->app->DB->Select("SELECT DATE_FORMAT(DATE_ADD(datum, INTERVAL $zahlungszieltageskonto DAY),'%d.%m.%Y') FROM proformarechnung WHERE id='$id' LIMIT 1"); + + if(!$this->app->erp->ProformarechnungMitUmsatzeuer($id)){ + $this->ust_befreit=true; + } + + + $zahlungsweise = strtolower($zahlungsweise); + //if($zahlungsweise=="proformarechnung"&&$zahlungsstatus!="bezahlt") +/* + if(1)$zahlungsweise=="rechnung" || $zahlungsweise=="einzugsermaechtigung" || $zahlungsweise=="lastschrift") + { + if($zahlungsweise=="rechnung") + { + } else { + //lastschrift + $zahlungsweisetext = $this->app->erp->Beschriftung("zahlung_".$zahlungsweise."_de"); + if($zahlungsweisetext=="") $zahlungsweisetext ="Der Betrag wird von Ihrem Konto abgebucht."; + if($zahlungszielskonto!=0) + $zahlungsweisetext .="\r\n".$this->app->erp->Beschriftung("dokument_skonto")." $zahlungszielskonto % aus Zahlungskonditionen"; + } + } + else { + $zahlungsweisetext = $this->app->erp->Beschriftung("zahlung_".$zahlungsweise."_de"); + if($zahlungsweisetext=="" || $zahlungsweise=="vorkasse") + $zahlungsweisetext = $this->app->erp->Beschriftung("dokument_zahlung_per")." ".ucfirst($zahlungsweise); + } +*/ + if($zahlungszieltage==0){ + $zahlungsweisetext = $this->app->erp->Beschriftung("zahlung_proformarechnung_sofort_de"); + if($zahlungsweisetext=="") $zahlungsweisetext ="Proformarechnung zahlbar sofort. "; + } + else { + $zahlungsweisetext = $this->app->erp->Beschriftung("zahlung_proformarechnung_de"); + if($zahlungsweisetext=="") $zahlungsweisetext ="Proformarechnung zahlbar innerhalb von {ZAHLUNGSZIELTAGE} Tagen bis zum {ZAHLUNGBISDATUM}. "; + $zahlungsweisetext = str_replace("{ZAHLUNGSZIELTAGE}",$zahlungszieltage,$zahlungsweisetext); + $zahlungsweisetext = str_replace("{ZAHLUNGBISDATUM}",$zahlungdatum,$zahlungsweisetext); + } + + if($zahlungszielskonto!=0) + { + $zahlungsweisetext .="\n".$this->app->erp->Beschriftung("dokument_skonto")." $zahlungszielskonto % ".$this->app->erp->Beschriftung("dokument_innerhalb")." $zahlungszieltageskonto ".$this->app->erp->Beschriftung("dokument_tagebiszum")." ".$zahlungszielskontodatum; + } + + + if($zahlungszielskonto!=0) + { + $zahlungsweisetext = str_replace("{ZAHLUNGSZIELSKONTO}",$zahlungszielskonto,$zahlungsweisetext); + $zahlungsweisetext = str_replace("{ZAHLUNGSZIELTAGESKONTO}",$zahlungszieltageskonto,$zahlungsweisetext); + $zahlungsweisetext = str_replace("{ZAHLUNGSZIELSKONTODATUM}",$zahlungszielskontodatum,$zahlungsweisetext); + } else { + $zahlungsweisetext = str_replace("{ZAHLUNGSZIELSKONTO}","",$zahlungsweisetext); + $zahlungsweisetext = str_replace("{ZAHLUNGSZIELTAGESKONTO}","",$zahlungsweisetext); + $zahlungsweisetext = str_replace("{ZAHLUNGSZIELSKONTODATUM}","",$zahlungsweisetext); + } + +/* + if($belegnr=="" || $belegnr=="0") $belegnr = "- ".$this->app->erp->Beschriftung("dokument_entwurf"); + else { + if($doppel==1 || $als=="doppel") + $belegnr .= " (".$this->app->erp->Beschriftung("dokument_proformarechnung_kopie").")"; + } +*/ + if($als=="zahlungserinnerung") + $this->doctypeOrig="Zahlungserinnerung vom ".(is_null($_datum)?$mahnwesen_datum:$_datum); + else if($als=="mahnung1") + $this->doctypeOrig="1. Mahnung vom ".(is_null($_datum)?$mahnwesen_datum:$_datum); + else if($als=="mahnung2") + $this->doctypeOrig="2. Mahnung vom ".(is_null($_datum)?$mahnwesen_datum:$_datum); + else if($als=="mahnung3") + $this->doctypeOrig="3. Mahnung vom ".(is_null($_datum)?$mahnwesen_datum:$_datum); + else if($als=="inkasso") + $this->doctypeOrig="Inkasso-Mahnung vom ".(is_null($_datum)?$mahnwesen_datum:$_datum); + else + { + if($proformarechnungersatz) + $this->doctypeOrig=($this->app->erp->Beschriftung("bezeichnungproformarechnungersatz")?$this->app->erp->Beschriftung("bezeichnungproformarechnungersatz"):$this->app->erp->Beschriftung("dokument_proformarechnung"))." $belegnr"; + else + $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_proformarechnung")." $belegnr"; + } + + + + $this->zusatzfooter = " (RE$belegnr)"; + + if($proformarechnung=="") $proformarechnung = "-"; + 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 = ""; + + //* start + if($briefpapier_bearbeiter_ausblenden || $briefpapier_vertrieb_ausblenden) + { + if($lieferschein!='-') + { + if($auftrag!="-") + { + $sCD = array($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_auftrag")=>$auftrag,$this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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($this->app->erp->Beschriftung("dokument_proformarechnungsdatum")=>$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 + )); + } + } + } + //ende hack + + //if(!$this->app->erp->ProformarechnungMitUmsatzeuer($id) && $ustid!="" ) + if(!$this->app->erp->ProformarechnungMitUmsatzeuer($id) && $keinsteuersatz!="1") + { + $this->ust_befreit=true; + if($keinsteuersatz!="1"){ + if($this->app->erp->Export($land)) + $steuer = $this->app->erp->Beschriftung("export_lieferung_vermerk"); + else + $steuer = $this->app->erp->Beschriftung("eu_lieferung_vermerk"); + $steuer = str_replace('{USTID}',$ustid,$steuer); + $steuer = str_replace('{LAND}',$land,$steuer); + } + } + + if($als!="") + { + $body = $this->app->erp->MahnwesenBody($id,$als,$_datum); + $footer =$this->app->erp->ParseUserVars("proformarechnung",$id, $this->app->erp->Beschriftung("proformarechnung_footer")); + } + else { + $body = $this->app->erp->Beschriftung("proformarechnung_header"); + if($bodyzusatz!="") $body=$body."\r\n".$bodyzusatz; + $body = $this->app->erp->ParseUserVars("proformarechnung",$id,$body); + + if ($versandart!="" && $trackingnummer!=""){ + $versandinfo = "$versandart: $trackingnummer\r\n"; + }else{ $versandinfo ="";} + + + if($systemfreitext!="") $systemfreitext = "\r\n\r\n".$systemfreitext; + //$footer = $versandinfo."$freitext"."\r\n".$this->app->erp->ParseUserVars("proformarechnung",$id,$this->app->erp->Beschriftung("proformarechnung_footer"). + // "\r\n$steuer\r\n$zahlungsweisetext").$systemfreitext; + + + if($this->app->erp->Firmendaten("footer_reihenfolge_proformarechnung_aktivieren")=="1") + { + $footervorlage = $this->app->erp->Firmendaten("footer_reihenfolge_proformarechnung"); + 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("proformarechnung_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("proformarechnung",$id,$footervorlage); + $footer = $footervorlage; + } else { + $footer = $versandinfo."$freitext"."\r\n".$this->app->erp->ParseUserVars("proformarechnung",$id,$this->app->erp->Beschriftung("proformarechnung_footer"). + "\r\n$steuer\r\n$zahlungsweisetext").$systemfreitext; + } + } + + $this->setTextDetails(array( + "body"=>$body, + "footer"=>$footer)); + + $artikel = $this->app->DB->SelectArr("SELECT * FROM proformarechnung_position WHERE proformarechnung='$id' ORDER By sort"); + $summe_rabatt = $this->app->DB->Select("SELECT SUM(rabatt) FROM proformarechnung_position WHERE proformarechnung='$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,"proformarechnung"); + $steuersatzR = $this->app->erp->GetSteuersatzErmaessigt(false,$id,"proformarechnung"); + $gesamtsteuern = 0; + $mitumsatzsteuer = $this->app->erp->ProformarechnungMitUmsatzeuer($id); + foreach($artikel as $key=>$value) + { + if($value['umsatzsteuer'] != "ermaessigt" && $value['umsatzsteuer'] != "befreit") $value['umsatzsteuer'] = "normal"; + $tmpsteuersatz = null; + $tmpsteuertext = null; + $this->app->erp->GetSteuerPosition('proformarechnung', $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; + /* + $limit = 60; + $summary= $value['bezeichnung']; + if (strlen($summary) > $limit) + { + $value['desc']= $value['bezeichnung']; + $value['bezeichnung'] = substr($summary, 0, strrpos(substr($summary, 0, $limit), ' ')) . '...'; + } +*/ + + $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"); + + if($zollinformation) + { + + if($value['gewicht']=="") $value['gewicht'] = $this->app->DB->Select("SELECT gewicht FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); + if($value['zolltarifnummer']=="" || $value['zolltarifnummer']=="0") $value['zolltarifnummer'] = $this->app->DB->Select("SELECT zolltarifnummer FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); + if($value['herkunftsland']=="" || $value['herkunftsland']=="0") $value['herkunftsland'] = $this->app->DB->Select("SELECT herkunftsland FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); + + + $gewichtbezeichnung = $this->app->erp->Firmendaten('gewichtbezeichnung'); + if($gewichtbezeichnung=="") $gewichtbezeichnung = "kg"; + $value['beschreibung'] = $value['beschreibung']."\r\nCustoms tariff number: ".$value['zolltarifnummer']." Country of origin: ".$value['herkunftsland']; + if($value['gewicht']!="") $value['beschreibung'] = $value['beschreibung']."\r\nWeight: ".floatval($value['menge'])." x ".$value['gewicht']." ".$gewichtbezeichnung." = ".floatval($value['gewicht']*$value['menge'])." ".$gewichtbezeichnung; + } else { + $value['zolltarifnummer']=""; + $value['herkunftsland']=""; + } + + + if(!empty($seriennummern)) + { + foreach($seriennummern as $seriennummern=>$seriennummer) + { + $seriennummernliste = $seriennummernliste.$seriennummer['seriennummer'].";"; + } + + $seriennummernliste=substr($seriennummernliste, 0, -1); + + $value['seriennummern'] = $this->app->DB->Select("SELECT seriennummern FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); + + if ($value['seriennummern']=="keine"){ + $value['beschreibung'] = $value['beschreibung']; + }elseif ($value['seriennummern']==""){ + $value['beschreibung'] = $value['beschreibung']; + }else{ + $value['beschreibung'] = $value['beschreibung']."\r\n".$this->app->erp->Beschriftung("dokument_seriennummer").": ". $seriennummernliste; + } + } + + if(!empty($chargen)) + { + foreach($chargen as $chargen=>$charge) + { + $chargenliste = $chargenliste.$charge['charge'].";"; + } + + $chargenliste=substr($chargenliste, 0, -1); + + $value['chargen'] = $this->app->DB->Select("SELECT chargenverwaltung FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); + + if ($value['chargen']=="0"){ + $value['beschreibung'] = $value['beschreibung']; + }else{ + $value['beschreibung'] = $value['beschreibung']."\r\n".$this->app->erp->Beschriftung("dokument_charge").": ". $chargenliste; + } + } + + + if($value['explodiert_parent_artikel'] > 0) + { + $check_ausblenden = $this->app->DB->Select("SELECT keineeinzelartikelanzeigen FROM artikel WHERE id='".$value['explodiert_parent_artikel']."' LIMIT 1"); + } else $check_ausblenden=0; + + $value = $this->CheckPosition($value,"proformarechnung",$this->doctypeid,$value['id']); + + $value['menge'] = floatval($value['menge']); + + if($check_ausblenden!=1)// && $als=="") //TODO MAHNWESEN + { + $this->addItem(array('currency'=>$value['waehrung'], + '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'], + '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'], + "name"=>ltrim($value['bezeichnung']), + 'steuertext'=>$value['steuertext'], + "rabatt"=>$value['rabatt'])); + } + $netto_gesamt = $value['menge']*($value['preis']-($value['preis']/100*$value['rabatt'])); + $summe = $summe + $netto_gesamt; + if(!isset($summen[$value['steuersatz']]))$summen[$value['steuersatz']] = 0; + $summen[$value['steuersatz']] += ($netto_gesamt/100)*$value['steuersatz']; + $gesamtsteuern +=($netto_gesamt/100)*$value['steuersatz']; + + /* + if($value['umsatzsteuer']=="" || $value['umsatzsteuer']=="normal") + { + $summeV = $summeV + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzNormal(false,$id,"proformarechnung")); + } + else { + $summeR = $summeR + (($netto_gesamt/100)*$this->app->erp->GetSteuersatzErmaessigt(false,$id,"proformarechnung")); + }*/ + + + } + /* + $summe = $this->app->DB->Select("SELECT SUM(menge*preis) FROM proformarechnung_position WHERE proformarechnung='$id'"); + $summeV = $this->app->DB->Select("SELECT SUM(menge*preis) FROM proformarechnung_position WHERE proformarechnung='$id' AND (umsatzsteuer!='ermaessigt')")/100 * 19; + $summeR = $this->app->DB->Select("SELECT SUM(menge*preis) FROM proformarechnung_position WHERE proformarechnung='$id' AND umsatzsteuer='ermaessigt'")/100 * 7; + */ + if($this->app->erp->ProformarechnungMitUmsatzeuer($id)) + { + //$this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $summeV + $summeR,"totalTaxV"=>$summeV,"totalTaxR"=>$summeR)); + $this->setTotals(array("totalArticles"=>$summe,"total"=>$summe + $gesamtsteuern,"summen"=>$summen,"totalTaxV"=>0,"totalTaxR"=>0)); + } else + { + $this->setTotals(array("totalArticles"=>$summe,"total"=>$summe)); + } + + /* Dateiname */ + $tmp_name = str_replace(' ','',trim($this->recipient['enterprise'])); + $tmp_name = str_replace('.','',$tmp_name); + + $this->filename = $datum."_PRE".$belegnr.".pdf"; + + $this->setBarcode($belegnr); + } + + +} diff --git a/www/lib/dokumente/class.rechnung.php b/www/lib/dokumente/class.rechnung.php index cf9cd07b..b3b4af8e 100644 --- a/www/lib/dokumente/class.rechnung.php +++ b/www/lib/dokumente/class.rechnung.php @@ -50,7 +50,7 @@ class RechnungPDF extends BriefpapierCustom { { // 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; + if(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false; else $this->ust_spalteausblende=true; } $lvl = null;