Rechnungsmodul: Rechnungen mit Summe 0 EUR

#1
Ich habe hier einige Rechnungen mit mehreren Positionen, wobei die Endsumme der Rechnung dann aber 0,00 EUR beträgt. Diese Rechnungen lassen sich weder aus den wiederkehrenden Artikeln noch manuell abschließen.

Welche Möglichkeit habe ich, diese Rechnungen zu erstellen?
 
#2
Wenn ich in der Datei interface/web/billing/invoice_edit.php die Prüfung deaktiviere, hat das eventuell irgendwelche negativen Seiteneffekte?

Zeile 244 bis 250:
PHP:
			// Calculate the invoice amount
			$tmp = $app->db->queryOneRecord("SELECT sum(quantity*price+(quantity*price*(vat/100))) as amount FROM invoice_item WHERE invoice_id = ".$this->id);
			$invoice_amount = $tmp['amount'];
			// Don't finalize if invoice amount == 0
			if($invoice_amount == 0){
				$app->error($app->lng('error_total_equals_zero_txt'));
			}
 

Till

Administrator
#3
Nein, das hat keine weiteren nebeneffekte. den Check gibt es nur damit niemand unbeabsichtigt Rechnungen abschließt bevor Einträge eingefügt worden sind.
 

Till

Administrator
#5
Also bei mir nicht und bei den anderen Kunden den Billingmoduls scheinbar auch nicht, denn bislang hatte niemand das Problem. Ich werde mal im Bugtracker vermerken dass der check umgestellt wird auf > 0 Items in der Rechnung.
 
#7
Ich werde mal im Bugtracker vermerken dass der check umgestellt wird auf > 0 Items in der Rechnung.
Vielleicht kann man das noch ergänzen: Eine Null-Rechnung wird gleich als bezahlt markiert. Tabelle invoice --> status_paid = y.

Hast Du auf die Schnelle eine Antwort, wo und wie diese Änderung im Code erfolgen müsste? Dann würde ich das schon vorab hier entsprechend anpassen.
 

Till

Administrator
#10
Am Besten da wo auch der 0 Eur check steht. z.B. mit

$app->db->query("UPDATE invoice SET status_paid = 'y' WHERE invoice_id = ".$this->id);
 
#12
Wir haben das jetzt erstmal so gelöst. Hier der Diff:

PHP:
diff --git a/interface/web/billing/invoice_edit.php b/interface/web/billing/invoice_edit.php
index 53fad0c..60d12ff 100644
--- a/interface/web/billing/invoice_edit.php
+++ b/interface/web/billing/invoice_edit.php
@@ -241,12 +241,18 @@
 		
 		if(isset($_GET['action']) && $_GET['action'] == 'finalize_invoice') {
 		
+			// Don't finalize if invoice item == 0
+			$invoice_item = $app->db->queryOneRecord("SELECT * FROM invoice_item WHERE invoice_id = ".$this->id);
+			if($invoice_item == false){
+				$app->error($app->lng('error_total_equals_zero_txt'));
+			}
+			
 			// Calculate the invoice amount
 			$tmp = $app->db->queryOneRecord("SELECT sum(quantity*price+(quantity*price*(vat/100))) as amount FROM invoice_item WHERE invoice_id = ".$this->id);
 			$invoice_amount = $tmp['amount'];
-			// Don't finalize if invoice amount == 0
+			// Update the status of the invoice
 			if($invoice_amount == 0){
-				$app->error($app->lng('error_total_equals_zero_txt'));
+				$app->db->query("UPDATE invoice SET status_paid = 'y' WHERE invoice_id = ".$this->id);
 			}
 			
 			// Get the company record
diff --git a/interface/web/billing/lib/lang/de.lng b/interface/web/billing/lib/lang/de.lng
index 34fc0a1..e327d9c 100644
--- a/interface/web/billing/lib/lang/de.lng
+++ b/interface/web/billing/lib/lang/de.lng
@@ -29,7 +29,7 @@
 $wb['Email templates'] = 'Email Vorlagen';
 $wb['Global settings'] = 'Globale Einstellungen';
 $wb['setup_fee_txt'] = 'Einmalige Einrichtungsgebühr';
-$wb['error_total_equals_zero_txt'] = 'Der Rechnungsbetrag ist 0. Sie können die Rechnung nicht abschliessen.';
+$wb['error_total_equals_zero_txt'] = 'Die Rechnung hat keine Positionen. Sie können die Rechnung nicht abschliessen.';
 $wb['proforma_invoice_txt'] = 'Proforma-Rechnung';
 $wb['invoice_draft_txt'] = 'Entwurf';
 $wb['refund_txt'] = 'Gutschrift';
 

Till

Administrator
#15
Am besten schickst Du sie mir als patch per email. Ich kann aber nicht sagen ob wie die in allen Fällen einpflegen können, da sich bei uns im dev zeig schon sehr viel für das nächste Release geändert hat, wie z.B. SEPA Lastschrift Unterstützung.
 

Werbung