Contact CRUD class.
[fa-stable.git] / sales / includes / db / sales_invoice_db.inc
index 23bd798a2c1000c47093b7df12fe764181a61b35..bd191780dbbaef403f4e1c0f78fee16b7175811f 100644 (file)
@@ -86,7 +86,7 @@ function write_sales_invoice(&$invoice)
                void_trans_tax_details(ST_SALESINVOICE, $invoice_no);
        }
        $total = 0;
-       foreach ($invoice->line_items as $invoice_line) {
+       foreach ($invoice->line_items as $line_no => $invoice_line) {
 
                $line_taxfree_price = get_tax_free_price_for_item($invoice_line->stock_id,
                        $invoice_line->price, 0, $invoice->tax_included,
@@ -207,11 +207,22 @@ function void_sales_invoice($type, $type_no)
        $deliveries = get_parent_trans($type, $type_no);
 
        if ($deliveries !== 0) {
-               $srcdetails = get_customer_trans_details(get_parent_type($type), $deliveries);
-               while ($row = db_fetch($items_result)) {
-                       $src_line = db_fetch($srcdetails);
-                       update_parent_line($type, $src_line['id'], -$row['quantity']);
-               }
+               if (count($deliveries) == 1 && get_reference(ST_CUSTDELIVERY, $deliveries[0]) == "auto")
+               {
+                       void_sales_delivery(ST_CUSTDELIVERY, $deliveries[0], false);
+                       $date_ = Today();
+                       add_audit_trail(ST_CUSTDELIVERY, $deliveries[0], $date_, _("Voided."));
+                       add_voided_entry(ST_CUSTDELIVERY, $deliveries[0], $date_, "");
+               }       
+               else    
+               {
+                       
+                       $srcdetails = get_customer_trans_details(get_parent_type($type), $deliveries);
+                       while ($row = db_fetch($items_result)) {
+                               $src_line = db_fetch($srcdetails);
+                               update_parent_line($type, $src_line['id'], -$row['quantity']);
+                       }
+               }       
        }
        // clear details after they've been reversed in the sales order
        void_customer_trans_details($type, $type_no);