From 50d8646d70381cceb41faa2a4d070370a0b57e75 Mon Sep 17 00:00:00 2001 From: OpenXE <> Date: Sun, 25 Aug 2024 14:32:56 +0200 Subject: [PATCH] verbindlichkeit date assistant --- www/pages/content/verbindlichkeit_edit.tpl | 6 +- www/pages/verbindlichkeit.php | 581 +++++++++++---------- 2 files changed, 302 insertions(+), 285 deletions(-) diff --git a/www/pages/content/verbindlichkeit_edit.tpl b/www/pages/content/verbindlichkeit_edit.tpl index 319ca0c1..83a20a37 100644 --- a/www/pages/content/verbindlichkeit_edit.tpl +++ b/www/pages/content/verbindlichkeit_edit.tpl @@ -62,7 +62,7 @@ {|Rechnungsdatum|}: - + @@ -103,7 +103,7 @@ {|Zahlbar bis|}: - +   Tage @@ -119,7 +119,7 @@ {|Skonto bis|}: - +   Tage diff --git a/www/pages/verbindlichkeit.php b/www/pages/verbindlichkeit.php index 45a559e0..3eda30d8 100644 --- a/www/pages/verbindlichkeit.php +++ b/www/pages/verbindlichkeit.php @@ -15,7 +15,7 @@ class Verbindlichkeit { return; $this->app->ActionHandlerInit($this); - $this->app->ActionHandler("list", "verbindlichkeit_list"); + $this->app->ActionHandler("list", "verbindlichkeit_list"); $this->app->ActionHandler("create", "verbindlichkeit_edit"); // This automatically adds a "New" button $this->app->ActionHandler("edit", "verbindlichkeit_edit"); $this->app->ActionHandler("positionen", "verbindlichkeit_positionen"); @@ -28,10 +28,10 @@ class Verbindlichkeit { $this->app->ActionHandler("freigabe", "verbindlichkeit_freigabe"); $this->app->ActionHandler("freigabeeinkauf", "verbindlichkeit_freigabeeinkauf"); $this->app->ActionHandler("freigabebuchhaltung", "verbindlichkeit_freigabebuchhaltung"); - $this->app->ActionHandler("freigabebezahlt", "verbindlichkeit_freigabebezahlt"); + $this->app->ActionHandler("freigabebezahlt", "verbindlichkeit_freigabebezahlt"); $this->app->ActionHandler("ruecksetzeneinkauf", "verbindlichkeit_ruecksetzeneinkauf"); $this->app->ActionHandler("ruecksetzenbuchhaltung", "verbindlichkeit_ruecksetzenbuchhaltung"); - $this->app->ActionHandler("ruecksetzenbezahlt", "verbindlichkeit_ruecksetzenbezahlt"); + $this->app->ActionHandler("ruecksetzenbezahlt", "verbindlichkeit_ruecksetzenbezahlt"); $this->app->ActionHandler("minidetail", "verbindlichkeit_minidetail"); $this->app->DefaultActionHandler("list"); @@ -50,14 +50,14 @@ class Verbindlichkeit { $width = array('1%','1%','10%'); // Fill out manually later // columns that are aligned right (numbers etc) - // $alignright = array(4,5,6,7,8); + // $alignright = array(4,5,6,7,8); $findcols = array( 'v.id', 'v.id', 'v.belegnr', 'a.name', - 'a.lieferantennummer', + 'a.lieferantennummer', 'v.rechnung', 'v.rechnungsdatum', 'v.betrag', @@ -70,10 +70,10 @@ class Verbindlichkeit { 'v.status_beleg', 'v.id' ); - - $searchsql = array( + + $searchsql = array( 'a.name', - 'a.lieferantennummer', + 'a.lieferantennummer', 'v.rechnung', 'v.internebemerkung' ); @@ -91,7 +91,7 @@ class Verbindlichkeit { $menu = "
" . "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> " . "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . "
"; - $sql = "SELECT SQL_CALC_FOUND_ROWS + $sql = "SELECT SQL_CALC_FOUND_ROWS v.id, $dropnbox, v.belegnr, @@ -103,8 +103,8 @@ class Verbindlichkeit { v.waehrung, if(v.bezahlt,'bezahlt','offen'), ".$app->erp->FormatDate("v.zahlbarbis").", - IF(v.skonto <> 0,".$app->erp->FormatDate("v.skontobis").",''), - IF(v.skonto <> 0,CONCAT(".$app->erp->FormatMenge('v.skonto',0).",'%'),''), + IF(v.skonto <> 0,".$app->erp->FormatDate("v.skontobis").",''), + IF(v.skonto <> 0,CONCAT(".$app->erp->FormatMenge('v.skonto',0).",'%'),''), v.status, ".$app->YUI->IconsSQLVerbindlichkeit().", v.id FROM verbindlichkeit v @@ -134,9 +134,9 @@ class Verbindlichkeit { else oMoreData' . $r . $name . ' = 1; - $(\'#' . $name . '\').dataTable().fnFilter( + $(\'#' . $name . '\').dataTable().fnFilter( \'\', - i, + i, 0,0 ); } @@ -145,7 +145,7 @@ class Verbindlichkeit { $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) { - $where .= " AND datei_anzahl IS NULL"; + $where .= " AND datei_anzahl IS NULL"; } else { } @@ -154,36 +154,36 @@ class Verbindlichkeit { $where .= " AND v.freigabe <> '1'"; } else { - } + } $more_data3 = $this->app->Secure->GetGET("more_data3"); if ($more_data3 == 1) { $where .= " AND v.rechnungsfreigabe <> '1'"; } - else { - } - + else { + } + $more_data4 = $this->app->Secure->GetGET("more_data4"); if ($more_data4 == 1) { - $where .= " AND v.bezahlt <> 1"; + $where .= " AND v.bezahlt <> 1"; + } + else { } - else { - } $more_data5 = $this->app->Secure->GetGET("more_data5"); if ($more_data5 == 1) { } - else { - $where .= " AND v.status <> 'storniert'"; - } + else { + $where .= " AND v.status <> 'storniert'"; + } $more_data6 = $this->app->Secure->GetGET("more_data6"); if ($more_data6 == 1) { } - else { - $where .= " AND v.status <> 'abgeschlossen'"; - } - + else { + $where .= " AND v.status <> 'abgeschlossen'"; + } + $this->app->YUI->DatePicker('zahlbarbis'); $filterzahlbarbis = $this->app->YUI->TableSearchFilter($name, 7,'zahlbarbis'); if (!empty($filterzahlbarbis)) { @@ -204,7 +204,7 @@ class Verbindlichkeit { break; case 'verbindlichkeit_paketdistribution_list': - $allowed['verbindlichkeit_paketdistribution_list'] = array('list'); + $allowed['verbindlichkeit_paketdistribution_list'] = array('list'); $id = $app->Secure->GetGET('id'); if (empty($id)) { @@ -212,13 +212,13 @@ class Verbindlichkeit { } $verbindlichkeit = $app->DB->SelectArr("SELECT v.adresse, v.rechnung, b.belegnr FROM verbindlichkeit v LEFT JOIN bestellung b ON b.id = v.bestellung WHERE v.id = ".$id)[0]; - + $lieferant = $verbindlichkeit['adresse']; $bestellnummer = $verbindlichkeit['belegnr']; $rechnung = $verbindlichkeit['rechnung']; - + $heading = array('', 'Paket-Nr.','Paket-Pos.', 'Bestellung', 'Lieferschein', 'Rechnung', 'Artikel-Nr.','Artikel','Bemerkung','Menge','Menge offen','Eingabe','Preis','Steuer','Sachkonto',''); - $width = array( '1%','1%', '1%', '5%', '5%', '5%', '5%', '20%', '20%', '2%', '1%', '1%', '1%', '1%', '1%', '1%'); + $width = array( '1%','1%', '1%', '5%', '5%', '5%', '5%', '20%', '20%', '2%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('id','pa','id','belegnr','lsnr','renr','artikelnummer','name_de','bemerkung','menge','offen_menge','offen_menge','preis','steuer','sachkonto','pa'); $searchsql = array('p.nummer', 'p.name', 'p.bemerkung'); @@ -226,7 +226,7 @@ class Verbindlichkeit { $alignright = array(9,10); $defaultorder = 1; - $defaultorderdesc = 0; + $defaultorderdesc = 0; $offen_menge = "TRIM(IF( pd.menge > COALESCE(vp.menge,0), @@ -235,10 +235,10 @@ class Verbindlichkeit { ))+0"; $auswahl = array ( - ' 'pd.id'], '"/>' - ); + ); $werte = array ( ' $offen_menge], '"/>' - ); + ); $preise = array ( '' - ); - + ); + $artikellink = array ( '', + '">', ['sql' => 'art.nummer'], '' ); @@ -267,16 +267,16 @@ class Verbindlichkeit { $paketlink = array ( '', + '">', ['sql' => 'pa.id'], '' ); - + $where = "offen_menge > 0"; // Toggle filters $this->app->Tpl->Add('JQUERYREADY', "$('#passende').click( function() { fnFilterColumn1( 0 ); } );"); - + for ($r = 1;$r <= 1;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) @@ -286,9 +286,9 @@ class Verbindlichkeit { else oMoreData' . $r . $name . ' = 1; - $(\'#' . $name . '\').dataTable().fnFilter( + $(\'#' . $name . '\').dataTable().fnFilter( \'\', - i, + i, 0,0 ); } @@ -299,12 +299,12 @@ class Verbindlichkeit { if ($more_data1 == 1) { $innerwhere .= " AND ((b.belegnr LIKE '%".$bestellnummer."%' AND '".$bestellnummer."' <> '') OR (pa.renr LIKE '%".$rechnung."%' AND pa.renr <> ''))"; } else { - } - // END Toggle filters + } + // END Toggle filters $sql = " SELECT SQL_CALC_FOUND_ROWS * FROM ( - SELECT + SELECT pa.id pa_id, ".$this->app->erp->ConcatSQL($auswahl)." AS auswahl, ".$this->app->erp->ConcatSQL($paketlink)." pa, @@ -326,7 +326,7 @@ class Verbindlichkeit { if(art.umsatzsteuer = '',art.steuersatz,art.umsatzsteuer) steuer, if (skart.id <> 0, CONCAT(skart.sachkonto,' ',skart.beschriftung), - CONCAT(skadr.sachkonto,' ',skadr.beschriftung) + CONCAT(skadr.sachkonto,' ',skadr.beschriftung) ) AS sachkonto FROM paketannahme pa @@ -339,7 +339,7 @@ class Verbindlichkeit { LEFT JOIN bestellung_position bp ON bp.id = pd.bestellung_position LEFT JOIN bestellung b ON - b.id = bp.bestellung + b.id = bp.bestellung LEFT JOIN( SELECT paketdistribution, @@ -350,11 +350,11 @@ class Verbindlichkeit { paketdistribution ) vp ON - vp.paketdistribution = pd.id - LEFT JOIN + vp.paketdistribution = pd.id + LEFT JOIN kontorahmen skart ON skart.id = art.kontorahmen - LEFT JOIN - kontorahmen skadr ON skadr.id = adr.kontorahmen + LEFT JOIN + kontorahmen skadr ON skadr.id = adr.kontorahmen WHERE pa.adresse = ".$lieferant." AND pd.vorlaeufig IS NULL".$innerwhere." ) temp "; @@ -365,24 +365,24 @@ class Verbindlichkeit { break; case 'verbindlichkeit_positionen': - $allowed['verbindlichkeit_positionen'] = array('list'); + $allowed['verbindlichkeit_positionen'] = array('list'); $id = $app->Secure->GetGET('id'); $freigabe = $app->DB->Select("SELECT freigabe FROM verbindlichkeit WHERE id = '".$id."'"); $rechnungsfreigabe = $app->DB->Select("SELECT rechnungsfreigabe FROM verbindlichkeit WHERE id = '".$id."'"); $heading = array('', 'Paket-Nr.','Paket-Pos.', 'Bestellung', 'Artikel-Nr.','Artikel','Bemerkung','Menge','Preis','Steuersatz','Sachkonto'); - $width = array( '1%','1%', '1%' , '2%', '2%', '20%', '20%', '1%', '1%', '3%', '1%', '1%'); + $width = array( '1%','1%', '1%' , '2%', '2%', '20%', '20%', '1%', '1%', '3%', '1%', '1%'); $findcols = array('vp.id','pd.paketannahme','pd.id','b.belegnr','art.nummer','art.name_de','pd.bemerkung','vp.menge','vp.preis','vp.steuersatz',"CONCAT(skv.sachkonto,' ',skv.beschriftung)",'vp.id'); $searchsql = array('p.nummer', 'p.name', 'p.bemerkung'); - $alignright = array(8,9,10); + $alignright = array(8,9,10); $defaultorder = 1; - $defaultorderdesc = 0; + $defaultorderdesc = 0; - if (empty($freigabe)) { + if (empty($freigabe)) { $menu="
"."Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> "."Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"."
"; } else if (empty($rechnungsfreigabe)) { $menu="
"."Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"."
"; @@ -390,20 +390,20 @@ class Verbindlichkeit { else { $deletepos = array(''); } - $heading[] = ''; - + $heading[] = ''; + $box = "CONCAT('') AS `auswahl`"; $paketlink = array ( '', + '">', ['sql' => 'pd.paketannahme'], '' ); $sql = " - SELECT SQL_CALC_FOUND_ROWS + SELECT SQL_CALC_FOUND_ROWS vp.id, $box, ".$this->app->erp->ConcatSQL($paketlink)." pa, @@ -429,7 +429,7 @@ class Verbindlichkeit { adr.id = v.adresse LEFT JOIN bestellung_position bp ON pd.bestellung_position = bp.id LEFT JOIN bestellung b ON b.id = bp.bestellung - LEFT JOIN kontorahmen skv ON skv.id = vp.kontorahmen + LEFT JOIN kontorahmen skv ON skv.id = vp.kontorahmen "; $where = "vp.verbindlichkeit = ".$id; @@ -448,26 +448,26 @@ class Verbindlichkeit { } return $erg; } - + function verbindlichkeit_list() { // Process multi action $submit = $this->app->Secure->GetPOST('submit'); switch($submit) { case 'status_berechnen': - + $sql = "SELECT id FROM verbindlichkeit WHERE status <> 'abgeschlossen' AND status <> 'storniert'"; $ids = $this->app->DB->SelectArr($sql); - + foreach ($ids as $verbindlichkeit) { $this->verbindlichkeit_abschliessen($verbindlichkeit['id']); } - + break; case 'ausfuehren': $auswahl = $this->app->Secure->GetPOST('auswahl'); $aktion = $this->app->Secure->GetPOST('sel_aktion'); - + $selectedIds = []; if(!empty($auswahl)) { foreach($auswahl as $selectedId) { @@ -475,7 +475,7 @@ class Verbindlichkeit { if($selectedId > 0) { $selectedIds[] = $selectedId; } - } + } switch ($aktion) { case 'freigabeeinkauf': @@ -487,7 +487,7 @@ class Verbindlichkeit { } break; case 'freigabebuchhaltung': - foreach ($selectedIds as $id) { + foreach ($selectedIds as $id) { $result = $this->verbindlichkeit_freigabebuchhaltung($id); if ($result !== true) { $this->app->YUI->Message('warning',$result); @@ -502,9 +502,9 @@ class Verbindlichkeit { } } break; - } - } - break; + } + } + break; } $this->app->erp->MenuEintrag("index.php?module=verbindlichkeit&action=list", "Übersicht"); @@ -531,51 +531,51 @@ class Verbindlichkeit { $this->app->User->SetParameter('table_verbindlichkeit_list_skontobis', ''); $this->app->Tpl->Parse('PAGE', "verbindlichkeit_list.tpl"); - } + } public function verbindlichkeit_delete() { $id = (int) $this->app->Secure->GetGET('id'); - - $this->app->DB->Delete("UPDATE `verbindlichkeit` SET status='storniert' WHERE `id` = '{$id}'"); - $this->app->Tpl->Set('MESSAGE', "
Der Eintrag wurde storniert.
"); + + $this->app->DB->Delete("UPDATE `verbindlichkeit` SET status='storniert' WHERE `id` = '{$id}'"); + $this->app->Tpl->Set('MESSAGE', "
Der Eintrag wurde storniert.
"); $this->verbindlichkeit_list(); - } + } public function verbindlichkeit_deletepos() { $posid = (int) $this->app->Secure->GetGET('posid'); - $id = (int) $this->app->Secure->GetGET('id'); + $id = (int) $this->app->Secure->GetGET('id'); $verbindlichkeit = $this->app->DB->Select("SELECT verbindlichkeit FROM verbindlichkeit_position WHERE id ='{$posid}'"); - $this->app->DB->Delete("DELETE vp FROM verbindlichkeit_position vp INNER JOIN verbindlichkeit v ON v.id = vp.verbindlichkeit WHERE vp.id = '{$posid}' AND v.freigabe <> 1"); + $this->app->DB->Delete("DELETE vp FROM verbindlichkeit_position vp INNER JOIN verbindlichkeit v ON v.id = vp.verbindlichkeit WHERE vp.id = '{$posid}' AND v.freigabe <> 1"); header("Location: index.php?module=verbindlichkeit&action=edit&id=$id#tabs-2"); - } + } /* * Edit verbindlichkeit item * If id is empty, create a new one */ - + function verbindlichkeit_edit($einkauf_automatik_aus = false) { $id = $this->app->Secure->GetGET('id'); - + // Check if other users are editing this id if($this->app->erp->DisableModul('verbindlichkeit',$id)) { return; - } - + } + $this->app->Tpl->Set('ID', $id); $this->verbindlichkeit_menu($id); $input = $this->GetInput(); $submit = $this->app->Secure->GetPOST('submit'); - + if (empty($id)) { // New item $id = 'NULL'; $input['status'] = 'angelegt'; - } + } if (!empty($submit)) { $einkauf_automatik_aus = false; @@ -584,7 +584,7 @@ class Verbindlichkeit { switch($submit) { case 'speichern': - // Write to database + // Write to database // Add checks here $freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM verbindlichkeit WHERE id =".$id)[0]; @@ -597,21 +597,36 @@ class Verbindlichkeit { $input['projekt'] = $this->app->erp->ReplaceProjekt(true,$projekt,true); $input['kostenstelle'] = $this->app->DB->Select("SELECT id FROM kostenstellen WHERE nummer = '".$kostenstelle."'"); } else { - $input['adresse'] = $this->app->erp->ReplaceLieferantennummer(true,$input['adresse'],true); // Parameters: Target db?, value, from form? + $input['rechnungsdatum'] = $this->app->erp->ReplaceDatum(true,$input['rechnungsdatum'],true); // Parameters: Target db?, value, from form? $input['eingangsdatum'] = $this->app->erp->ReplaceDatum(true,$input['eingangsdatum'],true); // Parameters: Target db?, value, from form? $input['skontobis'] = $this->app->erp->ReplaceDatum(true,$input['skontobis'],true); // Parameters: Target db?, value, from form? $input['zahlbarbis'] = $this->app->erp->ReplaceDatum(true,$input['zahlbarbis'],true); // Parameters: Target db?, value, from form? + + if(!empty($input['zahlbarbis_tage'])) { + $zahlbarbis = date_create_from_format('Y-m-d', $input['rechnungsdatum']); + date_add($zahlbarbis,date_interval_create_from_date_string($input['zahlbarbis_tage']." days")); + $input['zahlbarbis'] = date_format($zahlbarbis, 'Y-m-d'); + } + unset($input['zahlbarbis_tage']); + if(!empty($input['skontobis_tage'])) { + $skontobis = date_create_from_format('Y-m-d', $input['rechnungsdatum']); + date_add($skontobis,date_interval_create_from_date_string($input['skontobis_tage']." days")); + $input['skontobis'] = date_format($skontobis, 'Y-m-d'); + } + unset($input['skontobis_tage']); + + $input['adresse'] = $this->app->erp->ReplaceLieferantennummer(true,$input['adresse'],true); // Parameters: Target db?, value, from form? $input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true); $input['kostenstelle'] = $this->app->DB->Select("SELECT id FROM kostenstellen WHERE nummer = '".$input['kostenstelle']."'"); $input['bestellung'] = $this->app->erp->ReplaceBestellung(true,$input['bestellung'],true); if(empty($input['projekt']) && !empty($input['adresse'])) { - $input['projekt'] = $this->app->erp->GetCreateProjekt($input['adresse']); + $input['projekt'] = $this->app->erp->GetCreateProjekt($input['adresse']); } if (!empty($input['adresse'])) { $adressdaten = $this->app->DB->SelectRow(" - SELECT + SELECT zahlungszieltagelieferant, zahlungszieltageskontolieferant, zahlungszielskontolieferant, @@ -619,7 +634,7 @@ class Verbindlichkeit { FROM adresse WHERE id = ".$input['adresse'] ); - + if ($input['zahlbarbis'] == '0000-00-00' && $input['rechnungsdatum'] != '0000-00-00' && !empty($adressdaten['zahlungszieltagelieferant'])) { $input['zahlbarbis'] = date('Y-m-d',strtotime($input['rechnungsdatum']." + ".$adressdaten['zahlungszieltagelieferant']." days")); } @@ -630,12 +645,12 @@ class Verbindlichkeit { } - } + } $columns = "id, "; $values = "$id, "; $update = ""; - + $fix = ""; foreach ($input as $key => $value) { @@ -662,7 +677,7 @@ class Verbindlichkeit { header("Location: index.php?module=verbindlichkeit&action=edit&id=$id&msg=$msg"); } else { $this->app->Tpl->Set('MESSAGE', "
Die Einstellungen wurden erfolgreich übernommen.
"); - } + } break; case 'positionen_hinzufuegen': @@ -676,7 +691,7 @@ class Verbindlichkeit { $werte = $this->app->Secure->GetPOST('werte'); $preise = $this->app->Secure->GetPOST('preise'); - $bruttoeingabe = $this->app->Secure->GetPOST('bruttoeingabe'); + $bruttoeingabe = $this->app->Secure->GetPOST('bruttoeingabe'); foreach ($ids as $key => $paketdistribution) { $menge = $werte[$key]; @@ -687,13 +702,13 @@ class Verbindlichkeit { // Check available number $sql = " - SELECT + SELECT IF( pd.menge > COALESCE(vp.menge,0), pd.menge - COALESCE(vp.menge,0), 0 ) offen_menge - FROM + FROM paketdistribution pd LEFT JOIN( SELECT @@ -705,7 +720,7 @@ class Verbindlichkeit { paketdistribution ) vp ON - vp.paketdistribution = pd.id + vp.paketdistribution = pd.id WHERE pd.id = ".$paketdistribution." "; $offen_menge = $this->app->DB->Select($sql); @@ -719,27 +734,27 @@ class Verbindlichkeit { } $preis = $preise[$key]; - $sql = "SELECT + $sql = "SELECT a.id, a.umsatzsteuer, a.steuersatz, COALESCE(if (skart.id <> 0,skart.id,skadr.id),0) AS kontorahmen - FROM - paketdistribution pd + FROM + paketdistribution pd INNER JOIN paketannahme pa ON pa.id = pd.paketannahme - INNER JOIN + INNER JOIN artikel a ON a.id = pd.artikel - INNER JOIN + INNER JOIN adresse adr ON pa.adresse = adr.id - LEFT JOIN + LEFT JOIN kontorahmen skart ON skart.id = a.kontorahmen - LEFT JOIN - kontorahmen skadr ON skadr.id = adr.kontorahmen + LEFT JOIN + kontorahmen skadr ON skadr.id = adr.kontorahmen WHERE pd.id =".$paketdistribution; $artikel = $this->app->DB->SelectRow($sql); - + $einartikel = $artikel['id']; $umsatzsteuer = $artikel['umsatzsteuer']; $kontorahmen = $artikel['kontorahmen']; @@ -752,13 +767,13 @@ class Verbindlichkeit { if ($bruttoeingabe) { $preis = $preis / (1+($steuersatz/100)); - } + } $sql = "INSERT INTO verbindlichkeit_position (verbindlichkeit,paketdistribution, menge, preis, steuersatz, artikel, kontorahmen) VALUES ($id, $paketdistribution, $menge, $preis, $steuersatz, $einartikel, $kontorahmen)"; $this->app->DB->Insert($sql); } - break; - case 'positionen_entfernen': + break; + case 'positionen_entfernen': $freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM verbindlichkeit WHERE id =".$id)[0]; if ($freigabe['rechnungsfreigabe'] || $freigabe['freigabe']) { @@ -769,10 +784,10 @@ class Verbindlichkeit { if (!is_array($ids)) { break; } - $this->app->DB->Delete("DELETE vp FROM verbindlichkeit_position vp INNER JOIN verbindlichkeit v ON v.id = vp.verbindlichkeit WHERE vp.id IN (".implode(',',$ids).") AND v.freigabe <> 1"); + $this->app->DB->Delete("DELETE vp FROM verbindlichkeit_position vp INNER JOIN verbindlichkeit v ON v.id = vp.verbindlichkeit WHERE vp.id IN (".implode(',',$ids).") AND v.freigabe <> 1"); - break; - case 'positionen_steuersatz_zu_netto': + break; + case 'positionen_steuersatz_zu_netto': $freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM verbindlichkeit WHERE id =".$id)[0]; if ($freigabe['rechnungsfreigabe'] || $freigabe['freigabe']) { @@ -792,12 +807,12 @@ class Verbindlichkeit { $faktor = 1+($tmpsteuersatz/100); - $sql = "UPDATE verbindlichkeit_position SET preis = preis / ".$faktor." WHERE id = $posid"; + $sql = "UPDATE verbindlichkeit_position SET preis = preis / ".$faktor." WHERE id = $posid"; $this->app->DB->Update($sql); - } + } break; - case 'positionen_kontorahmen_setzen': + case 'positionen_kontorahmen_setzen': $freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM verbindlichkeit WHERE id =".$id)[0]; if ($freigabe['rechnungsfreigabe']) { break; @@ -811,14 +826,14 @@ class Verbindlichkeit { $positionen_sachkonto = $this->app->Secure->GetPOST('positionen_sachkonto'); $positionen_kontorahmen = $this->app->erp->ReplaceKontorahmen(true,$positionen_sachkonto,false); - foreach ($ids as $posid) { - $sql = "UPDATE verbindlichkeit_position SET kontorahmen = '".$positionen_kontorahmen."' WHERE id =".$posid; + foreach ($ids as $posid) { + $sql = "UPDATE verbindlichkeit_position SET kontorahmen = '".$positionen_kontorahmen."' WHERE id =".$posid; $this->app->DB->Update($sql); - } + } break; } - + // Load values again from database $dropnbox = "'' AS `open`, CONCAT('') AS `auswahl`"; $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS v.id, @@ -851,7 +866,7 @@ class Verbindlichkeit { v.bezahlt, v.kontoauszuege, v.firma, - v.logdatei, + v.logdatei, v.waehrung, v.zahlungsweise, v.eingangsdatum, @@ -896,40 +911,40 @@ class Verbindlichkeit { a.name AS adresse_name FROM verbindlichkeit v LEFT JOIN adresse a ON a.id = v.adresse"." WHERE v.id=$id"); foreach ($result[0] as $key => $value) { - $this->app->Tpl->Set(strtoupper($key), $value); + $this->app->Tpl->Set(strtoupper($key), $value); } if (!empty($result[0])) { $verbindlichkeit_from_db = $result[0]; } - // Check positions - $pos_check = $this->check_positions($verbindlichkeit_from_db['id'],$verbindlichkeit_from_db['betrag']); - + // Check positions + $pos_check = $this->check_positions($verbindlichkeit_from_db['id'],$verbindlichkeit_from_db['betrag']); + $this->app->Tpl->Set('BETRAGNETTO', $pos_check['betrag_netto']); $this->app->Tpl->Set('BETRAGBRUTTOPOS', $pos_check['betrag_brutto']); - + if (empty($pos_check['rundungsdifferenz'])) { - $this->app->Tpl->Set('RUNDUNGSDIFFERENZICONHIDDEN', 'hidden'); + $this->app->Tpl->Set('RUNDUNGSDIFFERENZICONHIDDEN', 'hidden'); } else { - $this->app->Tpl->Set('RUNDUNGSDIFFERENZ', $pos_check['rundungsdifferenz']); + $this->app->Tpl->Set('RUNDUNGSDIFFERENZ', $pos_check['rundungsdifferenz']); } - if ($pos_check['pos_ok']) { + if ($pos_check['pos_ok']) { if (!$verbindlichkeit_from_db['freigabe'] && !$einkauf_automatik_aus) { if ($this->verbindlichkeit_freigabeeinkauf($id,"Verbindlichkeit automatisch freigegeben (Einkauf)") === true) { $this->app->YUI->Message('success',"Verbindlichkeit automatisch freigegeben (Einkauf)"); $verbindlichkeit_from_db['freigabe'] = 1; } else { - $this->app->YUI->Message('warning','Waren-/Leistungsprüfung (Einkauf) nicht abgeschlossen'); + $this->app->YUI->Message('warning','Waren-/Leistungsprüfung (Einkauf) nicht abgeschlossen'); } - } - $this->app->Tpl->Set('POSITIONENMESSAGE', '
Positionen vollständig
'); - + } + $this->app->Tpl->Set('POSITIONENMESSAGE', '
Positionen vollständig
'); + if ($verbindlichkeit_from_db['status'] != 'abgeschlossen' && $verbindlichkeit_from_db['status'] != 'storniert') { - $this->verbindlichkeit_abschliessen($id); - } - + $this->verbindlichkeit_abschliessen($id); + } + } else { $this->app->Tpl->Set(' POSITIONENMESSAGE', '
Positionen nicht vollständig. Bruttobetrag '. @@ -939,30 +954,30 @@ class Verbindlichkeit { ', Differenz '. round($pos_check['betrag_brutto']-$verbindlichkeit_from_db['betrag'],2). '
' - ); + ); if ($verbindlichkeit_from_db['freigabe']) { $this->app->DB->Update("UPDATE verbindlichkeit SET freigabe = 0 WHERE id = ".$id); $verbindlichkeit_from_db['freigabe'] = 0; - $this->app->YUI->Message('warning',"Verbindlichkeit rückgesetzt (Einkauf)"); + $this->app->YUI->Message('warning',"Verbindlichkeit rückgesetzt (Einkauf)"); } - } - + } + /* * Add displayed items later - * + * $this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email); $this->app->Tpl->Add('EMAIL', $email); - $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername); + $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername); $this->app->YUI->AutoComplete("artikel", "artikelnummer"); */ - $this->app->Tpl->Set('FREIGABEEINKAUFHIDDEN','hidden'); // prevent manual setting + $this->app->Tpl->Set('FREIGABEEINKAUFHIDDEN','hidden'); // prevent manual setting if (empty($verbindlichkeit_from_db['adresse']) || $verbindlichkeit_from_db['status'] == 'angelegt') { - $this->app->Tpl->Set('FREIGABEBUCHHALTUNGHIDDEN','hidden'); - $this->app->Tpl->Set('FREIGABEBEZAHLTHIDDEN','hidden'); + $this->app->Tpl->Set('FREIGABEBUCHHALTUNGHIDDEN','hidden'); + $this->app->Tpl->Set('FREIGABEBEZAHLTHIDDEN','hidden'); $this->app->Tpl->Set('POSITIONHINZUFUEGENHIDDEN','hidden'); $this->app->Tpl->Set('POSITIONENHIDDEN','hidden'); } @@ -980,19 +995,19 @@ class Verbindlichkeit { if (!empty($positionen)) { $this->app->Tpl->Set('FREIGABEEINKAUFHIDDEN','hidden'); } - + if ($verbindlichkeit_from_db['rechnungsfreigabe']) { $this->app->Tpl->Set('FREIGABEBUCHHALTUNGHIDDEN','hidden'); $this->app->Tpl->Set('RUECKSETZENEINKAUFHIDDEN','hidden'); - $this->app->Tpl->Set('SACHKONTOCHANGEHIDDEN','hidden'); + $this->app->Tpl->Set('SACHKONTOCHANGEHIDDEN','hidden'); } else { $this->app->Tpl->Set('RUECKSETZENBUCHHALTUNGHIDDEN','hidden'); - } + } if ($verbindlichkeit_from_db['bezahlt'] == '1') { $this->app->Tpl->Set('FREIGABEBEZAHLTHIDDEN','hidden'); } else { $this->app->Tpl->Set('RUECKSETZENBEZAHLTHIDDEN','hidden'); - } + } $this->app->Tpl->Set('WARENEINGANGCHECKED', $verbindlichkeit_from_db['freigabe']==1?"checked":""); $this->app->Tpl->Set('RECHNUNGSFREIGABECHECKED', $verbindlichkeit_from_db['rechnungsfreigabe']==1?"checked":""); @@ -1007,9 +1022,9 @@ class Verbindlichkeit { $this->app->Tpl->Set('ZAHLBARBIS',$this->app->erp->ReplaceDatum(false,$verbindlichkeit_from_db['zahlbarbis'],false)); $this->app->YUI->DatePicker("zahlbarbis"); - $sql = "SELECT - ".$this->app->YUI->IconsSQLVerbindlichkeit() . " AS `icons` - FROM verbindlichkeit v + $sql = "SELECT + ".$this->app->YUI->IconsSQLVerbindlichkeit() . " AS `icons` + FROM verbindlichkeit v LEFT JOIN ( SELECT ds.parameter, COUNT(ds.objekt) datei_anzahl FROM datei_stichwoerter ds INNER JOIN datei d ON d.id = ds.datei WHERE ds.objekt='verbindlichkeit' AND d.geloescht <> 1 GROUP BY ds.parameter ) d ON d.parameter = v.id @@ -1017,7 +1032,7 @@ class Verbindlichkeit { $icons = $this->app->DB->SelectArr($sql); $this->app->Tpl->Add('STATUSICONS', $icons[0]['icons']); - $this->app->YUI->AutoComplete("adresse", "lieferant"); + $this->app->YUI->AutoComplete("adresse", "lieferant"); $this->app->YUI->AutoComplete("projekt", "projektname", 1); $this->app->Tpl->Set('PROJEKT',$this->app->erp->ReplaceProjekt(false,$verbindlichkeit_from_db['projekt'],false)); $this->app->YUI->AutoComplete("kostenstelle", "kostenstelle", 1); @@ -1028,16 +1043,16 @@ class Verbindlichkeit { $this->app->Tpl->Set('ADRESSE_ID', $verbindlichkeit_from_db['adresse']); - $this->app->Tpl->Set('ADRESSE', $this->app->erp->ReplaceLieferantennummer(false,$verbindlichkeit_from_db['adresse'],false)); // Convert ID to form display + $this->app->Tpl->Set('ADRESSE', $this->app->erp->ReplaceLieferantennummer(false,$verbindlichkeit_from_db['adresse'],false)); // Convert ID to form display $this->app->Tpl->Set('BESTELLUNG',$this->app->erp->ReplaceBestellung(false,$verbindlichkeit_from_db['bestellung'],false)); - $this->app->YUI->AutoComplete("bestellung", "lieferantenbestellung",0,"&adresse=".$verbindlichkeit_from_db['adresse']); + $this->app->YUI->AutoComplete("bestellung", "lieferantenbestellung",0,"&adresse=".$verbindlichkeit_from_db['adresse']); $this->app->YUI->CkEditor("internebemerkung"); $anzahldateien = $this->app->erp->AnzahlDateien("verbindlichkeit",$id); if ($anzahldateien > 0) { - $file = urlencode("../../../../index.php?module=verbindlichkeit&action=inlinepdf&id=$id"); + $file = urlencode("../../../../index.php?module=verbindlichkeit&action=inlinepdf&id=$id"); $iframe = ""; $this->app->Tpl->Set('INLINEPDF', $iframe); } else { @@ -1047,7 +1062,7 @@ class Verbindlichkeit { if (empty($verbindlichkeit_from_db['freigabe'])) { $this->app->YUI->TableSearch('PAKETDISTRIBUTION', 'verbindlichkeit_paketdistribution_list', "show", "", "", basename(__FILE__), __CLASS__); } - + // -- POSITIONEN $this->app->YUI->AutoComplete("positionen_sachkonto", "sachkonto", 1); $this->app->YUI->TableSearch('POSITIONEN', 'verbindlichkeit_positionen', "show", "", "", basename(__FILE__), __CLASS__); @@ -1061,15 +1076,15 @@ class Verbindlichkeit { function verbindlichkeit_editpos() { $id = $this->app->Secure->GetGET('id'); - $posid = $this->app->Secure->GetGET('posid'); - + $posid = $this->app->Secure->GetGET('posid'); + $this->app->Tpl->Set('ID', $id); $this->app->erp->MenuEintrag("index.php?module=verbindlichkeit&action=edit&id=$id#tabs-2", "Zurück"); $sachkonto = $this->app->Secure->GetPOST('sachkonto'); - $menge = $this->app->Secure->GetPOST('menge'); - $preis = $this->app->Secure->GetPOST('preis'); - $steuersatz = $this->app->Secure->GetPOST('steuersatz'); + $menge = $this->app->Secure->GetPOST('menge'); + $preis = $this->app->Secure->GetPOST('preis'); + $steuersatz = $this->app->Secure->GetPOST('steuersatz'); $kontorahmen = $this->app->erp->ReplaceKontorahmen(true,$sachkonto,false); if ($menge < 0) { @@ -1081,20 +1096,20 @@ class Verbindlichkeit { if ($steuersatz < 0) { $steuersatz = 0; } - $submit = $this->app->Secure->GetPOST('submit'); + $submit = $this->app->Secure->GetPOST('submit'); - $freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM verbindlichkeit WHERE id =".$id)[0]; + $freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM verbindlichkeit WHERE id =".$id)[0]; if ($freigabe['rechnungsfreigabe'] && $freigabe['freigabe']) { $this->app->Tpl->Set('SAVEDISABLED','disabled'); $this->app->Tpl->Set('SACHKONTOSAVEDISABLED','disabled'); } else if ($freigabe['freigabe']) { - $this->app->Tpl->Set('SAVEDISABLED','disabled'); + $this->app->Tpl->Set('SAVEDISABLED','disabled'); if ($submit != '') - { + { $sql = " - UPDATE verbindlichkeit_position SET + UPDATE verbindlichkeit_position SET kontorahmen = '$kontorahmen' - WHERE id = ".$posid." + WHERE id = ".$posid." "; $this->app->DB->Update($sql); $this->app->Tpl->Set('MESSAGE', "
Die Einstellungen wurden erfolgreich übernommen.
"); @@ -1102,14 +1117,14 @@ class Verbindlichkeit { } } else { if ($submit != '') - { + { $sql = " - UPDATE verbindlichkeit_position SET + UPDATE verbindlichkeit_position SET menge = '$menge', preis = '$preis', steuersatz = '$steuersatz', kontorahmen = '$kontorahmen' - WHERE id = ".$posid." + WHERE id = ".$posid." "; $this->app->DB->Update($sql); @@ -1117,13 +1132,13 @@ class Verbindlichkeit { header("Location: index.php?module=verbindlichkeit&action=edit&id=$id&msg=$msg#tabs-2"); } } - + // Load values again from database $dropnbox = "'' AS `open`, CONCAT('') AS `auswahl`"; - $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS v.id, $dropnbox, v.steuersatz, v.preis, v.menge, v.kontorahmen, v.id FROM verbindlichkeit_position v"." WHERE id=$posid"); + $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS v.id, $dropnbox, v.steuersatz, v.preis, v.menge, v.kontorahmen, v.id FROM verbindlichkeit_position v"." WHERE id=$posid"); foreach ($result[0] as $key => $value) { - $this->app->Tpl->Set(strtoupper($key), $value); + $this->app->Tpl->Set(strtoupper($key), $value); } if (!empty($result)) { @@ -1131,14 +1146,14 @@ class Verbindlichkeit { } else { return; } - + /* * Add displayed items later - * + * $this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email); $this->app->Tpl->Add('EMAIL', $email); - $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername); + $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername); $this->app->YUI->AutoComplete("artikel", "artikelnummer"); @@ -1159,10 +1174,12 @@ class Verbindlichkeit { $input['adresse'] = $this->app->Secure->GetPOST('adresse'); $input['rechnung'] = $this->app->Secure->GetPOST('rechnung'); $input['zahlbarbis'] = $this->app->Secure->GetPOST('zahlbarbis'); + $input['zahlbarbis_tage'] = $this->app->Secure->GetPOST('zahlbarbis_tage'); $input['betrag'] = $this->app->Secure->GetPOST('betrag'); $input['waehrung'] = $this->app->Secure->GetPOST('waehrung'); $input['skonto'] = $this->app->Secure->GetPOST('skonto'); $input['skontobis'] = $this->app->Secure->GetPOST('skontobis'); + $input['skontobis_tage'] = $this->app->Secure->GetPOST('skontobis_tage'); $input['projekt'] = $this->app->Secure->GetPOST('projekt'); $input['zahlungsweise'] = $this->app->Secure->GetPOST('zahlungsweise'); $input['eingangsdatum'] = $this->app->Secure->GetPOST('eingangsdatum'); @@ -1173,14 +1190,14 @@ class Verbindlichkeit { return $input; } - function verbindlichkeit_menu($id) { + function verbindlichkeit_menu($id) { $this->app->erp->MenuEintrag("index.php?module=verbindlichkeit&action=edit&id=$id", "Details"); $this->app->erp->MenuEintrag("index.php?module=verbindlichkeit&action=list", "Zurück zur Übersicht"); $anzahldateien = $this->app->erp->AnzahlDateien("verbindlichkeit",$id); if ($anzahldateien > 0) { - $anzahldateien = " (".$anzahldateien.")"; + $anzahldateien = " (".$anzahldateien.")"; } else { $anzahldateien=""; } @@ -1199,7 +1216,7 @@ class Verbindlichkeit { if ($invoiceArr['status'] === 'angelegt' || empty($invoiceArr['status'])) { $this->app->erp->MenuEintrag("index.php?module=verbindlichkeit&action=freigabe&id=$id",'Freigabe'); - } + } } function verbindlichkeit_dateien() @@ -1211,9 +1228,9 @@ class Verbindlichkeit { } function verbindlichkeit_inlinepdf() { - $id = $this->app->Secure->GetGET('id'); + $id = $this->app->Secure->GetGET('id'); - $file_attachments = $this->app->erp->GetDateiSubjektObjekt('%','verbindlichkeit',$id); + $file_attachments = $this->app->erp->GetDateiSubjektObjekt('%','verbindlichkeit',$id); if (!empty($file_attachments)) { @@ -1242,14 +1259,14 @@ class Verbindlichkeit { echo($file_contents); $this->app->ExitXentral(); } - } - } - } + } + } + } $this->app->ExitXentral(); } - + function verbindlichkeit_freigabe() - { + { $id = $this->app->Secure->GetGET('id'); $this->app->erp->BelegFreigabe('verbindlichkeit',$id); $this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit freigegeben"); @@ -1258,7 +1275,7 @@ class Verbindlichkeit { // Returns true or error message function verbindlichkeit_freigabeeinkauf($id = null, $text = null) - { + { if (empty($id)) { $id = $this->app->Secure->GetGET('id'); $gotoedit = true; @@ -1266,35 +1283,35 @@ class Verbindlichkeit { $error = false; - if (!$this->verbindlichkeit_is_freigegeben($id)) { + if (!$this->verbindlichkeit_is_freigegeben($id)) { if ($gotoedit) { - $this->app->YUI->Message('warning','Verbindlichkeit nicht freigebeben'); + $this->app->YUI->Message('warning','Verbindlichkeit nicht freigebeben'); $error = true; } else { return('Verbindlichkeit nicht freigebeben '.$this->verbindlichkeit_get_belegnr($id)); - } - } + } + } - // Check wareneingang status - $sql = "SELECT - pa.id - FROM verbindlichkeit_position vp + // Check wareneingang status + $sql = "SELECT + pa.id + FROM verbindlichkeit_position vp INNER JOIN paketdistribution pd ON pd.id = vp.paketdistribution - INNER JOIN paketannahme pa ON pa.id = pd.paketannahme + INNER JOIN paketannahme pa ON pa.id = pd.paketannahme WHERE - verbindlichkeit='$id' + verbindlichkeit='$id' AND - pa.status = 'abgeschlossen' + pa.status = 'abgeschlossen' "; - $check = $this->app->DB->SelectArr($sql); + $check = $this->app->DB->SelectArr($sql); if (empty($check)) { if ($gotoedit) { - $this->app->YUI->Message('warning','Waren-/Leistungsprüfung (Einkauf) nicht abgeschlossen'); + $this->app->YUI->Message('warning','Waren-/Leistungsprüfung (Einkauf) nicht abgeschlossen'); } else { return('Waren-/Leistungsprüfung (Einkauf) nicht abgeschlossen '.$this->verbindlichkeit_get_belegnr($id)); - } + } } else { $sql = "UPDATE verbindlichkeit SET freigabe = 1 WHERE id=".$id; $this->app->DB->Update($sql); @@ -1309,57 +1326,57 @@ class Verbindlichkeit { } else { return(true); - } + } } // Returns true or error message function verbindlichkeit_freigabebuchhaltung($id = null) - { + { if (empty($id)) { $id = $this->app->Secure->GetGET('id'); $gotoedit = true; - } + } $error = false; - if (!$this->verbindlichkeit_is_freigegeben($id)) { + if (!$this->verbindlichkeit_is_freigegeben($id)) { if ($gotoedit) { $this->app->YUI->Message('warning','Verbindlichkeit nicht freigebeben'); $error = true; } else { return('Verbindlichkeit nicht freigebeben '.$this->verbindlichkeit_get_belegnr($id)); - } + } } if (!$error) { // Check accounting $sql = " - SELECT + SELECT vp.id, - v.belegnr - FROM verbindlichkeit_position vp + v.belegnr + FROM verbindlichkeit_position vp LEFT JOIN verbindlichkeit v ON v.id = vp.verbindlichkeit - WHERE + WHERE verbindlichkeit='$id' AND vp.kontorahmen = 0 "; - $check = $this->app->DB->SelectArr($sql); + $check = $this->app->DB->SelectArr($sql); - if (!empty($check)) { + if (!empty($check)) { if ($gotoedit) { - $this->app->YUI->Message('warning','Kontierung unvollständig'); + $this->app->YUI->Message('warning','Kontierung unvollständig'); $error = true; } else { return('Kontierung unvollständig '.$this->verbindlichkeit_get_belegnr($id)); } } } - - if (!$error) { + + if (!$error) { $sql = "UPDATE verbindlichkeit SET rechnungsfreigabe = 1 WHERE freigabe = 1 AND id=".$id; $this->app->DB->Update($sql); - $this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit freigegeben (Buchhaltung)"); + $this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit freigegeben (Buchhaltung)"); } if ($gotoedit) { @@ -1371,21 +1388,21 @@ class Verbindlichkeit { // Returns true or error message function verbindlichkeit_freigabebezahlt($id = null) - { + { if (empty($id)) { $id = $this->app->Secure->GetGET('id'); $gotoedit = true; } - if (!$this->verbindlichkeit_is_freigegeben($id)) { + if (!$this->verbindlichkeit_is_freigegeben($id)) { if ($gotoedit) { - $this->app->YUI->Message('warning','Verbindlichkeit nicht freigebeben'); + $this->app->YUI->Message('warning','Verbindlichkeit nicht freigebeben'); $error = true; } else { return('Verbindlichkeit nicht freigebeben '.$this->verbindlichkeit_get_belegnr($id)); - } + } } - + if (!$error) { $sql = "UPDATE verbindlichkeit SET bezahlt = 1 WHERE id=".$id; $this->app->DB->Update($sql); @@ -1394,20 +1411,20 @@ class Verbindlichkeit { $this->verbindlichkeit_edit(); } else { return(true); - } + } } - } - + } + function verbindlichkeit_abschliessen($id = null) - { + { if (empty($id)) { $id = $this->app->Secure->GetGET('id'); $gotoedit = true; } - - $sql = "SELECT freigabe, rechnungsfreigabe, bezahlt, betrag FROM verbindlichkeit WHERE id =".$id; + + $sql = "SELECT freigabe, rechnungsfreigabe, bezahlt, betrag FROM verbindlichkeit WHERE id =".$id; $verbindlichkeit = $this->app->DB->SelectRow($sql); - + if ($verbindlichkeit['freigabe'] != 1) { $einkauf_check = $this->check_positions($id,$verbindlichkeit['betrag']); if ($einkauf_check['pos_ok']) { @@ -1415,20 +1432,20 @@ class Verbindlichkeit { $verbindlichkeit['freigabe'] = 1; } } - - $anzahldateien = $this->app->erp->AnzahlDateien("verbindlichkeit",$id); + + $anzahldateien = $this->app->erp->AnzahlDateien("verbindlichkeit",$id); if (!empty($anzahldateien) && $verbindlichkeit['freigabe'] && $verbindlichkeit['rechnungsfreigabe'] && $verbindlichkeit['bezahlt']) { $sql = "UPDATE verbindlichkeit SET status = 'abgeschlossen' WHERE id=".$id; $this->app->DB->Update($sql); - $this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit abgeschlossen"); + $this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit abgeschlossen"); if ($gotoedit) { $this->verbindlichkeit_edit(); - } - } - } + } + } + } function verbindlichkeit_ruecksetzeneinkauf($id = null) - { + { if (empty($id)) { $id = $this->app->Secure->GetGET('id'); $gotoedit = true; @@ -1442,7 +1459,7 @@ class Verbindlichkeit { } function verbindlichkeit_ruecksetzenbuchhaltung($id = null) - { + { if (empty($id)) { $id = $this->app->Secure->GetGET('id'); $gotoedit = true; @@ -1456,7 +1473,7 @@ class Verbindlichkeit { } function verbindlichkeit_ruecksetzenbezahlt($id = null) - { + { if (empty($id)) { $id = $this->app->Secure->GetGET('id'); $gotoedit = true; @@ -1466,11 +1483,11 @@ class Verbindlichkeit { $this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit bezahlt rückgesetzt"); if ($gotoedit) { $this->verbindlichkeit_edit(); - } - } - + } + } + /* function verbindlichkeit_schreibschutz($id = null) - { + { if (empty($id)) { $id = $this->app->Secure->GetGET('id'); $gotoedit = true; @@ -1480,14 +1497,14 @@ class Verbindlichkeit { $this->app->erp->BelegProtokoll("verbindlichkeit",$id,"Verbindlichkeit Schreibschutz entfernt"); if ($gotoedit) { $this->verbindlichkeit_edit(); - } + } } */ public function verbindlichkeit_minidetail($parsetarget='',$menu=true) { - $id = $this->app->Secure->GetGET('id'); + $id = $this->app->Secure->GetGET('id'); - $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS + $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS v.id, v.belegnr, v.status_beleg, @@ -1542,14 +1559,14 @@ class Verbindlichkeit { v.sprache, v.id, CONCAT(a.lieferantennummer,' ',a.name) AS adresse - FROM verbindlichkeit v + FROM verbindlichkeit v LEFT JOIN adresse a ON a.id = v.adresse LEFT JOIN projekt p ON a.projekt = p.id LEFT JOIN kostenstellen k ON v.kostenstelle = k.id - WHERE v.id='$id'"); + WHERE v.id='$id'"); foreach ($result[0] as $key => $value) { - $this->app->Tpl->Set(strtoupper($key), $value); + $this->app->Tpl->Set(strtoupper($key), $value); } if (!empty($result[0])) { @@ -1564,11 +1581,11 @@ class Verbindlichkeit { vp.preis, vp.steuersatz, CONCAT(skv.sachkonto,' ',skv.beschriftung) AS sachkonto, - '' - FROM verbindlichkeit_position vp - INNER JOIN artikel art ON art.id = vp.artikel + '' + FROM verbindlichkeit_position vp + INNER JOIN artikel art ON art.id = vp.artikel LEFT JOIN verbindlichkeit v ON v.id = vp.verbindlichkeit - LEFT JOIN adresse adr ON adr.id = v.adresse + LEFT JOIN adresse adr ON adr.id = v.adresse LEFT JOIN kontorahmen skv ON skv.id = vp.kontorahmen WHERE verbindlichkeit='$id' ORDER by vp.sort ASC"); @@ -1612,7 +1629,7 @@ class Verbindlichkeit { '', '', 'Betrag Positionen netto', - 'Betrag Positionen brutto' + 'Betrag Positionen brutto' ); $tmp->AddRow($row); $row = array( @@ -1639,20 +1656,20 @@ class Verbindlichkeit { } function verbindlichkeit_is_freigegeben($id) { - $sql = "SELECT - belegnr - FROM + $sql = "SELECT + belegnr + FROM verbindlichkeit WHERE - id='$id' + id='$id' AND - status IN ('freigegeben') + status IN ('freigegeben') "; - $check = $this->app->DB->SelectArr($sql); + $check = $this->app->DB->SelectArr($sql); if (empty($check)) { return(false); - } else + } else { return(true); } @@ -1663,7 +1680,7 @@ class Verbindlichkeit { } /* Calculate steuersatz - Get from + Get from Check address first, if foreign, then steuersatz = 0 if not foreign there are three cases: befreit = 0, ermaessigt, normal if not befreit, get from projekt or firmendaten @@ -1676,19 +1693,19 @@ class Verbindlichkeit { if ($umsatzsteuer == 'befreit') { return(0); } - + $adresse = $this->app->DB->Select("SELECT adresse FROM verbindlichkeit WHERE id=".$verbindlichkeit); $umsatzsteuer_lieferant = $this->app->DB->Select("SELECT umsatzsteuer_lieferant FROM adresse WHERE id=".$adresse); /* inland, eu-lieferung, import*/ if (in_array($umsatzsteuer_lieferant,array('import','eulieferung'))) { return(0); } - + $projekt = $this->app->DB->Select("SELECT projekt FROM verbindlichkeit WHERE id=".$verbindlichkeit); $steuersatz_projekt = $this->app->DB->SelectRow("SELECT steuersatz_normal, steuersatz_ermaessigt FROM projekt WHERE id ='".$projekt."'"); $steuersatz_normal_projekt = $steuersatz_projekt['steuer_normal']; $steuersatz_ermaessigt_projekt = $steuersatz_projekt['steuer_ermaessigt']; - + $steuersatz_normal = $this->app->erp->Firmendaten('steuersatz_normal'); $steuersatz_ermaessigt = $this->app->erp->Firmendaten('steuersatz_ermaessigt'); @@ -1698,22 +1715,22 @@ class Verbindlichkeit { return($steuersatz_normal_projekt); } else { return($steuersatz_normal); - } + } break; case 'ermaessigt': if (!empty($steuersatz_ermaessigt_projekt)) { return($steuersatz_ermaessigt_projekt); } else { return($steuersatz_ermaessigt); - } + } break; - default: + default: return(0); break; } } - + // Check positions and return status and values function check_positions($id, $bruttobetrag_verbindlichkeit) : array { @@ -1723,7 +1740,7 @@ class Verbindlichkeit { "betrag_brutto" => 0, "rundungsdifferenz" => 0, "bruttobetrag_verbindlichkeit" => $bruttobetrag_verbindlichkeit - ); + ); if (empty($id)) { return($result); @@ -1731,7 +1748,7 @@ class Verbindlichkeit { // Summarize positions $sql = "SELECT * FROM verbindlichkeit_position WHERE verbindlichkeit = ".$id; - $positionen = $this->app->DB->SelectArr($sql); + $positionen = $this->app->DB->SelectArr($sql); if (!empty($positionen)) { $betrag_netto = 0; @@ -1740,7 +1757,7 @@ class Verbindlichkeit { $steuer_normal = 0; $steuer_ermaessigt = 0; - /* + /* Normal: umsatzsteuer leer, steuersatz = leer Ermäßigt: umsatzsteuer ermaessigt, steuersatz = -1 Befreit: umsatzsteuer befreit, steursatz = -1 @@ -1757,27 +1774,27 @@ class Verbindlichkeit { $position['steuersatz_berechnet'] = $tmpsteuersatz; $position['steuertext_berechnet'] = $tmpsteuertext; $position['steuererloes_berechnet'] = $erloes; - + $betrag_netto += ($position['menge']*$position['preis']); $betrag_brutto += ($position['menge']*$position['preis'])*(1+($tmpsteuersatz/100)); $betrag_brutto_pos_summe += round(($position['menge']*$position['preis'])*(1+($tmpsteuersatz/100)),2); } - + $result['betrag_netto'] = round($betrag_netto,2); $result['betrag_brutto'] = round($betrag_brutto,2); - + if ($bruttobetrag_verbindlichkeit == round($betrag_brutto,2)) { - $result['pos_ok'] = true; + $result['pos_ok'] = true; } else if (round($bruttobetrag_verbindlichkeit,2) == round($betrag_brutto_pos_summe,2)) { - $result['pos_ok'] = true; + $result['pos_ok'] = true; if (round($bruttobetrag_verbindlichkeit,2) != round($betrag_brutto_pos_summe,2)) { $result['rundungsdifferenz'] = round(round($betrag_brutto,2) - $betrag_brutto_pos_summe,2); - } - } - } - + } + } + } + return($result); } }