app=$app; //parent::Briefpapier(); $this->doctypeOrig='Spedition'; $this->doctype='spedition'; parent::__construct($this->app,$projekt); } function GetSpedition($id) { $this->doctypeid = $id; $briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden'); $briefpapier_vertrieb_ausblenden = $this->app->erp->Firmendaten('briefpapier_vertrieb_ausblenden'); $adresse = $this->app->DB->Select("SELECT adresse FROM spedition WHERE id='$id' LIMIT 1"); //$this->setRecipientDB($adresse); $this->setRecipientLieferadresse($id,'spedition'); // OfferNo, customerId, OfferDate $kundennummer = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE id='$adresse' LIMIT 1"); $sprache = $this->app->DB->Select("SELECT sprache FROM spedition WHERE id='$id' LIMIT 1"); if(empty($sprache))$sprache = $this->app->DB->Select("SELECT sprache FROM adresse WHERE id='$adresse' LIMIT 1"); $this->sprache = $sprache; $this->app->erp->BeschriftungSprache($sprache); $angebot =''; /*$vertrieb= $this->app->DB->Select("SELECT vertrieb FROM spedition WHERE id='$id' LIMIT 1"); $vertrieb = $this->app->erp->ReadyForPDF($vertrieb); $bearbeiter= $this->app->DB->Select("SELECT bearbeiter FROM spedition WHERE id='$id' LIMIT 1"); $bearbeiter = $this->app->erp->ReadyForPDF($bearbeiter);*/ $vertrieb = ''; $bearbeiter = ''; $datum = $this->app->DB->Select("SELECT DATE_FORMAT(datum,'%d.%m.%Y') FROM spedition WHERE id='$id' LIMIT 1"); $land = $this->app->DB->Select("SELECT land FROM spedition WHERE id='$id' LIMIT 1"); $ustid = '';//$this->app->DB->Select("SELECT ustid FROM spedition WHERE id='$id' LIMIT 1"); $status = $this->app->DB->Select("SELECT status FROM spedition WHERE id='$id' LIMIT 1"); $keinsteuersatz = '';//$this->app->DB->Select("SELECT keinsteuersatz FROM spedition WHERE id='$id' LIMIT 1"); $belegnr = $this->app->DB->Select("SELECT if(status='angelegt','ENTWURF',CONCAT(DATE_FORMAT(datum,'%Y%m%d'),'/',id)) FROM spedition WHERE id='$id' LIMIT 1"); $freitext = $this->app->DB->Select("SELECT freitext FROM spedition WHERE id='$id' LIMIT 1"); $this->anrede = $this->app->DB->Select("SELECT typ FROM spedition WHERE id='$id' LIMIT 1"); $bodyzusatz = $this->app->DB->Select("SELECT bodyzusatz FROM spedition WHERE id='$id' LIMIT 1"); $telefax= '';//$this->app->DB->Select("SELECT telefax FROM spedition WHERE id='$id' LIMIT 1"); $auftragersatz = '';//$this->app->DB->Select("SELECT abweichendebezeichnung FROM spedition WHERE id='$id' LIMIT 1"); $waehrung = $this->app->DB->Select("SELECT waehrung FROM spedition WHERE id='$id' LIMIT 1"); if($waehrung)$this->waehrung = $waehrung; if($belegnr=='' || $belegnr=='0') { $belegnr = 'Speditionsauftrag - '.$this->app->erp->Beschriftung('dokument_entwurf'); } else { $belegnr = 'Speditionsauftrag '.$belegnr; } $this->doctypeOrig=$this->app->erp->Beschriftung("dokument_spedition_bestaetigung")." $belegnr"; $this->zusatzfooter = " (SP$belegnr)"; $auftrag = '-'; if($kundennummer=='') { $kundennummer= '-'; } $zahlungsweise = '';//$this->app->DB->Select("SELECT zahlungsweise FROM spedition WHERE id='$id' LIMIT 1"); $zahlungsstatus = '';//$this->app->DB->Select("SELECT zahlungsstatus FROM spedition WHERE id='$id' LIMIT 1"); $zahlungszieltage = '';//$this->app->DB->Select("SELECT zahlungszieltage FROM spedition WHERE id='$id' LIMIT 1"); $zahlungszieltageskonto = '';//$this->app->DB->Select("SELECT zahlungszieltageskonto FROM spedition WHERE id='$id' LIMIT 1"); $zahlungszielskonto = '';//$this->app->DB->Select("SELECT zahlungszielskonto FROM spedition WHERE id='$id' LIMIT 1"); $ihrebestellnummer = '';//$this->app->DB->Select("SELECT ihrebestellnummer FROM spedition WHERE id='$id' LIMIT 1"); $ihrebestellnummer = $this->app->erp->ReadyForPDF($ihrebestellnummer); $ohne_briefpapier = '';//$this->app->DB->Select("SELECT ohne_briefpapier FROM spedition WHERE id='$id' LIMIT 1"); if($ohne_briefpapier=='1') { $this->logofile = ''; $this->briefpapier=''; $this->briefpapier2=''; } //$zahlungstext = "\nZahlungsweise: $zahlungsweise "; $zahlungstext = "\n".ucfirst($zahlungsweise); if($zahlungsweise==='lastschrift' || $zahlungsweise==='einzugsermaechtigung') $zahlungsweise='lastschrift'; if($zahlungsweise==='rechnung') { // das ist immer ein Vorschlag und keine Rechnung! Daher hier anderen Text! if($zahlungszieltage >0){ $zahlung_rechnung_de = $this->app->erp->Beschriftung('zahlung_rechnung_de'); if(empty($zahlung_rechnung_de)){ $zahlungstext = $this->app->erp->Beschriftung('dokument_zahlung_rechnung_anab'); } else{ $zahlungstext = $zahlung_rechnung_de; } } 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}',$zahlungszielskonto,$skontotext); $skontotext = str_replace('{ZAHLUNGSZIELTAGESKONTO}',$zahlungszieltageskonto,$skontotext); $zahlungstext .= "\n".$skontotext; } else { if($zahlungszielskonto>0) $zahlungstext .= "\n".$this->app->erp->Beschriftung('dokument_skonto')." $zahlungszielskonto% ".$this->app->erp->Beschriftung('dokument_innerhalb')." $zahlungszieltageskonto ".$this->app->erp->Beschriftung('dokument_tagen'); } } $zahlungsweise = ucfirst($zahlungsweise); if($telefax!="") { if($briefpapier_bearbeiter_ausblenden || $briefpapier_vertrieb_ausblenden) { $scD = array($this->app->erp->Beschriftung('dokument_angebot')=>$angebot,$this->app->erp->Beschriftung('bezeichnungkundennummer')=>$kundennummer,$this->app->erp->Beschriftung('spedition_bezeichnung_bestellnummer')=>$ihrebestellnummer,$this->app->erp->Beschriftung('dokument_auftragsdatum')=>$datum); if(!$briefpapier_bearbeiter_ausblenden) { if($bearbeiter)$scD[$this->app->erp->Beschriftung('spedition_bezeichnung_bearbeiter')] = $bearbeiter; }elseif(!$briefpapier_vertrieb_ausblenden) { if($vertrieb)$scD[$this->app->erp->Beschriftung('spedition_bezeichnung_vertrieb')] = $vertrieb; } $this->setCorrDetails($scD); //$this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_angebot")=>$angebot,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("spedition_bezeichnung_bestellnummer")=>$ihrebestellnummer,$this->app->erp->Beschriftung("dokument_auftragsdatum")=>$datum)); }else{ if($vertrieb!=$bearbeiter) $this->setCorrDetails(array($this->app->erp->Beschriftung('dokument_angebot')=>$angebot,$this->app->erp->Beschriftung('bezeichnungkundennummer')=>$kundennummer, $this->app->erp->Beschriftung('spedition_bezeichnung_bestellnummer')=>$ihrebestellnummer,$this->app->erp->Beschriftung('dokument_auftragsdatum')=>$datum,$this->app->erp->Beschriftung('spedition_bezeichnung_bearbeiter')=>$bearbeiter,$this->app->erp->Beschriftung('spedition_bezeichnung_vertrieb')=>$vertrieb)); else $this->setCorrDetails(array($this->app->erp->Beschriftung('dokument_angebot')=>$angebot,$this->app->erp->Beschriftung('bezeichnungkundennummer')=>$kundennummer,$this->app->erp->Beschriftung('spedition_bezeichnung_bestellnummer')=>$ihrebestellnummer,$this->app->erp->Beschriftung('dokument_auftragsdatum')=>$datum,$this->app->erp->Beschriftung('spedition_bezeichnung_bearbeiter')=>$bearbeiter)); } } else { if($briefpapier_bearbeiter_ausblenden || $briefpapier_vertrieb_ausblenden) { $scD = array($this->app->erp->Beschriftung('dokument_angebot')=>$angebot,$this->app->erp->Beschriftung('bezeichnungkundennummer')=>$kundennummer,$this->app->erp->Beschriftung('spedition_bezeichnung_bestellnummer')=>$ihrebestellnummer,$this->app->erp->Beschriftung('dokument_auftragsdatum')=>$datum); if(!$briefpapier_bearbeiter_ausblenden) { if($bearbeiter)$scD[$this->app->erp->Beschriftung('spedition_bezeichnung_bearbeiter')] = $bearbeiter; }elseif(!$briefpapier_vertrieb_ausblenden) { if($vertrieb)$scD[$this->app->erp->Beschriftung('spedition_bezeichnung_vertrieb')] = $vertrieb; } $this->setCorrDetails($scD); //$this->setCorrDetails(array($this->app->erp->Beschriftung("dokument_angebot")=>$angebot,$this->app->erp->Beschriftung("bezeichnungkundennummer")=>$kundennummer,$this->app->erp->Beschriftung("spedition_bezeichnung_bestellnummer")=>$ihrebestellnummer,$this->app->erp->Beschriftung("dokument_auftragsdatum")=>$datum)); }else{ if($vertrieb!=$bearbeiter) $this->setCorrDetails(array($this->app->erp->Beschriftung('dokument_angebot')=>$angebot,$this->app->erp->Beschriftung('bezeichnungkundennummer')=>$kundennummer,$this->app->erp->Beschriftung('spedition_bezeichnung_bestellnummer')=>$ihrebestellnummer,$this->app->erp->Beschriftung('dokument_auftragsdatum')=>$datum,$this->app->erp->Beschriftung("spedition_bezeichnung_bearbeiter")=>$bearbeiter,$this->app->erp->Beschriftung("spedition_bezeichnung_vertrieb")=>$vertrieb)); else $this->setCorrDetails(array($this->app->erp->Beschriftung('dokument_angebot')=>$angebot,$this->app->erp->Beschriftung('bezeichnungkundennummer')=>$kundennummer,$this->app->erp->Beschriftung('spedition_bezeichnung_bestellnummer')=>$ihrebestellnummer,$this->app->erp->Beschriftung('dokument_auftragsdatum')=>$datum,$this->app->erp->Beschriftung("spedition_bezeichnung_bearbeiter")=>$bearbeiter)); } } if(!$this->app->erp->AuftragMitUmsatzeuer($id) && $keinsteuersatz!='1') { if($this->app->erp->Export($land)){ $steuerzeile = $this->app->erp->Beschriftung('export_lieferung_vermerk'); } else{ $steuerzeile = $this->app->erp->Beschriftung('eu_lieferung_vermerk'); } $steuerzeile = str_replace(['{USTID}','{LAND}'],[$ustid,$land],$steuerzeile); } if($this->app->erp->Firmendaten('footer_reihenfolge_auftrag_aktivieren')=='1') { $footervorlage = $this->app->erp->Firmendaten('footer_reihenfolge_auftrag'); if($footervorlage=='') $footervorlage = "{FOOTERFREITEXT}\r\n{FOOTERTEXTVORLAGEAUFTRAG}\r\n{FOOTERSTEUER}\r\n{FOOTERZAHLUNGSWEISETEXT}"; $footervorlage = str_replace('{FOOTERFREITEXT}',$freitext,$footervorlage); $footervorlage = str_replace('{FOOTERTEXTVORLAGEAUFTRAG}',$this->app->erp->Beschriftung('spedition_footer'),$footervorlage); $footervorlage = str_replace('{FOOTERSTEUER}',$steuerzeile,$footervorlage); $footervorlage = str_replace('{FOOTERZAHLUNGSWEISETEXT}',$zahlungstext,$footervorlage); $footervorlage = $this->app->erp->ParseUserVars('auftrag',$id,$footervorlage); $footer = $footervorlage; } else { $footer = "$freitext\r\n".$this->app->erp->ParseUserVars('auftrag',$id,$this->app->erp->Beschriftung('spedition_footer')."\r\n$steuerzeile\r\n$zahlungstext"); } $body=$this->app->erp->Beschriftung('spedition_header'); if($bodyzusatz!='') $body=$body.'\r\n'.$bodyzusatz; $body = $this->app->erp->ParseUserVars('auftrag',$id,$body); $this->setTextDetails(array( 'body'=>$body, 'footer'=>$footer)); if(!$this->app->erp->AuftragMitUmsatzeuer($id)) { $this->ust_befreit=true; } $artikel = $this->app->DB->SelectArr("SELECT sa.* FROM spedition_packstuecke sa WHERE sa.avi='$id'"); foreach($artikel as $key=>$value) { $steuersatzR = null; $steuersatzV = null; $mitumsatzsteuer = null; $tmpsteuersatz = null; $tmpsteuertext = null; $summe = 0; $gesamtsteuern = 0; if($value['steuersatz'] === null || $value['steuersatz'] < 0) { if($value['umsatzsteuer'] === 'ermaessigt'){ $value['steuersatz'] = $steuersatzR; } else{ $value['steuersatz'] = $steuersatzV; } if($tmpsteuersatz !== null) { $value['steuersatz'] = $tmpsteuersatz; } } if($tmpsteuertext && !$value['steuertext']) { $value['steuertext'] = $tmpsteuertext; } if(!$mitumsatzsteuer)$value['steuersatz'] = 0; if($value['explodiert'] > 0 ) { $value['bezeichnung'] = $value['bezeichnung'].' '.$this->app->erp->Beschriftung('dokument_stueckliste'); } if($value['explodiert_parent'] > 0) { $value['preis'] = '-'; $value['umsatzsteuer']='hidden'; $value['bezeichnung'] = '-'.$value['bezeichnung']; } // 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"); $check_ausblenden=0; $value['zolltarifnummer']=''; $value['herkunftsland']=''; $value['charge'] = $this->app->DB->Select("SELECT wert FROM beleg_chargesnmhd WHERE doctype='lieferschein' AND doctypeid='".$value['lieferschein']."' AND type='charge' LIMIT 1"); $value['mhd'] = $this->app->DB->Select("SELECT wert FROM beleg_chargesnmhd WHERE doctype='lieferschein' AND doctypeid='".$value['lieferschein']."' AND type='mhd' LIMIT 1"); $value['menge'] = (float)$value['menge']; $value = $this->CheckPosition($value,'auftrag',$this->doctypeid,$value['id']); if($check_ausblenden!=1) { $this->addItem(array('currency'=>$value['waehrung'], 'amount'=>$value['menge'], 'price'=>$value['preis'], 'tax'=>$value['umsatzsteuer'], 'steuersatz'=>$value['steuersatz'], 'steuertext'=>$value['steuertext'], 'itemno'=>$value['nummer'], 'unit'=>$value['einheit'], 'desc'=>$value['beschreibung'], 'verpackung'=>$value['verpackung'], 'anzahlpackstuecke'=>$value['anzahlpackstuecke'], 'inhalt'=>$value['inhalt'], 'gewicht'=>$value['gewicht'], 'nve'=>$value['nve'], 'charge'=>$value['charge'], 'mhd'=>$value['mhd'], 'name'=>ltrim($value['name']), 'strasse'=>$value['strasse'], 'hausnummer'=>$value['hausnummer'], 'plz'=>$value['plz'], 'ort'=>$value['ort'], 'land'=>$this->app->GetLandLang($value['land'],$sprache), '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($this->app->erp->AuftragMitUmsatzeuer($id)) { $this->setTotals(array('totalArticles'=>$summe,'total'=>$summe + $gesamtsteuern,'summen'=>$summen,'totalTaxV'=>0,'totalTaxR'=>0)); } else{ $this->setTotals(array('totalArticles' => $summe, 'total' => $summe)); } $datum = $this->app->DB->Select("SELECT DATE_FORMAT(datum,'%Y%m%d') FROM spedition WHERE id='$id' LIMIT 1"); $belegnr= '';//$this->app->DB->Select("SELECT belegnr FROM spedition WHERE id='$id' LIMIT 1"); /*$tmp_name = str_replace(' ','',trim($this->recipient['enterprise'])); $tmp_name = str_replace('.','',$tmp_name);*/ $this->filename = $datum.'_SAB'.$belegnr.'.pdf'; $this->setBarcode($belegnr); } public function renderItems() { $projekt = 0; // if($this->bestellungohnepreis) $this->doctype='lieferschein'; $posWidth = $this->app->erp->Firmendaten('breite_position'); $amWidth = $this->app->erp->Firmendaten('breite_menge'); $itemNoWidth = $this->app->erp->Firmendaten('breite_nummer'); $einheitWidth = $this->app->erp->Firmendaten('breite_einheit'); $descWidth = $this->app->erp->Firmendaten('breite_artikel'); $taxWidth = $this->app->erp->Firmendaten('breite_steuer'); $belege_subpositionen = $this->app->erp->Firmendaten('belege_subpositionen'); if($this->doctype==='arbeitsnachweis') { $itemNoWidth = 20; $taxWidth = 40; $descWidth = 95; } else if($this->doctype!=='lieferschein' && $this->doctype!=='produktion' && $this->doctype!=='preisanfrage') { if($descWidth <=0) { $descWidth = 76; } if($taxWidth <=0) { $taxWidth = 15; } } else { $itemNoWidth = 30; $descWidth = 91; if($taxWidth <=0) { $taxWidth = 15; } } if($this->rabatt=='1') { $descWidth = $descWidth - 15; } $priceWidth = 20; $sumWidth = 20; $rabattWidth = 15; // $lineLength = $amWidth + $itemNoWidth + $descWidth + $taxWidth + $priceWidth + $sumWidth; $cellhoehe = 5; // render table header if(isset($this->textDetails['body'])) { $this->Ln(); } else { $this->Ln(8); } $tabellenbeschriftung = $this->app->erp->Firmendaten('tabellenbeschriftung'); $this->SetX($this->app->erp->Firmendaten('abstand_seitenrandlinks')+1); // eventuell einstellbar per GUI $this->SetFont($this->GetFont(),'B',$tabellenbeschriftung); $xtest = $this->GetX(); $this->Cell($posWidth,6,$this->app->erp->Beschriftung('dokument_position')); if($this->doctype!=='arbeitsnachweis') { if($this->doctype==='zahlungsavis') { $this->Cell($itemNoWidth,6,'Nummer'); $this->Cell($descWidth-$einheitWidth+$taxWidth+$priceWidth+$rabattWidth,6,'Beleg'); $this->Cell($amWidth,6,'',0,0,'R'); } else { $this->Cell($itemNoWidth,6,'Anzahl');//$this->app->erp->Beschriftung('dokument_artikelnummer')); if($this->app->erp->Firmendaten('artikeleinheit')=='1'){ //$this->Cell($descWidth-$einheitWidth,6,$this->app->erp->Beschriftung('dokument_artikel')); }else{ $this->Cell($descWidth,6,'Verpackung',0,0,'L');//$this->app->erp->Beschriftung('dokument_artikel')); } $this->Cell($descWidth,6,'Lieferadresse',0,0,'L');//$this->app->erp->Beschriftung('dokument_menge'),0,0,'R'); } } else { $this->Cell($taxWidth,6,'Mitarbeiter'); $this->Cell($itemNoWidth,6,'Ort'); $this->Cell($descWidth,6,'Tätigkeit'); $this->Cell($amWidth,6,'Stunden',0,0,'R'); } if ($this->doctype==='lieferschein' || $this->doctype==='preisanfrage') { if($this->app->erp->Firmendaten('artikeleinheit')=='1'){ $this->Cell($einheitWidth, 6, $this->app->erp->Beschriftung('dokument_einheit'), 0, 0, 'R'); } } else if ($this->doctype==='zahlungsavis') { $this->Cell($sumWidth,6,$this->app->erp->Beschriftung('dokument_gesamt'),0,0,'R'); } $this->Ln(); $this->Line($this->app->erp->Firmendaten("abstand_seitenrandlinks")+1, $this->GetY(), 210-$this->app->erp->Firmendaten('abstand_seitenrandrechts'), $this->GetY()); $this->Ln(2); // render table body $tabelleninhalt = $this->app->erp->Firmendaten('tabelleninhalt'); $this->SetFont($this->GetFont(),'',$tabelleninhalt); $topos = 0; if(is_array($this->items)) { $topos = count($this->items); } $zwischenpositionen = $this->app->DB->Select("SELECT count(distinct pos) FROM beleg_zwischenpositionen WHERE doctype='".$this->doctype."' AND doctypeid='".$this->doctypeid."' AND pos > 0 AND pos <'$topos' AND (postype = 'gruppe' OR postype = 'zwischensumme' OR postype = 'gruppensumme') ORDER by sort"); if($zwischenpositionen < 1) { $belege_subpositionen = false; } $hauptnummer = 0; $posoffset = 0; if($belege_subpositionen) { $hauptnummer = 1; } $langeartikelnummern = $this->app->erp->Firmendaten('langeartikelnummern'); $pos=0; foreach($this->items as $item){ $iszwichenpos = $this->DrawZwischenpositionen($pos); $item['name'] = ($langeartikelnummern?"\r\n":'').$this->app->erp->ReadyForPDF($item['name']); $item['desc'] = $this->app->erp->ReadyForPDF($item['desc']); $item['itemno'] = $this->app->erp->ReadyForPDF($item['itemno']); $item['herstellernummer'] = $this->app->erp->ReadyForPDF($item['herstellernummer']); $item['artikelnummerkunde'] = $this->app->erp->ReadyForPDF($item['artikelnummerkunde']); $item['lieferdatum'] = $this->app->erp->ReadyForPDF($item['lieferdatum']); $item['hersteller'] = $this->app->erp->ReadyForPDF($item['hersteller']); //TODO Soll einstellbar werden: Zeilenabstand in Tabelle normal mittel $cellhoehe = 3; //position if($iszwichenpos && $belege_subpositionen && $pos > $posoffset) { $hauptnummer++; $posoffset = $pos; } $pos++; $posstr = $pos; if($belege_subpositionen && $hauptnummer) { $posstr = $hauptnummer.'.'.($pos-$posoffset); } $this->SetX($xtest); $this->Cell($posWidth,$cellhoehe,$posstr,0,0,'C'); //artikelnummer if($this->doctype==='arbeitsnachweis') { $this->Cell($taxWidth,$cellhoehe,trim($item['person']),0); $zeilenuntertext = $this->app->erp->Firmendaten('zeilenuntertext'); $this->SetFont($this->GetFont(),'',$zeilenuntertext); // ort $tmpy = $this->GetY(); $tmpx = $this->GetX(); $this->MultiCell($itemNoWidth,($zeilenuntertext/2),trim($item['itemno']),0); // 4 = abstand $tmpy2 = $this->GetY(); $this->SetXY($tmpx+$itemNoWidth,$tmpy); $this->SetFont($this->GetFont(),'',$tabelleninhalt); } else { //TODO BENE if($this->doctype==='lieferschein' && $this->app->erp->Firmendaten('modul_verband')=='1'){ $this->SetFont($this->GetFont(), '', $tabelleninhalt + 3); } else{ $this->SetFont($this->GetFont(), '', $tabelleninhalt); } if(isset($item['anzahlpackstuecke'])) { $this->Cell($itemNoWidth,$cellhoehe,($item['anzahlpackstuecke']?$item['anzahlpackstuecke']:55)); } else { $this->Cell($itemNoWidth); } $this->SetFont($this->GetFont(),'',$tabelleninhalt); } $position_x = $this->GetX(); $position_y = $this->GetY(); // start am Ende der Zeile Zeichnen $this->SetAutoPageBreak(false,$this->app->erp->Firmendaten('abstand_umbruchunten')); //2306BS // Artikel Name if($item['tax']!=='hidden') $this->SetFont($this->GetFont(),'B',$tabelleninhalt); if($this->app->erp->Firmendaten('artikeleinheit')=='1'){ $this->MultiCell($amWidth-$einheitWidth,$cellhoehe,$item['verpackung'],0,Alignment.LEFT, false); }else{ $xverpackung = $this->GetX(); if($item['verpackung']!="") { $this->MultiCell($descWidth,$cellhoehe,$item['verpackung'],0,Alignment.LEFT, false); } $this->SetFont($this->GetFont(),'',$tabelleninhalt); $this->SetX($xverpackung); $this->Cell($descWidth,$cellhoehe,"Inhalt: ".$item['inhalt'],0,1,"L"); $this->SetX($xverpackung); $this->Cell($descWidth,$cellhoehe,"Gewicht: ".$item['gewicht'],0,1,"L"); $this->SetX($xverpackung); $this->Cell($descWidth,$cellhoehe,'NVE: '.$item['nve'],0,1,"L"); if($item['mhd']!='') { $this->SetX($xverpackung); $this->Cell($descWidth,$cellhoehe,'MHD: '.$item['mhd'],0,1,"L"); } if($item['charge']!='') { $this->SetX($xverpackung); $this->Cell($descWidth,$cellhoehe,'Charge: '.$item['charge'],0,1,"L"); } } $this->SetFont($this->GetFont(),'',$tabelleninhalt); $this->SetAutoPageBreak(true,$this->app->erp->Firmendaten('abstand_umbruchunten')); //2306BS $position_y_end_name = $this->GetY(); // // wenn vorhanden Artikel Einheit if($this->app->erp->Firmendaten('artikeleinheit')=='1') $this->SetXY(($position_x + $descWidth-$einheitWidth), $position_y); else $this->SetXY(($position_x + $descWidth), $position_y); if($this->doctype==='arbeitsnachweis') $this->SetXY(($position_x + $descWidth), $position_y); // Menge if($this->doctype==='zahlungsavis'){ $this->Cell($amWidth,$cellhoehe,'',0,0,'R'); }else{ $xadresse = $this->GetX(); $this->Cell($descWidth,$cellhoehe,$item['name'],0,1,'L'); $this->SetX($xadresse); $this->Cell($descWidth,$cellhoehe,$item['strasse']." ".$item['hausnummer'],0,1,'L'); $this->SetX($xadresse); $this->Cell($descWidth,$cellhoehe,$item['plz']." ".$item['ort'],0,1,'L'); $this->SetX($xadresse); $this->Cell($descWidth,$cellhoehe,$item['land'],0,1,'L'); } if($this->doctype!=='lieferschein' && $this->doctype!=='arbeitsnachweis' && $this->doctype!=='produktion' && $this->doctype!=='preisanfrage') { if($this->app->erp->Firmendaten('artikeleinheit')=='1') { if($item['unit']!='') { $einheit = $item['unit']; } else { $einheit = $this->app->DB->Select("SELECT einheit FROM artikel WHERE nummer='".$item['itemno']."' LIMIT 1"); if($einheit=='') { $einheit = $this->app->erp->Firmendaten('artikeleinheit_standard'); } } } if($item['tax']!=='hidden') { if($this->ust_befreit>0) { $item['tax'] = 0; } else { if($item['tax'] === 'normal') { $item['tax'] = $this->app->erp->GetSteuersatzNormal(true,$this->id,$this->table)-1; } else { $item['tax'] = $this->app->erp->GetSteuersatzErmaessigt(true,$this->id,$this->table)-1; } } if(isset($item['steuersatz'])) { $item['tax'] = $item['steuersatz'] / 100; } } // wenn steuerfrei komplett immer 0 steuer anzeigen $item['tmptax'] = $item['tax'] + 1; // standard anzeige mit steuer if($this->app->erp->Firmendaten('kleinunternehmer')!='1'){ if($item['tax']==="hidden"){ //$this->Cell($taxWidth,$cellhoehe,"",0,0,'R'); } else { $tax = $item['tax']; //= $tax; //="USTV"?0.19:0.07; $tax *= 100; $tax = $tax."%"; } } if($this->doctype!=='lieferschein' && $this->doctype!=='produktion' && $this->doctype!=='preisanfrage') { // preis pro Artikel // zentale rabatt spalte if($this->rabatt=='1') { $rabatt_string=''; //rabatt if($item['grundrabatt'] > 0 || $item['rabatt1'] > 0 || $item['rabatt2'] > 0) { if($item['grundrabatt']>0) $rabatt_string .= $item['grundrabatt']."%\r\n"; if($item['rabatt1']>0) $rabatt_string .= $item['rabatt1']."%\r\n"; if($item['rabatt2']>0) $rabatt_string .= $item['rabatt2']."%\r\n"; if($item['rabatt3']>0) $rabatt_string .= $item['rabatt3']."%\r\n"; if($item['rabatt4']>0) $rabatt_string .= $item['rabatt4']."%\r\n"; if($item['rabatt5']>0) $rabatt_string .= $item['rabatt5']."%\r\n"; $tmpy = $this->GetY(); $tmpx = $this->GetX(); $this->SetFont($this->GetFont(),'',6); if($item['keinrabatterlaubt']=='1' || $item['rabatt']<=0 || $item['rabatt']==='') { $rabatt_or_porto = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='".$item['itemno']."' AND (porto='1' OR rabatt='1') LIMIT 1"); if($rabatt_or_porto) $rabatt_string=''; else { if($this->app->erp->Firmendaten('modul_verband')=='1') $rabatt_string='SNP'; else $rabatt_string=''; } } $this->SetXY($tmpx+$rabattWidth,$tmpy); $this->SetFont($this->GetFont(),'',$tabelleninhalt); } } } else { if(($this->anrede==='firma' || $this->app->erp->AnzeigeBelegNetto($this->anrede,$projekt) || $this->doctype==='bestellung' || $this->app->erp->Firmendaten("immernettorechnungen",$projekt)=="1") && $this->app->erp->Firmendaten('immerbruttorechnungen',$projekt)!='1') $this->Cell($priceWidth,$cellhoehe,$item['ohnepreis']?'':number_format((double)$item['price'], $this->anzahlkomma, ',', '.'),0,0,'R'); else $this->Cell($priceWidth,$cellhoehe,$item['ohnepreis']?'':number_format((double)$item['price']*$item['tmptax'], $this->anzahlkomma, ',', '.'),0,0,'R'); } //$this->Cell($sumWidth,$cellhoehe,number_format($item['tprice'], 2, ',', '').' '.$item['currency'],0,0,'R'); if($this->rabatt=='1') { //gesamt preis if ($item['tax']==='hidden'){ $this->Cell($priceWidth,$cellhoehe,'',0,0,'R'); } else { if($this->rabatt=='1'){ if(($this->anrede==='firma' || $this->app->erp->AnzeigeBelegNetto($this->anrede,$projekt) || $this->doctype==='bestellung' || $this->app->erp->Firmendaten("immernettorechnungen",$projekt)=="1") && $this->app->erp->Firmendaten("immerbruttorechnungen",$projekt)!="1") $this->Cell($sumWidth,$cellhoehe,$item['ohnepreis']?'':number_format((double)$item['tprice'], $this->anzahlkomma, ',', '.'),0,0,'R'); else $this->Cell($sumWidth,$cellhoehe,$item['ohnepreis']?'':number_format((double)$item['tprice']*$item['tmptax'], $this->anzahlkomma, ',', '.'),0,0,'R'); } else { if(($this->anrede==='firma' || $this->app->erp->AnzeigeBelegNetto($this->anrede,$projekt) || $this->doctype==='bestellung' || $this->app->erp->Firmendaten("immernettorechnungen",$projekt)=="1") && $this->app->erp->Firmendaten('immerbruttorechnungen',$projekt)!='1') $this->Cell($sumWidth,$cellhoehe,$item['ohnepreis']?'':number_format((double)$item['tprice'], $this->anzahlkomma, ',', '.'),0,0,'R'); else $this->Cell($sumWidth,$cellhoehe,$item['ohnepreis']?'':number_format((double)$item['tprice']*$item['tmptax'], $this->anzahlkomma, ',', '.'),0,0,'R'); } } } } else if($this->app->erp->Firmendaten('artikeleinheit')=='1' && ($this->doctype==='lieferschein' || $this->doctype==='preisanfrage')) { if($item['unit']!=''){ $einheit = $item['unit']; } else { $einheit = $this->app->DB->Select("SELECT einheit FROM artikel WHERE nummer='".$item['itemno']."' LIMIT 1"); if($einheit=='') { $einheit = $this->app->erp->Firmendaten('artikeleinheit_standard'); } } $this->Cell($einheitWidth,$cellhoehe,$this->app->erp->ReadyForPDF($einheit),0,0,'R'); } $this->Ln(); if($this->app->erp->Firmendaten('herstellernummerimdokument')=='1' && $item['herstellernummer']!='') { if($item['desc']!="") $item['desc']=$item['desc']."\r\nPN: ".$item['herstellernummer']; else $item['desc']='PN: '.$item['herstellernummer']; } if($item['lieferdatum']!='' && $item['lieferdatum']!='0000-00-00' && $item['lieferdatum']!=='00.00.0000') { if(strpos($item['lieferdatum'],'-')!==false){ $item['lieferdatum'] = $this->app->erp->ReadyForPDF($this->app->String->Convert($item['lieferdatum'], '%1-%2-%3', '%3.%2.%1')); } if($item['lieferdatumkw']==1) { $ddate = $this->app->String->Convert($item['lieferdatum'],'%3.%2.%1','%1-%2-%3'); $duedt = explode('-', $ddate); $date = mktime(0, 0, 0, $duedt[1], $duedt[2], $duedt[0]); $week = date('W/Y', $date); $item['lieferdatum'] = $this->app->erp->Beschriftung('dokument_lieferdatumkw').' '.$week; } if($item['desc']!='') { $item['desc'] = $item['desc'] . "\r\n" . $this->app->erp->Beschriftung('dokument_lieferdatum') . ': ' . $item['lieferdatum']; } else{ $item['desc'] = $this->app->erp->Beschriftung('dokument_lieferdatum') . ': ' . $item['lieferdatum']; } } if($this->app->erp->Firmendaten('freifelderimdokument')=='1') { for($ifreifeld=1;$ifreifeld<=20;$ifreifeld++) { if($item['freifeld'.$ifreifeld]!='') { if($item['desc']!=''){ $item['desc'] = $item['desc'] . "\r\n" . $this->app->erp->Beschriftung('artikel_freifeld' . $ifreifeld) . ': ' . $item['freifeld' . $ifreifeld]; } else{ $item['desc'] = $this->app->erp->Beschriftung('artikel_freifeld' . $ifreifeld) . ': ' . $item['freifeld' . $ifreifeld]; } } } } if($item['artikelnummerkunde']!='' && $item['artikelnummerkunde']!='0'){ if($item['desc']!=''){ $item['desc'] = $item['desc'] . "\r\n" . $this->app->erp->Beschriftung('dokument_artikelnummerkunde') . ': ' . $item['artikelnummerkunde']; } else{ $item['desc'] = $this->app->erp->Beschriftung('dokument_artikelnummerkunde') . ': ' . $item['artikelnummerkunde']; } } if($item['zolltarifnummer']!='' && $item['zolltarifnummer']!='0'){ if($item['desc']!=''){ $item['desc'] = $item['desc'] . "\r\n" . $this->app->erp->Beschriftung('dokument_zolltarifnummer') . ': ' . $item['zolltarifnummer'] . ' ' . $this->app->erp->Beschriftung('dokument_herkunftsland') . ': ' . $item['herkunftsland']; } else { $item['desc']=$this->app->erp->Beschriftung('dokument_zolltarifnummer').': '.$item['zolltarifnummer'].' '.$this->app->erp->Beschriftung('dokument_herkunftsland').': '.$item['herkunftsland']; } } if($item['ean']!='' && $item['ean']!='0'){ if($item['desc']!=''){ $item['desc'] = $item['desc'] . '\r\n' . $this->app->erp->Beschriftung('dokument_ean') . ': ' . $item['ean']; } else{ $item['desc'] = $this->app->erp->Beschriftung('dokument_ean') . ': ' . $item['ean']; } } if($item['desc']!='') { //Herstellernummer einblenden wenn vorhanden und aktiviert $zeilenuntertext = $this->app->erp->Firmendaten('zeilenuntertext'); $this->SetY($position_y_end_name+$this->app->erp->Firmendaten('abstand_name_beschreibung')); $this->SetFont($this->GetFont(),'',$zeilenuntertext); $this->Cell($posWidth); $this->Cell($itemNoWidth); if($this->doctype==='arbeitsnachweis') { $this->Cell($taxWidth); } if($this->doctype==='lieferschein' && $this->app->erp->Firmendaten('modul_verband')=='1'){ $this->SetFont($this->GetFont(), '', $tabelleninhalt + 1); } if($this->app->erp->Firmendaten('briefhtml')=='1'){ $html = $this->app->erp->ReadyForPDF($this->app->erp->RemoveNewlineAfterBreaks($item['desc'])); if($this->app->erp->Firmendaten('artikeleinheit')=='1'){ if($this->app->erp->Firmendaten('breite_artikelbeschreibung')){ $this->MultiCell($descWidth-$einheitWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),$this->WriteHTML($html),0,'L'); // 4 = abstand if(!empty($item['steuertext'])) { $this->MultiCell($descWidth-$einheitWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),$item['steuertext'],0,'L'); } } else{ $this->MultiCell($descWidth-$einheitWidth,($zeilenuntertext/2),$this->WriteHTMLCell($descWidth-$einheitWidth,$html),0,'L'); // 4 = abstand //ALT if(!empty($item['steuertext'])) { $this->MultiCell($descWidth-$einheitWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),$item['steuertext'],0,'L'); } } } else { if($this->app->erp->Firmendaten('breite_artikelbeschreibung')=='1') { $this->MultiCell($descWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),$this->WriteHTML($html),0,'L'); // 4 = abstand if(!empty($item['steuertext'])) { $this->MultiCell($descWidth-$einheitWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),$item['steuertext'],0,'L'); } } else { $this->MultiCell($descWidth,($zeilenuntertext/2),$this->WriteHTMLCell($descWidth,$html),0,'L'); // 4 = abstand //ALT if(!empty($item['steuertext'])) { $this->MultiCell($descWidth-$einheitWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),$item['steuertext'],0,'L'); } } } } else { if($this->app->erp->Firmendaten('artikeleinheit')=='1') { if($this->app->erp->Firmendaten('breite_artikelbeschreibung')) { $this->MultiCell($descWidth-$einheitWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),trim($item['desc']),0,'L'); // 4 = abstand if(!empty($item['steuertext'])) { $this->MultiCell($descWidth-$einheitWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),$item['steuertext'],0,'L'); } } else { $this->MultiCell($descWidth-$einheitWidth,($zeilenuntertext/2),trim($item['desc']),0,'L'); // 4 = abstand //ALT if(!empty($item['steuertext'])) { $this->MultiCell($descWidth-$einheitWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),$item['steuertext'],0,'L'); } } } else { if($this->app->erp->Firmendaten('breite_artikelbeschreibung')=='1') { $this->MultiCell($descWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),trim($item['desc']),0,'L'); // 4 = abstand if(!empty($item['steuertext'])) { $this->MultiCell($descWidth-$einheitWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),$item['steuertext'],0,'L'); } } else { $this->MultiCell($descWidth,($zeilenuntertext/2),trim($item['desc']),0,'L'); // 4 = abstand //ALT if(!empty($item['steuertext'])) { $this->MultiCell($descWidth-$einheitWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),$item['steuertext'],0,'L'); } } } } $this->Cell($taxWidth); $this->Cell($amWidth); $this->Ln(); $this->SetFont($this->GetFont(),'',$tabelleninhalt); $zeilenuntertext = $this->app->erp->Firmendaten('zeilenuntertext'); $this->SetFont($this->GetFont(),'',$zeilenuntertext); $this->Cell($posWidth); $this->Cell($itemNoWidth); if($this->doctype==='arbeitsnachweis') { $this->Cell($taxWidth); } if($this->app->erp->Firmendaten('artikeleinheit')=='1'){ $this->MultiCell($descWidth - $einheitWidth, 4, '', 0); // 4 = abstand zwischen Artikeln } else{ $this->MultiCell($descWidth, 4, '', 0); // 4 = abstand zwischen Artikeln } $this->Cell($taxWidth); $this->Cell($amWidth); $this->Ln(); $this->SetFont($this->GetFont(),'',$tabelleninhalt); } else { $zeilenuntertext = $this->app->erp->Firmendaten('zeilenuntertext'); $this->SetY($position_y_end_name); $this->SetFont($this->GetFont(),'',$zeilenuntertext); $this->Cell($posWidth); $this->Cell($itemNoWidth); if($this->doctype==='arbeitsnachweis') { $this->Cell($taxWidth); } if($this->app->erp->Firmendaten('artikeleinheit')=='1') { $this->MultiCell($descWidth-$einheitWidth,3,trim($item['desc']),0); // 4 = abstand if(!empty($item['steuertext'])) { $this->MultiCell($descWidth-$einheitWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),$item['steuertext'],0,'L'); } } else { $this->MultiCell($descWidth,3,trim($item['desc']),0); // 4 = abstand if(!empty($item['steuertext'])) { $this->MultiCell($descWidth-$einheitWidth+$taxWidth + $sumWidth + $rabattWidth,($zeilenuntertext/2),$item['steuertext'],0,'L'); } } $this->Cell($taxWidth); $this->Cell($amWidth); $this->Ln(); $this->SetFont($this->GetFont(),'',$tabelleninhalt); } $this->SetY($this->GetY()+5); } $this->DrawZwischenpositionen($pos); $this->Line($this->app->erp->Firmendaten('abstand_seitenrandlinks')+1, $this->GetY(), 210-$this->app->erp->Firmendaten('abstand_seitenrandrechts'), $this->GetY()); } public function renderTotals() { $this->SetY($this->GetY()+1); $differenz_wegen_abstand = $this->app->erp->Firmendaten('abstand_gesamtsumme_lr'); if($this->doctype!=='lieferschein' && $this->doctype!=='arbeitsnachweis' && $this->doctype!=='preisanfrage') { $this->Ln(1); $this->SetFont($this->GetFont(),'',$this->app->erp->Firmendaten('schriftgroesse_gesamt')); $this->Cell($differenz_wegen_abstand,2,'',0); if(!($this->app->erp->Firmendaten('kleinunternehmer')!='1' && $this->doctype!=='zahlungsavis')){ //kleinunzernehmer $this->Cell(30,5,'',0,0,'L'); $this->Cell(40,5,'',0,'L','R'); } $this->Ln(); if(isset($this->totals['modeOfDispatch'])) { $versand = 'Versand: '.$this->totals['modeOfDispatch']; } else { $versand = 'Versandkosten: '; } if(isset($this->totals['priceOfDispatch'])) { $this->Cell($differenz_wegen_abstand,2,'',0); $this->Cell(30,5,$versand,0,'L','L'); $this->Cell(40,5,number_format((double)$this->totals['priceOfDispatch'], 2, ',', '.').' '.$this->waehrung,0,'L','R'); } //$this->Ln(); if(isset($this->totals['priceOfPayment']) && $this->totals['priceOfPayment']!='0.00'){ $this->Cell($differenz_wegen_abstand,2,'',0); $this->Cell(30,5,$this->totals['modeOfPayment'],0,'L','L'); $this->Cell(40,5,number_format((double)$this->totals['priceOfPayment'], 2, ',', '.').' '.$this->waehrung,0,'L','R'); $this->Ln(); } $this->SetY($this->GetY()); $this->SetFont($this->GetFont(),'',$this->app->erp->Firmendaten('schriftgroesse_gesamt_steuer')); if(isset($this->totals['totalTaxV']) && $this->totals['totalTaxV']!='0.00'){ $this->Cell($differenz_wegen_abstand,1,'',0); if($this->app->erp->Firmendaten('kleinunternehmer')=='1'){ //kleinunternehmer $this->Cell(30,3,'',0,'L','L'); $this->Cell(40,3,'',0,'L','R'); } $this->Ln(); } if(isset($this->totals['totalTaxR']) && $this->totals['totalTaxR']!='0.00'){ $this->Cell($differenz_wegen_abstand,1,'',0); if($this->app->erp->Firmendaten('kleinunternehmer')=='1'){ //kleinunternehmer $this->Cell(30,3,'',0,'L','L'); $this->Cell(40,3,"",0,'L','R'); } $this->Ln(); } if(isset($this->totals['summen'])) { ksort($this->totals['summen'], SORT_NUMERIC); foreach($this->totals['summen'] as $k => $value) { $this->Cell($differenz_wegen_abstand,1,'',0); if($this->app->erp->Firmendaten('kleinunternehmer')=='1'){ //kleinunternehmer $this->Cell(30,3,'',0,'L','L'); $this->Cell(40,3,'',0,'L','R'); } $this->Ln(); } } if(!isset($this->totals['totalTaxR']) && !isset($this->totals['totalTaxV']) && !isset($this->totals['summen']) && $this->doctype!=='zahlungsavis') { $this->Cell($differenz_wegen_abstand,3,'',0); if($this->app->erp->Firmendaten('kleinunternehmer')=='1') { //kleinunternehmer $this->Cell(30,3,'',0,'L','L'); $this->Cell(40,3,'',0,'L','R'); } $this->Ln(); } $this->SetY($this->GetY()+2); } $this->SetFont($this->GetFont(),'B',$this->app->erp->Firmendaten('schriftgroesse_gesamt')); $this->Cell($differenz_wegen_abstand,5,'',0); $this->Ln(); $this->SetY($this->GetY()+20); $this->SetFont($this->GetFont(),'',$this->app->erp->Firmendaten('schriftgroesse_gesamt_steuer')); $this->Cell(60,5,'Datum: ',0,0,'L'); $this->Line(26, $this->GetY()+4, 60,$this->GetY()+4); $this->Cell(60,5,'Uhrzeit: ',0,0,'L'); //$this->SetX(150); $this->Line(86.5,$this->GetY()+4, 120.5,$this->GetY()+4); $this->SetY($this->GetY()+25); $this->Cell(60,5,'Unterschrift: ',0,0,'L'); $this->Line(32,$this->GetY()+4, 120.5, $this->GetY()+4); $this->SetY($this->GetY()+10); } }