Rechnungsmodul: Rechnungen mit Summe 0 EUR

Dieses Thema im Forum "Installation und Konfiguration" wurde erstellt von ramsys, 30. Jan. 2014.

  1. ramsys

    ramsys Member

    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. ramsys

    ramsys Member

    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'));
                }
     
  3. Till

    Till Administrator

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

    ramsys Member

    Okay, aber Null-Rechnungen sind ja auch durchaus üblich und zum Teil auch notwendig.
     
  5. Till

    Till Administrator

    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.
     
  6. ramsys

    ramsys Member

    Perfekt, danke! Ich werden das hier lokal schon mal so ändern :)
     
  7. ramsys

    ramsys Member

    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.
     
  8. Till

    Till Administrator

    Kann ich so auf Anhieb nicht sagen. Kommentier am Besten einfach mal den 0 eur summen check aus.
     
  9. ramsys

    ramsys Member

    Ich meinte auch eher den Code/Stelle, diese Rechnungen automatisch auf "bezahlt" zu setzen.
     
  10. Till

    Till Administrator

    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);
     
  11. ramsys

    ramsys Member

    Danke für die Aufnahme in den Bugtracker :)
     
  12. ramsys

    ramsys Member

    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,+29,@@
     
    $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';

     
  13. Till

    Till Administrator

    Danke für den Patch!
     
  14. ramsys

    ramsys Member

    Keine Ursache ;)

    Gerade beim Billing-Modul haben wir noch kleinere Bugs und Verbesserungsvorschläge gefunden. Wie können wir das effektiv zur Verfügung stellen?
     
  15. Till

    Till Administrator

    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.
     
  16. ramsys

    ramsys Member

    Kann man auf die Git-Version zugreifen? Das würde eventuell doppelten Aufwand vermeiden, wie z.B. hier: http://www.howtoforge.de/forum/39143-post3.html
     

Diese Seite empfehlen