From 2ff5c007c1ece9124aca24817c60f88e318c49d5 Mon Sep 17 00:00:00 2001
From: OpenXE <>
Date: Sat, 3 Feb 2024 12:49:37 +0100
Subject: [PATCH 1/5] added belegvorlagen from OSS 20.1
---
www/pages/belegevorlagen.php | 238 ++++++++++++++++++
.../content/belegevorlagen_einstellungen.tpl | 20 ++
www/pages/content/belegevorlagen_list.tpl | 38 +++
3 files changed, 296 insertions(+)
create mode 100644 www/pages/belegevorlagen.php
diff --git a/www/pages/belegevorlagen.php b/www/pages/belegevorlagen.php
new file mode 100644
index 00000000..cc37a5e4
--- /dev/null
+++ b/www/pages/belegevorlagen.php
@@ -0,0 +1,238 @@
+
+
Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"> |
";
+ $sql = "SELECT SQL_CALC_FOUND_ROWS b.id, b.bezeichnung,CONCAT(UCASE(LEFT(b.belegtyp, 1)), SUBSTRING(b.belegtyp, 2)), pr.abkuerzung, b.id FROM belegevorlagen b LEFT JOIN projekt pr ON b.projekt = pr.id";
+ $where = $app->erp->ProjektRechte('b.projekt');
+ break;
+ case "belegevorlagen_list2":
+ $belegtyp = $app->Secure->GetGET('smodule');
+ $heading = array('Bezeichnung','Projekt','Menü');
+ $width = array('50%','49%','1%');
+ $findcols = array('b.bezeichnung','pr.abkuerzung','b.id');
+ $searchsql = array('b.bezeichnung','pr.abkuerzung');
+ $menu = "";
+ $sql = "SELECT SQL_CALC_FOUND_ROWS b.id, b.bezeichnung, pr.abkuerzung, b.id FROM belegevorlagen b LEFT JOIN projekt pr ON b.projekt = pr.id";
+ $where = "belegtyp = '$belegtyp' ".$app->erp->ProjektRechte('b.projekt');
+ break;
+ }
+
+ $erg = false;
+ foreach($erlaubtevars as $k => $v)
+ {
+ if(isset($$v))$erg[$v] = $$v;
+ }
+ return $erg;
+ }
+ function __construct(&$app, $intern = false)
+ {
+ $this->app=&$app;
+ $this->artikel = $this->app->erp->GetKonfiguration('gesamtrabatt_artikel');
+ if($intern)return;
+ $this->app->ActionHandlerInit($this);
+ $this->app->ActionHandler("list","BelegevorlagenList");
+ $this->app->ActionHandler("einstellungen","BelegevorlagenEinstellungen");
+ $this->app->DefaultActionHandler("list");
+ $this->app->ActionHandlerListen($app);
+ }
+
+ function BelegevorlagenMenu(){
+ $this->app->erp->MenuEintrag("index.php?module=belegevorlagen&action=list","Übersicht");
+ $this->app->erp->MenuEintrag("index.php?module=belegevorlagen&action=einstellungen","Einstellungen");
+
+ }
+
+ function BelegevorlagenList()
+ {
+ if($this->app->Secure->GetGET('cmd') == 'delvorlage')
+ {
+ $id = (int)$this->app->Secure->GetPOST('lid');
+ $this->app->DB->Delete("DELETE FROM belegevorlagen WHERE id = '$id' LIMIT 1");
+ echo json_encode(array('status'=>1));
+ exit;
+ }
+ $this->BelegevorlagenMenu();
+ $this->app->YUI->TableSearch('TAB1', "belegevorlagen_list", "show","","",basename(__FILE__), __CLASS__);
+ $this->app->Tpl->Parse('PAGE','belegevorlagen_list.tpl');
+ }
+
+ function BelegevorlagenEinstellungen()
+ {
+ $this->BelegevorlagenMenu();
+
+ $this->app->Tpl->Set('PREISEAKTUALISIEREN',$this->app->erp->GetKonfiguration('belegevorlagen_preiseaktualisieren')=='on'?'checked':'');
+ $this->app->YUI->AutoSaveKonfiguration('preiseaktualisieren','belegevorlagen_preiseaktualisieren');
+
+ $this->app->Tpl->Parse('PAGE','belegevorlagen_einstellungen.tpl');
+ }
+
+ function Install()
+ {
+ $this->app->erp->CheckTable('belegevorlagen');
+ $this->app->erp->CheckColumn("id","int(11)","belegevorlagen","DEFAULT '0' NOT NULL AUTO_INCREMENT");
+ $this->app->erp->CheckColumn("belegtyp", "varchar(255)", "belegevorlagen", "DEFAULT '' NOT NULL");
+ $this->app->erp->CheckColumn("bezeichnung", "varchar(255)", "belegevorlagen", "DEFAULT '' NOT NULL");
+ $this->app->erp->CheckColumn("projekt", "int(11)", "belegevorlagen", "DEFAULT '0' NOT NULL");
+ $this->app->erp->CheckColumn("json", "MEDIUMTEXT", "belegevorlagen", "DEFAULT '' NOT NULL");
+ $this->app->erp->CheckColumn("bearbeiter", "varchar(255)", "belegevorlagen", "DEFAULT '' NOT NULL");
+ $this->app->erp->CheckColumn("zeitstempel", "timestamp", "belegevorlagen","DEFAULT CURRENT_TIMESTAMP NOT NULL");
+
+ $this->app->erp->RegisterHook('BelegPositionenButtons', 'belegevorlagen', 'BelegevorlagenBelegPositionenButtons');
+ $this->app->erp->RegisterHook('AARLGPositionen_cmds_end', 'belegevorlagen', 'BelegevorlagenAARLGPositionen_cmds_end');
+ $this->app->erp->RegisterHook('ajax_filter_hook1', 'belegevorlagen', 'Belegevorlagenajax_filter_hook1');
+ }
+
+ function Belegevorlagenajax_filter_hook1($filtername,&$newarr, $term, $term2, $term3)
+ {
+ if($filtername == 'belegvorlagen')
+ {
+ $arr = $this->app->DB->SelectArr("SELECT CONCAT(b.id,' ',b.bezeichnung) as bezeichnung FROM belegevorlagen b
+ WHERE (b.bezeichnung LIKE '%$term%') ".$this->app->erp->ProjektRechte('b.projekt'));
+ if($arr)
+ {
+ for($i=0;$iapp->Tpl->Set('ID', $id);
+ $this->app->Tpl->Set('MODULE', $module);
+ $this->app->YUI->AutoComplete('bestehendevorlage','belegvorlagen');
+ $this->app->YUI->TableSearch('BELEGEVORLAGENTABELLE', "belegevorlagen_list2", "show","","",basename(__FILE__), __CLASS__);
+ $this->app->Tpl->Add($target, " ".$this->app->Tpl->Parse($target,'belegevorlagen_widget.tpl'));
+ }
+ }
+
+ function BelegevorlagenAARLGPositionen_cmds_end($id){
+ $module = $this->app->Secure->GetGET('module');
+ if(!$module)return;
+
+ $projekt = $this->app->DB->Select("SELECT projekt FROM $module WHERE id='$id' LIMIT 1");
+ if($projekt <=0) $projekt=0;
+
+ if($this->app->Secure->GetGET('cmd') == 'deletebelegvorlage')
+ {
+ $status = 1;
+ $lid = (int)$this->app->Secure->GetPOST('lid');
+ $this->app->DB->Delete("DELETE FROM belegevorlagen WHERE id = '$lid' AND belegtyp = '$module' LIMIT 1");
+ echo json_encode(array('status'=>$status));
+ exit;
+ }
+
+ if($this->app->Secure->GetGET('cmd') == 'loadbelegvorlage')
+ {
+ $status = 0;
+ $lid = (int)$this->app->Secure->GetPOST('lid');
+ $json = (String)$this->app->DB->Select("SELECT json FROM belegevorlagen WHERE id = '$lid' AND belegtyp = '$module' LIMIT 1");
+ if($json !== '')
+ {
+ $json = json_decode($json, true);
+ $maxsort = (int)$this->app->DB->Select("SELECT max(sort) FROM $module"."_position WHERE $module = '$id' LIMIT 1");
+ if(isset($json['positionen']))
+ {
+ foreach($json['positionen'] as $v)
+ {
+ $v[$module] = $id;
+ if($this->app->erp->GetKonfiguration('belegevorlagen_preiseaktualisieren')=='on'){
+ if($v['artikel'] != '0'){
+ $v['preis'] = $this->app->erp->GetVerkaufspreis($v['artikel'],$v['menge']);
+ }
+ }
+ $v['sort'] += $maxsort;
+ $this->app->DB->Insert("INSERT INTO $module"."_position (id) VALUES ('')");
+ $idnew = $this->app->DB->GetInsertID();
+ $oldtonew[$v['id']] = $idnew;
+ if($v['explodiert_parent'] && isset($oldtonew) && isset($oldtonew[$v['explodiert_parent']]))$v['explodiert_parent'] = $oldtonew[$v['explodiert_parent']];
+ unset($v['id']);
+ $this->app->DB->UpdateArr($module.'_position',$idnew,"id",$v, true);
+ if(is_null($v['steuersatz']))$this->app->DB->Update("UPDATE ".$module."_position SET steuersatz = NULL WHERE id = '$idnew' LIMIT 1");
+ }
+ }
+ if(isset($json['zwischenpositionen']))
+ {
+ $maxpos = $this->app->DB->SelectArr("SELECT id,sort FROM beleg_zwischenpositionen WHERE doctype = '$module' AND doctypeid = '$id' AND pos='$maxsort' ORDER BY sort DESC LIMIT 1");
+ if($maxpos)
+ {
+ $sortoffset = 1 + $maxpos[0]['sort'];
+ }else{
+ $sortoffset = 0;
+ }
+ foreach($json['zwischenpositionen'] as $v)
+ {
+ if($v['pos'] == 0)$v['sort'] += $sortoffset;
+ $v['doctypeid'] = $id;
+ $v['pos'] += $maxsort;
+ unset($v['id']);
+ $this->app->DB->Insert("INSERT INTO beleg_zwischenpositionen (id) VALUES ('')");
+ $idnew = $this->app->DB->GetInsertID();
+ $this->app->DB->UpdateArr('beleg_zwischenpositionen',$idnew,"id",$v, true);
+ }
+ }
+ $status = 1;
+ $this->app->erp->ANABREGSNeuberechnen($id,$module);
+ }
+ echo json_encode(array('status'=>$status));
+ exit;
+ }
+ if($this->app->Secure->GetGET('cmd') == 'savebelegevorlage')
+ {
+ $json = null;
+ $status = 0;
+ $bestehendevorlage = (int)reset(explode(' ',$this->app->Secure->GetPOST('bestehendevorlage')));
+ $bezeichnung = (String)$this->app->Secure->GetPOST('bezeichnung');
+ $vorlagetyp = $this->app->Secure->GetPOST('vorlagetyp');
+ $bearbeiter = $this->app->DB->real_escape_string($this->app->User->GetName());
+ $lid = null;
+ if($vorlagetyp == 'neu')
+ {
+ if($bezeichnung !== '')
+ {
+ $this->app->DB->Insert("INSERT INTO belegevorlagen (bezeichnung, belegtyp, bearbeiter, zeitstempel,projekt) VALUES ('$bezeichnung','$module','$bearbeiter',now(),'$projekt')");
+ $lid = $this->app->DB->GetInsertID();
+ }
+ }else{
+ $lid = $this->app->DB->Select("SELECT id FROM belegevorlagen WHERE id = '$bestehendevorlage' LIMIT 1");
+ if($lid && $bezeichnung !== '')$this->app->DB->Update("UPDATE belegevorlagen set bezeichnung = '$bezeichnung' WHERE id = '$bestehendevorlage' LIMIT 1");
+ }
+ if($lid)
+ {
+ $json['positionen'] = $this->app->DB->SelectArr("SELECT * FROM $module"."_position WHERE $module = '$id' ORDER BY sort");
+ $json['zwischenpositionen'] = $this->app->DB->SelectArr("SELECT * FROM beleg_zwischenpositionen WHERE doctype = '$module' AND doctypeid = '$id' ORDER BY pos, sort");
+ $json = $this->app->DB->real_escape_string(json_encode($json));
+ $this->app->DB->Update("UPDATE belegevorlagen set json = '$json', zeitstempel = now(), bearbeiter = '$bearbeiter' WHERE id = '$lid' LIMIT 1");
+ $status = 1;
+ }
+ echo json_encode(array('status'=>$status));
+ exit;
+ }
+ }
+}
+?>
diff --git a/www/pages/content/belegevorlagen_einstellungen.tpl b/www/pages/content/belegevorlagen_einstellungen.tpl
index e69de29b..6eff5a4f 100644
--- a/www/pages/content/belegevorlagen_einstellungen.tpl
+++ b/www/pages/content/belegevorlagen_einstellungen.tpl
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+[MESSAGE]
+
+
+[TAB1]
+[TAB1NEXT]
+
+
+
+
diff --git a/www/pages/content/belegevorlagen_list.tpl b/www/pages/content/belegevorlagen_list.tpl
index e69de29b..3a7e8290 100644
--- a/www/pages/content/belegevorlagen_list.tpl
+++ b/www/pages/content/belegevorlagen_list.tpl
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+[MESSAGE]
+[TAB1]
+[TAB1NEXT]
+
+
+
+
+
+
From 9d543e66354c879323d340d0043f316c8abdf19d Mon Sep 17 00:00:00 2001
From: OpenXE <>
Date: Sat, 3 Feb 2024 17:54:51 +0100
Subject: [PATCH 2/5] database patch for belegvorlagen
---
database/struktur.sql | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/database/struktur.sql b/database/struktur.sql
index 5836a35d..ddf8f438 100755
--- a/database/struktur.sql
+++ b/database/struktur.sql
@@ -16769,6 +16769,26 @@ INSERT INTO `hook_register` (`hook_action`, `function`, `aktiv`, `position`, `ho
(0, 'DatatablelabelsTransferDocumentIncomming', 1, 1, (SELECT id FROM hook WHERE name = 'transfer_document_incoming'), 'Datatablelabels', 0);
/* OpenXE 2024-01-24 für datatablelabel */
+/* OpenXE 2024-02-03 für belegvorlagen */
+INSERT INTO `hook` (`name`, `aktiv`, `parametercount`, `alias`, `description`) VALUES
+('BelegPositionenButtons', 1, 3, '', ''),
+('AARLGPositionen_cmds_end', 1, 1, '', ''),
+('ajax_filter_hook1', 1, 1, '', '');
+
+INSERT INTO `hook_register` (`hook_action`, `function`, `aktiv`, `position`, `hook`, `module`, `module_parameter`) VALUES
+(0, 'BelegevorlagenAARLGPositionen_cmds_end', 1, 2, (SELECT id FROM hook WHERE name = 'AARLGPositionen_cmds_end' LIMIT 1), 'belegevorlagen', 0),
+(0, 'Belegevorlagenajax_filter_hook1', 1, 2, (SELECT id FROM hook WHERE name = 'ajax_filter_hook1' LIMIT 1), 'belegevorlagen', 0),
+(0, 'BelegevorlagenBelegPositionenButtons', 1, 2, (SELECT id FROM hook WHERE name = 'BelegPositionenButtons' LIMIT 1), 'belegevorlagen', 0)
+;
+/* OpenXE 2024-02-03 für belegvorlagen */
+
+/*
+BelegPositionenButtons
+
+Id,Hook_action,Function,Aktiv,Position,Hook,Module,Module_parameter
+20,0,BelegevorlagenBelegPositionenButtons,1,2,16,belegevorlagen,0
+*/
+
INSERT INTO `hook_menu` (`id`, `module`, `aktiv`) VALUES
(1, 'artikel', 1),
(2, 'provisionenartikel', 1),
From 2efc34c280ffba0e932e115b4d7d2001a5f61a38 Mon Sep 17 00:00:00 2001
From: OpenXE <>
Date: Sun, 4 Feb 2024 21:54:43 +0100
Subject: [PATCH 3/5] bugfix AN AB RE GS ust ausblenden
---
www/lib/dokumente/class.angebot.php | 11 +++++++++--
www/lib/dokumente/class.auftrag.php | 9 +++++++--
www/lib/dokumente/class.gutschrift.php | 9 +++++++--
www/lib/dokumente/class.rechnung.php | 9 +++++++--
4 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/www/lib/dokumente/class.angebot.php b/www/lib/dokumente/class.angebot.php
index abb92ce7..b5a4d439 100644
--- a/www/lib/dokumente/class.angebot.php
+++ b/www/lib/dokumente/class.angebot.php
@@ -41,8 +41,15 @@ class AngebotPDF 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(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false;
- else $this->ust_spalteausblende=true;
+
+ $this->ust_spalteausblende=false;
+
+ if(!empty($check)) {
+ if (count($check) == 1) {
+ $this->ust_spalteausblende=true;
+ }
+ }
+
}
$briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden');
diff --git a/www/lib/dokumente/class.auftrag.php b/www/lib/dokumente/class.auftrag.php
index 00f43182..ac6273eb 100644
--- a/www/lib/dokumente/class.auftrag.php
+++ b/www/lib/dokumente/class.auftrag.php
@@ -43,8 +43,13 @@ 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(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false;
- else $this->ust_spalteausblende=true;
+ $this->ust_spalteausblende=false;
+
+ if(!empty($check)) {
+ if (count($check) == 1) {
+ $this->ust_spalteausblende=true;
+ }
+ }
}
$briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden');
diff --git a/www/lib/dokumente/class.gutschrift.php b/www/lib/dokumente/class.gutschrift.php
index b81d3afc..ba321e3d 100644
--- a/www/lib/dokumente/class.gutschrift.php
+++ b/www/lib/dokumente/class.gutschrift.php
@@ -43,8 +43,13 @@ class GutschriftPDF 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(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false;
- else $this->ust_spalteausblende=true;
+ $this->ust_spalteausblende=false;
+
+ if(!empty($check)) {
+ if (count($check) == 1) {
+ $this->ust_spalteausblende=true;
+ }
+ }
}
$briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden');
diff --git a/www/lib/dokumente/class.rechnung.php b/www/lib/dokumente/class.rechnung.php
index c02c6c10..4fd98786 100644
--- a/www/lib/dokumente/class.rechnung.php
+++ b/www/lib/dokumente/class.rechnung.php
@@ -50,8 +50,13 @@ 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(!empty($check)?count($check):0>1)$this->ust_spalteausblende=false;
- else $this->ust_spalteausblende=true;
+ $this->ust_spalteausblende=false;
+
+ if(!empty($check)) {
+ if (count($check) == 1) {
+ $this->ust_spalteausblende=true;
+ }
+ }
}
$lvl = null;
$briefpapier_bearbeiter_ausblenden = $this->app->erp->Firmendaten('briefpapier_bearbeiter_ausblenden');
From 0360d5657f07ca0e846037ae0affc5ddaa24e427 Mon Sep 17 00:00:00 2001
From: OpenXE <>
Date: Sun, 4 Feb 2024 22:05:12 +0100
Subject: [PATCH 4/5] bugfix angebot Alternativ Text Preis
---
www/lib/dokumente/class.angebot.php | 6 ++++--
www/lib/dokumente/class.briefpapier.php | 12 ++++++------
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/www/lib/dokumente/class.angebot.php b/www/lib/dokumente/class.angebot.php
index b5a4d439..9db95733 100644
--- a/www/lib/dokumente/class.angebot.php
+++ b/www/lib/dokumente/class.angebot.php
@@ -498,8 +498,10 @@ class AngebotPDF extends BriefpapierCustom {
"rabatt"=>$value['rabatt'],
"steuertext"=>$value['steuertext']));
if($positionenkaufmaenischrunden == 3){
- $netto_gesamt = $value['menge'] * round($value['preis'] - ($value['preis'] / 100 * $value['rabatt']),2);
- }else{
+ if (!$value['nicht_einrechnen']) {
+ $netto_gesamt = $value['menge'] * round($value['preis'] - ($value['preis'] / 100 * $value['rabatt']),2);
+ }
+ }else if (!$value['nicht_einrechnen']) {
$netto_gesamt = $value['menge'] * ($value['preis'] - ($value['preis'] / 100 * $value['rabatt']));
}
if($positionenkaufmaenischrunden)
diff --git a/www/lib/dokumente/class.briefpapier.php b/www/lib/dokumente/class.briefpapier.php
index cfa6a08b..22f6f99a 100644
--- a/www/lib/dokumente/class.briefpapier.php
+++ b/www/lib/dokumente/class.briefpapier.php
@@ -658,7 +658,7 @@ class Briefpapier extends SuperFPDF {
public function addItem($rdata){
// add rabatt
- if($rdata['price']!='-'){
+ if($rdata['price']!='-' && is_numeric($rdata['price'])){
if($rdata['rabatt'] == 100){
$rdata['tprice'] = round($rdata['amount'] * ((double)$rdata['price'] - (double)($rdata['price'] / 100.00 * (double)$rdata['rabatt'])), 13);
}else{
@@ -4008,7 +4008,7 @@ class Briefpapier extends SuperFPDF {
}
$beschriftung_zeile = ucfirst($zwischenpositionen[$i]['postype']);
-
+
if($data['name']=="")
$html = ($fett?"":"").$beschriftung_zeile.($fett?"":"");
else
@@ -4029,10 +4029,10 @@ class Briefpapier extends SuperFPDF {
$abstand_links = $posWidth +$itemNoWidth;
}
- $this->SetX($x+$abstand_links);
-
- $text = $this->WriteHTML($html);
- $text = empty($text)?"":$text;
+ $this->SetX($x+$abstand_links);
+
+ $text = $this->WriteHTML($html);
+ $text = empty($text)?"":$text;
$this->Cell_typed($descWidth,4,);
$this->SetX($x+$abstand_links+$descWidth);
From c5cf7bcba47b7af3daa54b3ddce6c4578b65daf8 Mon Sep 17 00:00:00 2001
From: OpenXE <>
Date: Wed, 7 Feb 2024 20:45:34 +0100
Subject: [PATCH 5/5] angebot optional positions with ellipsis, added optional
total
---
www/lib/class.erpapi.php | 2 +
www/lib/dokumente/class.angebot.php | 23 +++++------
www/lib/dokumente/class.briefpapier.php | 54 +++++++++++++++++++------
3 files changed, 53 insertions(+), 26 deletions(-)
diff --git a/www/lib/class.erpapi.php b/www/lib/class.erpapi.php
index d28ffd70..c0ee7779 100644
--- a/www/lib/class.erpapi.php
+++ b/www/lib/class.erpapi.php
@@ -25799,6 +25799,7 @@ function MailSendFinal($from,$from_name,$to,$to_name,$betreff,$text,$files="",$p
$uebersetzung['dokument_artikelnummerkunde']['deutsch'] = "Ihre Artikelnummer";
$uebersetzung['dokument_menge']['deutsch'] = "Menge";
$uebersetzung['dokument_gesamt']['deutsch'] = "Gesamt";
+ $uebersetzung['dokument_gesamt_optional']['deutsch'] = "Gesamt optional";
$uebersetzung['dokument_gesamt_total']['deutsch'] = "Gesamt";
$uebersetzung['dokument_mwst']['deutsch'] = "MwSt.";
$uebersetzung['dokument_zzglmwst']['deutsch'] = "zzgl. MwSt.";
@@ -25816,6 +25817,7 @@ function MailSendFinal($from,$from_name,$to,$to_name,$betreff,$text,$files="",$p
$uebersetzung['dokument_ursprungsregion']['deutsch'] = "Ursprungsregion";
$uebersetzung['dokument_gewicht']['deutsch'] = "Gewicht";
$uebersetzung['dokument_gesamtnetto']['deutsch'] = "Gesamt netto";
+ $uebersetzung['dokument_gesamtnetto_optional']['deutsch'] = "Gesamt netto optional";
$uebersetzung['dokument_seite']['deutsch'] = "Seite";
$uebersetzung['dokument_seitevon']['deutsch'] = "von";
$uebersetzung['dokument_datum']['deutsch'] = "Datum";
diff --git a/www/lib/dokumente/class.angebot.php b/www/lib/dokumente/class.angebot.php
index 9db95733..b0160d23 100644
--- a/www/lib/dokumente/class.angebot.php
+++ b/www/lib/dokumente/class.angebot.php
@@ -508,22 +508,19 @@ class AngebotPDF extends BriefpapierCustom {
{
$netto_gesamt = round($netto_gesamt, 2);
}
- if($value['optional']!="1"){
+ if(!isset($summen[$value['steuersatz']])) {
+ $summen[$value['steuersatz']] = 0;
+ }
+ 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'];
+ $summe = $summe + $netto_gesamt;
$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"));
- }*/
+ }
+ } else {
+ $summe_netto_optional += $netto_gesamt;
+ $steuern_optional +=($netto_gesamt/100)*$value['steuersatz'];
}
}
@@ -545,7 +542,7 @@ class AngebotPDF extends BriefpapierCustom {
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,"total"=>$summe + $gesamtsteuern,"summen"=>$summen,"totalTaxV"=>0,"totalTaxR"=>0,"optional"=>$summe_netto_optional+$steuern_optional,"optional_netto"=>$summe_netto_optional));
//$this->setTotals(array("totalArticles"=>$summe,"totalTaxV"=>$summeV,"totalTaxR"=>$summeR,"total"=>$summe+$summeV+$summeR));
} else {
$this->setTotals(array("totalArticles"=>$summe,"total"=>$summe));
diff --git a/www/lib/dokumente/class.briefpapier.php b/www/lib/dokumente/class.briefpapier.php
index 22f6f99a..519337e2 100644
--- a/www/lib/dokumente/class.briefpapier.php
+++ b/www/lib/dokumente/class.briefpapier.php
@@ -1775,7 +1775,12 @@ class Briefpapier extends SuperFPDF {
$total=$totalFullTax=$totalReducedTax=0;
$citems = !empty($this->items)?count($this->items):0;
for($i=0;$i<$citems;$i++) {
- $total += $this->items[$i]['tprice'];
+ if (!$this->items[$i]['optional']) {
+ $total += $this->items[$i]['tprice'];
+ } else {
+ $totalOptional += $this->items[$i]['tprice'];
+ }
+
if($this->items[$i]['tax']=="USTV") {
$totalFullTax+= $this->items[$i]['tprice']*USTV;
}
@@ -1783,7 +1788,7 @@ class Briefpapier extends SuperFPDF {
$totalReducedTax+= $this->items[$i]['tprice']*USTR;
}
}
- return array($total,$totalFullTax,$totalReducedTax);
+ return array($total,$totalFullTax,$totalReducedTax,$totalOptional);
}
function GetFont()
@@ -2498,7 +2503,6 @@ class Briefpapier extends SuperFPDF {
}
public function renderItems() {
-
$this->app->erp->RunHook('briefpapier_renderitems',1, $this);
// if($this->bestellungohnepreis) $this->doctype="lieferschein";
$posWidth = $this->getStyleElement("breite_position");
@@ -2942,7 +2946,6 @@ class Briefpapier extends SuperFPDF {
if($this->doctype!=='zahlungsavis')
{
if($item['tax']!=='hidden'){
-
if($anzeigeBelegNettoAdrese){
//if(($this->anrede=="firma" || $this->app->erp->AnzeigeBelegNetto($this->anrede,$projekt) || $this->doctype=="bestellung" || $this->getStyleElement("immernettorechnungen",$projekt)=="1")
//&& $this->getStyleElement("immerbruttorechnungen",$projekt)!="1")
@@ -3068,16 +3071,18 @@ class Briefpapier extends SuperFPDF {
// && $this->getStyleElement("immerbruttorechnungen",$projekt)!="1")
{
if(!$inventurohnepreis){
- $this->Cell_typed($priceWidth,$cellhoehe,$item['ohnepreis']?'':$this->formatMoney((double)$item['tprice']),0,0,'R');
+// $this->Cell_typed($priceWidth,$cellhoehe,$item['ohnepreis']?'':$this->formatMoney((double)$item['tprice']),0,0,'R');
+ $price_displayed = $item['ohnepreis']?'':$this->formatMoney((double)$item['tprice']);
}
}
else{
if(!$inventurohnepreis){
- $this->Cell_typed($priceWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']), 0, 0, 'R');
+// $this->Cell_typed($priceWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']), 0, 0, 'R');
+ $price_displayed = $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']);
}
}
- $this->Cell_typed($rabattWidth,$cellhoehe,"",0,0,'R');
+ // $this->Cell_typed($rabattWidth,$cellhoehe,"",0,0,'R');
}
}
}
@@ -3093,7 +3098,7 @@ class Briefpapier extends SuperFPDF {
$this->Cell_typed($priceWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['price'] * $item['tmptax']), 0, 0, 'R');
}
}
- }
+ }
//$this->Cell_typed($sumWidth,$cellhoehe,$this->formatMoney($item['tprice']).' '.$item['currency'],0,0,'R');
if($this->rabatt=='1')
{
@@ -3107,12 +3112,14 @@ class Briefpapier extends SuperFPDF {
//if(($this->anrede=="firma" || $this->app->erp->AnzeigeBelegNetto($this->anrede,$projekt) || $this->doctype=="bestellung" || $this->getStyleElement("immernettorechnungen",$projekt)=="1")
// && $this->getStyleElement("immerbruttorechnungen",$projekt)!="1")
if(!$inventurohnepreis){
- $this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice']), 0, 0, 'R');
+// $this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice']), 0, 0, 'R');
+ $price_displayed = $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice']);
}
}
else{
if(!$inventurohnepreis){
- $this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']), 0, 0, 'R');
+// $this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']), 0, 0, 'R');
+ $price_displayed = $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']);
}
}
}
@@ -3121,18 +3128,29 @@ class Briefpapier extends SuperFPDF {
// if(($this->anrede=="firma" || $this->app->erp->AnzeigeBelegNetto($this->anrede,$projekt) || $this->doctype=="bestellung" || $this->getStyleElement("immernettorechnungen",$projekt)=="1")
// && $this->getStyleElement("immerbruttorechnungen",$projekt)!="1")
if(!$inventurohnepreis){
- $this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice']), 0, 0, 'R');
+// $this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice']), 0, 0, 'R');
+ $price_displayed = $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice']);
}
}
else{
if(!$inventurohnepreis){
- $this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']), 0, 0, 'R');
+// $this->Cell_typed($sumWidth, $cellhoehe, $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']), 0, 0, 'R');
+ $price_displayed = $item['ohnepreis'] ? '' : $this->formatMoney((double)$item['tprice'] * $item['tmptax']);
}
}
}
}
}
+ // OpenXE add price here
+ if (!empty($price_displayed)) {
+ if ($item['optional']) {
+ $this->Cell_typed($sumWidth, $cellhoehe, "(".$price_displayed.")", 0, 0, 'R');
+ } else {
+ $this->Cell_typed($sumWidth, $cellhoehe, $price_displayed, 0, 0, 'R');
+ }
+ }
+
}
else if(($this->doctype==='lieferschein' || $this->doctype==='preisanfrage') && $this->getStyleElement('artikeleinheit')=='1')
{
@@ -4279,7 +4297,7 @@ class Briefpapier extends SuperFPDF {
$this->Cell_typed(40,3,'',0,0,'R');
}
$this->Ln();
- }
+ }
$this->SetY($this->GetY()+2);
//$this->Line(110, $this->GetY(), 190,$this->GetY());
}
@@ -4320,6 +4338,16 @@ class Briefpapier extends SuperFPDF {
$this->Line($differenz_wegen_abstand+5, $this->GetY(), 210-$this->getStyleElement('abstand_seitenrandrechts'),$this->GetY());
$this->Line($differenz_wegen_abstand+5, $this->GetY()+1, 210-$this->getStyleElement('abstand_seitenrandrechts'),$this->GetY()+1);
}
+
+ if(isset($this->totals['optional'])) {
+ $this->SetFont($this->GetFont(),'',$this->getStyleElement('schriftgroesse_gesamt'));
+ $this->Ln(2);
+ $this->Cell_typed($differenz_wegen_abstand,1,'',0);
+ $this->Cell_typed(30,5,"(".$this->app->erp->Beschriftung('dokument_gesamt_optional'),0,0,'L');
+ $this->Cell_typed(40,5,$this->formatMoney(round($this->totals['optional'],2), 2).' '.$this->waehrung.")",0,0,'R');
+ $this->Ln();
+ }
+
$this->SetY($this->GetY()+10);
}