app=$app; //parent::Briefpapier(); $this->doctype="bestellung"; $this->doctypeOrig="Bestellung"; $this->bestellungohnepreis=0; parent::__construct($this->app,$projekt); } function GetBestellung($id) { $this->doctypeid = $id; $briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden'); $this->setRecipientLieferadresse($id,"bestellung"); $data = $this->app->DB->SelectRow( "SELECT adresse,projekt, sprache, angebot, ustid, keineartikelnummern, bestellbestaetigung, artikelnummerninfotext, einkaeufer, belegnr, freitext, bodyzusatz, ohne_briefpapier, abweichendebezeichnung, bestellungohnepreis, kundennummerlieferant AS kundennummer, DATE_FORMAT(datum,'%d.%m.%Y') AS datum, DATE_FORMAT(datum,'%Y%m%d') as datum2, lieferantennummer FROM bestellung WHERE id='$id' LIMIT 1" ); extract($data,EXTR_OVERWRITE); $adresse = $data['adresse']; $sprache = $data['sprache']; $angebot = $data['angebot']; $ustid = $data['ustid']; $projekt = $data['projekt']; $keineartikelnummern = $data['keineartikelnummern']; $bestellbestaetigung = $data['bestellbestaetigung']; $artikelnummerninfotext = $data['artikelnummerninfotext']; $einkaeufer = $data['einkaeufer']; $belegnr = $data['belegnr']; $freitext = $data['freitext']; $bodyzusatz = $data['bodyzusatz']; $ohne_briefpapier = $data['ohne_briefpapier']; $abweichendebezeichnung = $data['abweichendebezeichnung']; $bestellungohnepreis = $data['bestellungohnepreis']; $kundennummer = $data['kundennummer']; $datum = $data['datum']; $datum2 = $data['datum2']; $lieferantennummer = $data['lieferantennummer']; $this->bestellungohnepreis=$data['bestellungohnepreis']; if(empty($kundennummer)) { $kundennummer = $this->app->DB->Select("SELECT kundennummerlieferant FROM adresse WHERE id='$adresse' LIMIT 1"); } if($einkaeufer=='') { $einkaeufer = $this->app->DB->Select("SELECT bearbeiter FROM bestellung WHERE id='$id' LIMIT 1"); } if(empty($sprache)) { $sprache = $this->app->DB->Select("SELECT sprache FROM adresse WHERE id='$adresse' LIMIT 1"); } $kundennummer = $this->app->erp->ReadyForPDF($kundennummer); $einkaeufer = $this->app->erp->ReadyForPDF($einkaeufer); $angebot = $this->app->erp->ReadyForPDF($angebot); $this->app->erp->BeschriftungSprache($sprache); $this->sprache = $sprache; $projektabkuerzung = $this->app->DB->Select(sprintf('SELECT abkuerzung FROM projekt WHERE id = %d', $projekt)); if($this->bestellungohnepreis) { $this->nichtsichtbar_summe = 1; } if($ohne_briefpapier=='1') { $this->logofile = ''; $this->briefpapier=''; $this->briefpapier2=''; } if($belegnr=='' || $belegnr=='0') { $belegnr = '- '.$this->app->erp->Beschriftung('dokument_entwurf'); } $this->doctypeOrig=$this->app->erp->Beschriftung('dokument_bestellung')." $belegnr"; if($abweichendebezeichnung) { $this->doctypeOrig=($this->app->erp->Beschriftung('bezeichnungbestellungersatz')?$this->app->erp->Beschriftung('bezeichnungbestellungersatz'):$this->app->erp->Beschriftung('dokument_bestellung'))." $belegnr"; } else { $this->doctypeOrig=$this->app->erp->Beschriftung('dokument_bestellung')." $belegnr"; } if($angebot=='') { $angebot = '-'; } if($kundennummer=='') { $kundennummer= '-'; } if(!$this->app->erp->BestellungMitUmsatzeuer($id)) { $this->ust_befreit=true; } /** @var \Xentral\Modules\Company\Service\DocumentCustomizationService $service */ $service = $this->app->Container->get('DocumentCustomizationService'); if($block = $service->findActiveBlock('corr', 'suppliers_order', $projekt)) { $sCD = $service->parseBlockAsArray($this->getLanguageCodeFrom($this->sprache),'corr', 'suppliers_order',[ 'BESTELLNUMMER' => $belegnr, 'DATUM' => $datum, 'KUNDENNUMMER' => $kundennummer, 'EINKAEUFER' => $einkaeufer, 'LIEFERANTENNUMMER' => $lieferantennummer, 'PROJEKT' => $projektabkuerzung, 'EMAIL' => '', 'TELEFON' => '', 'BEARBEITER' => '', 'VERTRIEB' => '', ], $projekt); if(!empty($sCD)) { switch($block['fontstyle']) { case 'f': $this->setBoldCorrDetails($sCD); break; case 'i': $this->setItalicCorrDetails($sCD); break; case 'fi': $this->setItalicBoldCorrDetails($sCD); break; default: $this->setCorrDetails($sCD, true); break; } } } else{ if($briefpapier_bearbeiter_ausblenden){ $this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_bestellung_angebotnummer") => $angebot, $this->app->erp->Beschriftung("dokument_bestellung_unserekundennummer") => $kundennummer, $this->app->erp->Beschriftung("dokument_bestelldatum") => $datum)); }else{ $this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_bestellung_angebotnummer") => $angebot, $this->app->erp->Beschriftung("dokument_bestellung_unserekundennummer") => $kundennummer, $this->app->erp->Beschriftung("dokument_bestelldatum") => $datum, $this->app->erp->Beschriftung("dokument_bestellung_einkauf") => $einkaeufer)); } } if(!$this->app->erp->BestellungMitUmsatzeuer($id) && $ustid!='' ) { //$steuer = "\nSteuerfreie innergemeinschaftliche Lieferung. Ihre USt-IdNr. $ustid Land: $land"; $this->ust_befreit=true; if($keinsteuersatz!='1') { $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('bestellung_header'); if($bodyzusatz!='') { $body=$body."\r\n".$bodyzusatz; } $body = $this->app->erp->ParseUserVars('bestellung',$id,$body); if($this->app->erp->Firmendaten('footer_reihenfolge_bestellung_aktivieren')=='1') { $footervorlage = $this->app->erp->Firmendaten('footer_reihenfolge_bestellung'); if($footervorlage==''){ $footervorlage = "{FOOTERFREITEXT}\r\n{FOOTERTEXTVORLAGEBESTELLUNG}"; } $footervorlage = str_replace('{FOOTERFREITEXT}',$freitext,$footervorlage); $footervorlage = str_replace('{FOOTERTEXTVORLAGEBESTELLUNG}',$this->app->erp->Beschriftung("bestellung_footer"),$footervorlage); $footervorlage = $this->app->erp->ParseUserVars("bestellung",$id,$footervorlage); $footer = $footervorlage; } else { $footer = $freitext."\r\n".$this->app->erp->ParseUserVars('bestellung',$id,$this->app->erp->Beschriftung("bestellung_footer")); } if($bestellbestaetigung) { $this->setTextDetails(array( "body"=>$body, "footer"=>$footer."\r\n".$this->app->erp->Beschriftung('dokument_bestellung_bestaetigung'))); } else { $this->setTextDetails(array( "body"=>$body, "footer"=>$footer)); } $artikel = $this->app->DB->SelectArr( "SELECT bp.*, art.ean AS artean, art.nummer AS artnummer, art.herstellernummer AS artherstellernummer, art.einheit as arteinheit, art.hersteller AS arthersteller FROM bestellung_position AS bp LEFT JOIN artikel AS art ON bp.artikel = art.id WHERE bp.bestellung='$id' ORDER By bp.sort" ); if(empty($artikel)) { $artikel = []; } $steuersatzV = $this->app->erp->GetSteuersatzNormal(false,$id,'bestellung'); $steuersatzR = $this->app->erp->GetSteuersatzErmaessigt(false,$id,'bestellung'); $gesamtsteuern = 0; $mitumsatzsteuer = $this->app->erp->BestellungMitUmsatzeuer($id); //$waehrung = $this->app->DB->Select("SELECT waehrung FROM bestellung_position WHERE bestellung='$id' LIMIT 1"); $summe = 0; foreach($artikel as $key=>$value) { $lieferdatum = $this->app->String->Convert($value['lieferdatum'],'%1-%2-%3','%3.%2.%1'); if($lieferdatum==='00.00.0000') { $lieferdatum =''; }//$this->app->erp->Beschriftung("dokument_lieferdatum_sofort"); if($value['umsatzsteuer'] !== 'ermaessigt' && $value['umsatzsteuer'] !== 'befreit') { $value['umsatzsteuer'] = 'normal'; } $tmpsteuersatz = null; $tmpsteuertext = null; $this->app->erp->GetSteuerPosition('bestellung', $value['id'],$tmpsteuersatz, $tmpsteuertext); if($value['steuersatz'] === null || $value['steuersatz'] < 0) { if($value['umsatzsteuer'] === 'ermaessigt') { $value['steuersatz'] = $steuersatzR; } elseif($value['umsatzsteuer'] === 'befreit') { $value['steuersatz'] = 0; }else{ $value['steuersatz'] = $steuersatzV; } if($tmpsteuersatz !== null) { $value['steuersatz'] = $tmpsteuersatz; } } if($tmpsteuertext && !$value['steuertext']) { $value['steuertext'] = $tmpsteuertext; } if(!$mitumsatzsteuer) { $value['steuersatz'] = 0; } // if(!$this->app->erp->BestellungMitUmsatzeuer($id)) $value[umsatzsteuer] = ""; if($keineartikelnummern==1) { $value['bestellnummer'] = $this->app->erp->Beschriftung('dokument_bestellung_keineartikelnummer'); } $ohne_artikeltext = $this->app->DB->Select("SELECT ohne_artikeltext FROM ".$this->table." WHERE id='".$this->id."' LIMIT 1"); if($ohne_artikeltext=='1') { $value['beschreibung']=''; } $value['artikelnummer']= $value['artnummer'];// $this->app->DB->Select("SELECT nummer FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); if($artikelnummerninfotext) { if($value['bestellnummer']!=''){ $value['beschreibung'] = $value['beschreibung'] . "\n" . $this->app->erp->Beschriftung('dokument_bestellung_bestellnummer') . ': ' . $value['bestellnummer']; } $value['bestellnummer']=$value['artikelnummer']; } else { if($value['artikelnummer']!=''){ $value['beschreibung'] = $value['beschreibung'] . "\n" . $this->app->erp->Beschriftung('dokument_bestellung_unsereartikelnummer') . ': ' . $value['artikelnummer']; } } if($value['vpe'] > 1 && is_numeric($value['vpe'])) { $value['beschreibung'] = $value['beschreibung']."\n".$this->app->erp->Beschriftung('dokument_bestellung_mengeinvpe').': '.$value['vpe']; //umschalbar in der Zukunft $value['preis'] = $value['preis']*$value['menge']/($value['menge'] / $value['vpe']); $value['menge'] = round($value['menge'] / $value['vpe'],2); $value['einheit'] = "VPE"; } elseif((String)$value['einheit'] === '') { $value['einheit'] = $value['arteinheit'];// $this->app->DB->Select("SELECT einheit FROM artikel WHERE id = '".$value['artikel']."' LIMIT 1"); if((String)$value['einheit'] === '') { $value['einheit'] = $this->app->erp->Firmendaten('artikeleinheit_standard'); } } if($value['beschreibung']!='') { $newline="\n"; } if($this->bestellungohnepreis) { $value['preis'] = null; } if($value['waehrung']!='' && $value['waehrung']!=$this->waehrung){ $this->waehrung = $value['waehrung']; } $value['menge'] = (float)$value['menge']; $value['herstellernummer'] = $value['artherstellernummer'];// $this->app->DB->Select("SELECT herstellernummer FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); $value['hersteller'] = $value['arthersteller'];//$this->app->DB->Select("SELECT hersteller FROM artikel WHERE id='".$value['artikel']."' LIMIT 1"); $this->addItem( array( 'belegposition'=>$value['id'], 'artikel'=>$value['artikel'], 'currency'=>$value['waehrung'], 'amount'=>$value['menge'], 'price'=>$value['preis'], 'tax'=>$value['umsatzsteuer'],'steuersatz'=>$value['steuersatz'], 'steuertext'=>$value['steuertext'], 'vpe'=>$value['vpe'], 'unit'=>$value['einheit'], 'itemno'=>$value['bestellnummer'], 'desc'=>$value['beschreibung'].($lieferdatum!=''?$newline.$this->app->erp->Beschriftung('dokument_lieferdatum').': '.$lieferdatum:''), 'hersteller'=>$value['hersteller'], 'herstellernummer'=>$value['herstellernummer'], '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"=>$value['bezeichnunglieferant'] ) ); $netto_gesamt = $value['menge']*$value['preis']; $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']; } /* $summe = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position WHERE bestellung='$id'"); $summeV = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position WHERE bestellung='$id' AND (umsatzsteuer='normal' || umsatzsteuer='') ")/100 * $this->app->erp->GetSteuersatzNormal(false,$id,"bestellung"); $summeR = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position WHERE bestellung='$id' AND umsatzsteuer='ermaessigt'")/100 * $this->app->erp->GetSteuersatzErmaessigt(false,$id,"bestellung"); */ if($this->bestellungohnepreis!=1) { if($this->app->erp->BestellungMitUmsatzeuer($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'])); $this->filename = $datum2.'_BE'.$belegnr.'.pdf'; $this->setBarcode($belegnr); } }