[0005679] Supplier Invoices: error when second invoice to GRN was entered, fixed.
[fa-stable.git] / purchasing / includes / db / invoice_db.inc
index 04909404a5ec6c6c5df946c8c5eab37dd5a28402..c0262a16066af20f622bb317652739a76473089b 100644 (file)
@@ -124,7 +124,6 @@ function get_diff_in_home_currency($supplier, $old_date, $date, $amount1, $amoun
        return $diff;
 }
 //----------------------------------------------------------------------------------------
-
 function add_supp_invoice(&$supp_trans)
 {
        global $Refs;
@@ -166,7 +165,6 @@ function add_supp_invoice(&$supp_trans)
            foreach ($taxes as $n => $taxitem)
                        $item_added_tax += isset($taxitem['Override']) ? $taxitem['Override'] : round2($taxitem['Value'], user_price_dec());
        }
-
        if ($trans_type == ST_SUPPCREDIT)
        {
                // let's negate everything because it's a credit note
@@ -374,10 +372,10 @@ function add_supp_invoice(&$supp_trans)
 
        $Refs->save($trans_type, $invoice_id, $supp_trans->reference);
 
-       if (count($supp_trans->src_docs) == 1)
+       if ($trans_type==ST_SUPPCREDIT && count($supp_trans->src_docs) == 1) // for credit issued to single invoice autoallocate amount
        {
                $invoice_no = key($supp_trans->src_docs);
-               $invoice_alloc_balance = get_supp_trans_allocation_balance(ST_SUPPINVOICE, $supp_trans->src_docs);
+               $invoice_alloc_balance = get_supp_trans_allocation_balance(ST_SUPPINVOICE, $invoice_no);
                if ($invoice_alloc_balance > 0) 
                {       //the invoice is not already fully allocated 
 
@@ -394,7 +392,7 @@ function add_supp_invoice(&$supp_trans)
                                update_supp_trans_allocation(ST_SUPPINVOICE, $invoice_no, $supp_trans->supplier_id);
                                update_supp_trans_allocation(ST_SUPPCREDIT, $invoice_id, $supp_trans->supplier_id);
 
-                               exchange_variation(ST_SUPPCREDIT, $invoice_id, ST_SUPPINVOICE, $supp_trans->src_docs, $date_,
+                               exchange_variation(ST_SUPPCREDIT, $invoice_id, ST_SUPPINVOICE, $invoice_no, $date_,
                                        $allocate_amount, PT_SUPPLIER);
                        }
                }
@@ -497,7 +495,7 @@ function read_supp_invoice($trans_no, $trans_type, &$supp_trans)
                                        $details_row["description"], 
                                        $details_row['qty_recd'],
                                        $details_row['quantity_inv'],
-                                       $details_row["quantity"], 0, $details_row["FullUnitPrice"],
+                                       ($trans_type == ST_SUPPCREDIT ? -1 : 1) * $details_row["quantity"], 0, $details_row["FullUnitPrice"], // SUPPCREDIT quantities are stored negative in database
                                        0, 0);
                }
                else