mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-14 20:17:14 +01:00
407 lines
17 KiB
PHP
407 lines
17 KiB
PHP
<?php
|
|
/*
|
|
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
|
*
|
|
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
|
*
|
|
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
|
*
|
|
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
|
* to obtain the text of the corresponding license version.
|
|
*
|
|
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
|
*/
|
|
?>
|
|
<?php
|
|
if(!class_exists('BriefpapierCustom'))
|
|
{
|
|
class BriefpapierCustom extends Briefpapier
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
class BestellungPDF extends BriefpapierCustom {
|
|
public $doctype;
|
|
|
|
function __construct($app,$projekt="")
|
|
{
|
|
$this->app=$app;
|
|
//parent::Briefpapier();
|
|
$this->doctype="bestellung";
|
|
$this->doctypeOrig="Bestellung";
|
|
$this->bestellungohnepreis=0;
|
|
parent::__construct($this->app,$projekt,Array('kleinunternehmer' => 'ignore')); // Fix for ignoring kleinunternehmer 0 or false does not work because of function getStyleElement($key) (class.briefpapier.php)
|
|
}
|
|
|
|
|
|
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);
|
|
}
|
|
}
|