diff --git a/upgrade/data/db_schema.json b/upgrade/data/db_schema.json
index 01ce0079..7fa52c37 100644
--- a/upgrade/data/db_schema.json
+++ b/upgrade/data/db_schema.json
@@ -111307,6 +111307,17 @@
"Extra": "",
"Privileges": "select,insert,update,references",
"Comment": ""
+ },
+ {
+ "Field": "ust_befreit",
+ "Type": "int(1)",
+ "Collation": null,
+ "Null": "NO",
+ "Key": "",
+ "Default": "0",
+ "Extra": "",
+ "Privileges": "select,insert,update,references",
+ "Comment": ""
}
],
"keys": [
@@ -111553,6 +111564,17 @@
"Privileges": "select,insert,update,references",
"Comment": ""
},
+ {
+ "Field": "verbindlichkeit_position",
+ "Type": "int(11)",
+ "Collation": null,
+ "Null": "NO",
+ "Key": "",
+ "Default": "0",
+ "Extra": "",
+ "Privileges": "select,insert,update,references",
+ "Comment": ""
+ },
{
"Field": "kontorahmen",
"Type": "int(11)",
@@ -111563,7 +111585,7 @@
"Extra": "",
"Privileges": "select,insert,update,references",
"Comment": ""
- }
+ }
],
"keys": [
{
diff --git a/www/lib/class.erpapi.php b/www/lib/class.erpapi.php
index 7b6b2960..77825e1b 100644
--- a/www/lib/class.erpapi.php
+++ b/www/lib/class.erpapi.php
@@ -13248,6 +13248,11 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
return $this->ReplaceANABRELSGSBE("rechnung",$db,$value,$fromform);
}
+ function ReplaceVerbindlichkeit($db,$value,$fromform)
+ {
+ return $this->ReplaceANABRELSGSBE("verbindlichkeit",$db,$value,$fromform);
+ }
+
function ReplaceRetoure($db,$value,$fromform)
{
return $this->ReplaceANABRELSGSBE('retoure',$db,$value,$fromform);
diff --git a/www/pages/ajax.php b/www/pages/ajax.php
index 8458e29e..4982cade 100644
--- a/www/pages/ajax.php
+++ b/www/pages/ajax.php
@@ -3832,10 +3832,13 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
$term = str_replace(',','',$term);
}
+ $adresse = (int)$this->app->Secure->GetGET('adresse');
+ if (!empty($adresse)) {
+ $subwhere .= " AND a.id = ".$adresse;
+ }
+
$sql =
- "SELECT CONCAT(v.id,
- IF(IFNULL(v.belegnr, '') <> '' AND v.belegnr!=v.id,
- CONCAT(' Nr. ',v.belegnr),''),
+ "SELECT CONCAT(v.belegnr,
' Betrag: ',".$this->app->erp->FormatPreis('v.betrag',2).",
if(v.skonto <> 0,CONCAT(' mit Skonto ',v.skonto,'% ',
".$this->app->erp->FormatPreis("v.betrag-((v.betrag/100.0)*v.skonto)",2)."),''),' ',
@@ -3848,7 +3851,7 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku
a.name,' (Lieferant ',a.lieferantennummer,if(a.lieferantennummer_buchhaltung!='' AND a.lieferantennummer <> a.lieferantennummer_buchhaltung,CONCAT(' ',a.lieferantennummer_buchhaltung),''),') RE ',v.rechnung,' Rechnungsdatum ',DATE_FORMAT(v.rechnungsdatum,'%d.%m.%Y')) as bezeichnung
FROM verbindlichkeit AS v
LEFT JOIN adresse AS a ON a.id=v.adresse
- WHERE ($subwhere) AND bezahlt!=1 AND status!='storniert'
+ WHERE ($subwhere) AND bezahlt!=1 AND status!='storniert' AND belegnr <> ''
ORDER by v.id DESC"; //AND v.status!='bezahlt' // heute wieder raus
$arr = $this->app->DB->SelectArr($sql);
diff --git a/www/pages/content/lieferantengutschrift_edit.tpl b/www/pages/content/lieferantengutschrift_edit.tpl
index 818e5722..1248d523 100644
--- a/www/pages/content/lieferantengutschrift_edit.tpl
+++ b/www/pages/content/lieferantengutschrift_edit.tpl
@@ -46,7 +46,7 @@
{|Adresse|}:
-
+
|
diff --git a/www/pages/content/lieferantengutschrift_position_edit.tpl b/www/pages/content/lieferantengutschrift_position_edit.tpl
new file mode 100644
index 00000000..5f77492a
--- /dev/null
+++ b/www/pages/content/lieferantengutschrift_position_edit.tpl
@@ -0,0 +1,64 @@
+
+
diff --git a/www/pages/content/lieferantengutschrift_positionen.tpl b/www/pages/content/lieferantengutschrift_positionen.tpl
index 2fdf2453..b8fa6990 100644
--- a/www/pages/content/lieferantengutschrift_positionen.tpl
+++ b/www/pages/content/lieferantengutschrift_positionen.tpl
@@ -81,7 +81,7 @@
function allewareneingaengeauswaehlen()
{
var wert = $('#auswahlallewareneingaenge').prop('checked');
- $('#lieferantengutschrift_paketdistribution_list').find(':checkbox').prop('checked',wert);
+ $('#verbindlichkeit_positionen').find(':checkbox').prop('checked',wert);
}
function alleauswaehlen()
{
diff --git a/www/pages/lieferantengutschrift.php b/www/pages/lieferantengutschrift.php
index 62fae204..f7e6d92e 100644
--- a/www/pages/lieferantengutschrift.php
+++ b/www/pages/lieferantengutschrift.php
@@ -211,10 +211,10 @@ class lieferantengutschrift {
$freigabe = $app->DB->Select("SELECT freigabe FROM lieferantengutschrift WHERE id = '".$id."'");
$rechnungsfreigabe = $app->DB->Select("SELECT rechnungsfreigabe FROM lieferantengutschrift WHERE id = '".$id."'");
- $heading = array('', 'Artikel-Nr.','Artikel','Bemerkung','Menge','Preis','Steuersatz','Sachkonto');
- $width = array( '1%', '20%', '20%', '1%', '1%', '3%', '1%', '1%');
+ $heading = array('' ,'Verbindlichkeit', 'Artikel-Nr.','Artikel','Menge','Preis','Steuersatz','Sachkonto');
+ $width = array( '1%','1%', '20%', '20%', '1%', '1%', '3%', '1%', '1%');
- $findcols = array('vp.id','art.nummer','art.name_de','vp.menge','vp.preis','vp.steuersatz',"CONCAT(skv.sachkonto,' ',skv.beschriftung)",'vp.id');
+ $findcols = array('lgp.id','v.belegnr','art.nummer','art.name_de','lgp.menge','lgp.preis','lgp.steuersatz',"CONCAT(skv.sachkonto,' ',skv.beschriftung)",'lgp.id');
$searchsql = array('p.nummer', 'p.name', 'p.bemerkung');
$alignright = array(8,9,10);
@@ -232,31 +232,139 @@ class lieferantengutschrift {
}
$heading[] = '';
+ $box = "CONCAT('') AS `auswahl`";
+
+ $verbindlichkeitlink = array (
+ '',
+ ['sql' => 'v.belegnr'],
+ ''
+ );
+
+ $artikellink = array (
+ '',
+ ['sql' => 'art.nummer'],
+ ''
+ );
+
+ $sql = "
+ SELECT SQL_CALC_FOUND_ROWS
+ lgp.id,
+ $box,
+ ".$this->app->erp->ConcatSQL($verbindlichkeitlink).",
+ ".$this->app->erp->ConcatSQL($artikellink).",
+ art.name_de,
+ lgp.menge,
+ lgp.preis,
+ lgp.steuersatz,
+ CONCAT(skv.sachkonto,' ',skv.beschriftung),
+ lgp.id
+ FROM
+ lieferantengutschrift_position lgp
+ INNER JOIN lieferantengutschrift lg ON
+ lg.id = lgp.lieferantengutschrift
+ LEFT JOIN verbindlichkeit_position vp ON
+ vp.id = lgp.verbindlichkeit_position
+ LEFT JOIN verbindlichkeit v ON
+ vp.verbindlichkeit = v.id
+ INNER JOIN artikel art ON
+ art.id = lgp.artikel
+ INNER JOIN adresse adr ON
+ adr.id = lg.adresse
+ LEFT JOIN kontorahmen skv ON skv.id = lgp.kontorahmen
+ ";
+
+ $where = "lgp.lieferantengutschrift = ".$id;
+
+ $count = "";
+
+ break;
+ case 'verbindlichkeit_positionen':
+
+ $allowed['verbindlichkeit_positionen'] = array('list');
+
+ $id = $app->Secure->GetGET('id');
+
+ //$verbindlichkeit = $app->DB->Select("SELECT verbindlichkeit FROM lieferantengutschrift WHERE id = '".$id."'");
+
+ $heading = array('', 'Verbindlichkeit', 'Artikel-Nr.','Artikel','Menge','Preis','Steuersatz','Sachkonto', '');
+ $width = array( '1%','2%', '2%', '20%', '1%', '1%', '3%', '1%', '1%');
+
+ $findcols = array('vp.id','v.belegnr','art.nummer','art.name_de','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);
+
+ $defaultorder = 1;
+ $defaultorderdesc = 0;
+
+ $offen_menge = "TRIM(IF(
+ pd.menge > COALESCE(vp.menge,0),
+ pd.menge - COALESCE(vp.menge,0),
+ 0
+ ))+0";
+
+ $auswahl = array (
+ ' 'pd.id'],
+ '"/>'
+ );
+
+ $werte = array (
+ ''
+ );
+
+ $preise = array (
+ ''
+ );
+
+ $artikellink = array (
+ '',
+ ['sql' => 'art.nummer'],
+ ''
+ );
+
$box = "CONCAT('') AS `auswahl`";
$sql = "
SELECT SQL_CALC_FOUND_ROWS
vp.id,
- $box,
- art.nummer,
+ ".$this->app->erp->ConcatSQL($auswahl).",
+ v.belegnr,
+ ".$this->app->erp->ConcatSQL($artikellink).",
art.name_de,
- vp.menge,
+ ".$this->app->erp->ConcatSQL($werte).",
vp.preis,
vp.steuersatz,
CONCAT(skv.sachkonto,' ',skv.beschriftung),
vp.id
FROM
- lieferantengutschrift_position vp
- INNER JOIN lieferantengutschrift v ON
- v.id = vp.lieferantengutschrift
+ verbindlichkeit_position vp
+ INNER JOIN verbindlichkeit v ON
+ v.id = vp.verbindlichkeit
+ INNER JOIN paketdistribution pd ON
+ pd.id = vp.paketdistribution
INNER JOIN artikel art ON
- art.id = vp.artikel
+ art.id = pd.artikel
INNER JOIN adresse adr ON
adr.id = v.adresse
LEFT JOIN kontorahmen skv ON skv.id = vp.kontorahmen
";
- $where = "vp.lieferantengutschrift = ".$id;
+ $where = "v.adresse = (SELECT adresse FROM lieferantengutschrift WHERE id = ".$id.") AND v.status = 'freigegeben'";
$count = "";
@@ -474,7 +582,8 @@ class lieferantengutschrift {
// Write to database
// Add checks here
- $freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe FROM lieferantengutschrift WHERE id =".$id)[0];
+ $freigabe = $this->app->DB->SelectArr("SELECT rechnungsfreigabe, freigabe, adresse, belegnr FROM lieferantengutschrift WHERE id =".$id)[0];
+
if ($freigabe['rechnungsfreigabe'] || $freigabe['freigabe']) {
$internebemerkung = $input['internebemerkung'];
$projekt = $input['projekt'];
@@ -484,7 +593,13 @@ class lieferantengutschrift {
$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?
+
+ if ($freigabe['belegnr']) {
+ unset($input['adresse']);
+ } 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?
@@ -513,9 +628,7 @@ class lieferantengutschrift {
$input['skontobis'] = date('Y-m-d',strtotime($input['rechnungsdatum']." + ".$adressdaten['zahlungszieltageskontolieferant']." days"));
$input['skonto'] = $adressdaten['zahlungszielskontolieferant'];
}
-
}
-
}
$columns = "id, ";
@@ -564,7 +677,7 @@ class lieferantengutschrift {
$bruttoeingabe = $this->app->Secure->GetPOST('bruttoeingabe');
- foreach ($ids as $key => $paketdistribution) {
+ foreach ($ids as $key => $verbindlichkeit_position) {
$menge = $werte[$key];
if ($menge <= 0) {
@@ -575,24 +688,24 @@ class lieferantengutschrift {
$sql = "
SELECT
IF(
- pd.menge > COALESCE(vp.menge,0),
- pd.menge - COALESCE(vp.menge,0),
+ vp.menge > COALESCE(lgp.menge,0),
+ vp.menge - COALESCE(lgp.menge,0),
0
) offen_menge
FROM
- paketdistribution pd
+ verbindlichkeit_position vp
LEFT JOIN(
SELECT
- paketdistribution,
+ verbindlichkeit_position,
SUM(menge) AS menge
FROM
- lieferantengutschrift_position vp
+ lieferantengutschrift_position lgp
GROUP BY
- paketdistribution
- ) vp
+ verbindlichkeit_position
+ ) lgp
ON
- vp.paketdistribution = pd.id
- WHERE pd.id = ".$paketdistribution."
+ vp.id = lgp.verbindlichkeit_position
+ WHERE vp.id = ".$verbindlichkeit_position."
";
$offen_menge = $this->app->DB->Select($sql);
@@ -604,31 +717,32 @@ class lieferantengutschrift {
$menge = $offen_menge;
}
- $preis = $preise[$key];
$sql = "SELECT
a.id,
a.umsatzsteuer,
a.steuersatz,
- COALESCE(if (skart.id <> 0,skart.id,skadr.id),0) AS kontorahmen
+ COALESCE(if (skart.id <> 0,skart.id,skadr.id),0) AS kontorahmen,
+ vp.preis
FROM
- paketdistribution pd
+ verbindlichkeit_position vp
INNER JOIN
- paketannahme pa ON pa.id = pd.paketannahme
+ verbindlichkeit v ON v.id = vp.verbindlichkeit
INNER JOIN
- artikel a ON a.id = pd.artikel
+ artikel a ON a.id = vp.artikel
INNER JOIN
- adresse adr ON pa.adresse = adr.id
+ adresse adr ON v.adresse = adr.id
LEFT JOIN
kontorahmen skart ON skart.id = a.kontorahmen
LEFT JOIN
kontorahmen skadr ON skadr.id = adr.kontorahmen
- WHERE pd.id =".$paketdistribution;
+ WHERE vp.id =".$verbindlichkeit_position;
$artikel = $this->app->DB->SelectRow($sql);
$einartikel = $artikel['id'];
$umsatzsteuer = $artikel['umsatzsteuer'];
- $kontorahmen = $artikel['kontorahmen'];
+ $kontorahmen = $artikel['kontorahmen'];
+ $preis = $artikel['preis'];
if(empty($umsatzsteuer) && is_numeric($artikel['steuersatz'])) {
$steuersatz = $artikel['steuersatz'];
@@ -639,9 +753,8 @@ class lieferantengutschrift {
if ($bruttoeingabe) {
$preis = $preis / (1+($steuersatz/100));
}
- $sql = "INSERT INTO lieferantengutschrift_position (lieferantengutschrift,paketdistribution, menge, preis, steuersatz, artikel, kontorahmen) VALUES ($id, $paketdistribution, $menge, $preis, $steuersatz, $einartikel, $kontorahmen)";
+ $sql = "INSERT INTO lieferantengutschrift_position (lieferantengutschrift,verbindlichkeit_position, menge, preis, steuersatz, artikel, kontorahmen) VALUES ($id, $verbindlichkeit_position, $menge, $preis, $steuersatz, $einartikel, $kontorahmen)";
$this->app->DB->Insert($sql);
-
}
break;
case 'positionen_entfernen':
@@ -734,7 +847,8 @@ class lieferantengutschrift {
v.beschreibung,
v.sachkonto,
v.internebemerkung,
- a.lieferantennummer,
+ v.verbindlichkeit,
+ a.lieferantennummer,
a.name AS adresse_name FROM lieferantengutschrift v LEFT JOIN adresse a ON a.id = v.adresse"." WHERE v.id=$id");
foreach ($result[0] as $key => $value) {
@@ -802,6 +916,13 @@ class lieferantengutschrift {
$this->app->Tpl->Set('FREIGABEEINKAUFHIDDEN','hidden'); // prevent manual setting
+ if (!empty($lieferantengutschrift_from_db['belegnr'])) {
+ $this->app->Tpl->Set('ADRESSESAVEDISABLED','disabled');
+ } else {
+ $this->app->YUI->AutoComplete("adresse", "lieferant");
+ $this->app->YUI->AutoComplete("verbindlichkeit", "verbindlichkeit",false,"&adresse=".$lieferantengutschrift_from_db['adresse']);
+ }
+
if (empty($lieferantengutschrift_from_db['adresse']) || $lieferantengutschrift_from_db['status'] == 'angelegt') {
$this->app->Tpl->Set('FREIGABEBUCHHALTUNGHIDDEN','hidden');
$this->app->Tpl->Set('FREIGABEBEZAHLTHIDDEN','hidden');
@@ -859,7 +980,8 @@ class lieferantengutschrift {
$icons = $this->app->DB->SelectArr($sql);
$this->app->Tpl->Add('STATUSICONS', $icons[0]['icons']);
- $this->app->YUI->AutoComplete("adresse", "lieferant");
+ $this->app->Tpl->Set('VERBINDLICHKEIT',$this->app->erp->ReplaceVerbindlichkeit(false,$lieferantengutschrift_from_db['verbindlichkeit'],false));
+
$this->app->YUI->AutoComplete("projekt", "projektname", 1);
$this->app->Tpl->Set('PROJEKT',$this->app->erp->ReplaceProjekt(false,$lieferantengutschrift_from_db['projekt'],false));
$this->app->YUI->AutoComplete("kostenstelle", "kostenstelle", 1);
@@ -887,8 +1009,14 @@ class lieferantengutschrift {
}
if (empty($lieferantengutschrift_from_db['freigabe'])) {
- $this->app->YUI->TableSearch('PAKETDISTRIBUTION', 'artikel_manuell', "show", "", "", basename(__FILE__), __CLASS__);
- }
+
+ if (empty($lieferantengutschrift_from_db['verbindlichkeit'])) {
+ $this->app->YUI->TableSearch('PAKETDISTRIBUTION', 'artikel_manuell', "show", "", "", basename(__FILE__), __CLASS__);
+ }
+ else {
+ $this->app->YUI->TableSearch('PAKETDISTRIBUTION', 'verbindlichkeit_positionen', "show", "", "", basename(__FILE__), __CLASS__);
+ }
+ }
// -- POSITIONEN
$this->app->YUI->AutoComplete("positionen_sachkonto", "sachkonto", 1);
@@ -1114,37 +1242,16 @@ class lieferantengutschrift {
} else {
return('lieferantengutschrift nicht freigebeben '.$this->lieferantengutschrift_get_belegnr($id));
}
- }
+ }
+
+ $sql = "UPDATE lieferantengutschrift SET freigabe = 1 WHERE id=".$id;
+ $this->app->DB->Update($sql);
- // Check wareneingang status
- $sql = "SELECT
- pa.id
- FROM lieferantengutschrift_position vp
- INNER JOIN paketdistribution pd ON pd.id = vp.paketdistribution
- INNER JOIN paketannahme pa ON pa.id = pd.paketannahme
- WHERE
- lieferantengutschrift='$id'
- AND
- pa.status = 'abgeschlossen'
- ";
-
- $check = $this->app->DB->SelectArr($sql);
-
- if (empty($check)) {
- if ($gotoedit) {
- $this->app->YUI->Message('warning','Waren-/Leistungsprüfung (Einkauf) nicht abgeschlossen');
- } else {
- return('Waren-/Leistungsprüfung (Einkauf) nicht abgeschlossen '.$this->lieferantengutschrift_get_belegnr($id));
- }
- } else {
- $sql = "UPDATE lieferantengutschrift SET freigabe = 1 WHERE id=".$id;
- $this->app->DB->Update($sql);
-
- if (!$text) {
- $text = "lieferantengutschrift freigegeben (Einkauf)";
- }
- $this->app->erp->BelegProtokoll("lieferantengutschrift",$id,$text);
+ if (!$text) {
+ $text = "lieferantengutschrift freigegeben (Einkauf)";
}
+ $this->app->erp->BelegProtokoll("lieferantengutschrift",$id,$text);
+
if ($gotoedit) {
$this->lieferantengutschrift_edit();
}