Merged last changes from stable.
[fa-stable.git] / purchasing / includes / db / supp_trans_db.inc
index d5112d5322debbd2b598ad295cd71b88cdaf02b5..6af755e659c6c466e0e72b8f4ff22e977f8c7c79 100644 (file)
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
 //-------------------------------------------------------------------------------------------------------------
-
-function add_supp_trans($type, $supplier_id, $date_, $due_date, $reference, $supp_reference,
-       $amount, $amount_tax, $discount, $err_msg="", $rate=0)
+//
+//     FIXME - this should be revised for transaction update case.
+//
+function write_supp_trans($type, $trans_no, $supplier_id, $date_, $due_date, $reference, $supp_reference,
+       $amount, $amount_tax, $discount, $err_msg="", $rate=0, $included=0, $tax_algorithm = null)
 {
+       $new = $trans_no==0;
        $date = date2sql($date_);
        if ($due_date == "")
                $due_date = "0000-00-00";
        else
                $due_date = date2sql($due_date);
 
-       $trans_no = get_next_trans_no($type);
+       if ($new)
+               $trans_no = get_next_trans_no($type);
 
        $curr = get_supplier_currency($supplier_id);
        
@@ -29,11 +33,12 @@ function add_supp_trans($type, $supplier_id, $date_, $due_date, $reference, $sup
 
 
        $sql = "INSERT INTO ".TB_PREF."supp_trans (trans_no, type, supplier_id, tran_date, due_date,
-               reference, supp_reference, ov_amount, ov_gst, rate, ov_discount) ";
+               reference, supp_reference, ov_amount, ov_gst, rate, ov_discount, tax_included, tax_algorithm) ";
        $sql .= "VALUES (".db_escape($trans_no).", ".db_escape($type)
        .", ".db_escape($supplier_id).", '$date', '$due_date',
                ".db_escape($reference).", ".db_escape($supp_reference).", ".db_escape($amount)
-               .", ".db_escape($amount_tax).", ".db_escape($rate).", ".db_escape($discount).")";
+               .", ".db_escape($amount_tax).", ".db_escape($rate).", ".db_escape($discount).", ".db_escape($included).
+               ", ".db_escape($tax_algorithm, true).")";
 
        if ($err_msg == "")
                $err_msg = "Cannot insert a supplier transaction record";
@@ -46,57 +51,22 @@ function add_supp_trans($type, $supplier_id, $date_, $due_date, $reference, $sup
 
 //-------------------------------------------------------------------------------------------------------------
 
-function reinsert_supp_trans($type, $trans_no, $supplier_id, $date_, $due_date, $reference, $supp_reference,
-       $amount, $amount_tax, $discount, $err_msg="", $rate=0)
-{
-       if ($trans_no == '')
-               display_db_error('Invalid call to function reinsert_supp_trans');
-               
-       $date = date2sql($date_);
-       if ($due_date == "")
-               $due_date = "0000-00-00";
-       else
-               $due_date = date2sql($due_date);
-
-       $curr = get_supplier_currency($supplier_id);
-       
-       if ($rate == 0)
-               $rate = get_exchange_rate_from_home_currency($curr, $date_);
-
-
-       $sql = "INSERT INTO ".TB_PREF."supp_trans (trans_no, type, supplier_id, tran_date, due_date,
-               reference, supp_reference, ov_amount, ov_gst, rate, ov_discount) ";
-       $sql .= "VALUES (".db_escape($trans_no).", ".db_escape($type)
-       .", ".db_escape($supplier_id).", '$date', '$due_date',
-               ".db_escape($reference).", ".db_escape($supp_reference).", ".db_escape($amount)
-               .", ".db_escape($amount_tax).", ".db_escape($rate).", ".db_escape($discount).")";
-
-       if ($err_msg == "")
-               $err_msg = "Cannot insert a supplier transaction record";
-
-       db_query($sql, $err_msg);
-       add_audit_trail($type, $trans_no, $date_);
-
-       return $trans_no;
-}
-//-------------------------------------------------------------------------------------------------------------
-
 function get_supp_trans($trans_no, $trans_type=-1)
 {
        $sql = "SELECT ".TB_PREF."supp_trans.*, (".TB_PREF."supp_trans.ov_amount+".TB_PREF."supp_trans.ov_gst+".TB_PREF."supp_trans.ov_discount) AS Total,
-               ".TB_PREF."suppliers.supp_name AS supplier_name, ".TB_PREF."suppliers.curr_code AS SupplierCurrCode ";
+               ".TB_PREF."suppliers.supp_name AS supplier_name, ".TB_PREF."suppliers.curr_code AS curr_code ";
 
-       if ($trans_type == ST_SUPPAYMENT)
+       if ($trans_type == ST_SUPPAYMENT || $trans_type == ST_BANKPAYMENT)
        {
                // it's a payment so also get the bank account
                $sql .= ", ".TB_PREF."bank_accounts.bank_name, ".TB_PREF."bank_accounts.bank_account_name, ".TB_PREF."bank_accounts.bank_curr_code,
-                       ".TB_PREF."bank_accounts.account_type AS BankTransType, ".TB_PREF."bank_trans.amount AS BankAmount,
+                       ".TB_PREF."bank_accounts.account_type AS BankTransType, ".TB_PREF."bank_trans.amount AS bank_amount,
                        ".TB_PREF."bank_trans.ref ";
        }
 
        $sql .= " FROM ".TB_PREF."supp_trans, ".TB_PREF."suppliers ";
 
-       if ($trans_type == ST_SUPPAYMENT)
+       if ($trans_type == ST_SUPPAYMENT || $trans_type == ST_BANKPAYMENT)
        {
                // it's a payment so also get the bank account
                $sql .= ", ".TB_PREF."bank_trans, ".TB_PREF."bank_accounts";
@@ -108,7 +78,7 @@ function get_supp_trans($trans_no, $trans_type=-1)
        if ($trans_type > 0)
                $sql .= " AND ".TB_PREF."supp_trans.type=".db_escape($trans_type);
 
-       if ($trans_type == ST_SUPPAYMENT)
+       if ($trans_type == ST_SUPPAYMENT || $trans_type == ST_BANKPAYMENT)
        {
                // it's a payment so also get the bank account
                $sql .= " AND ".TB_PREF."bank_trans.trans_no =".db_escape($trans_no)."
@@ -184,7 +154,7 @@ function post_void_supp_trans($type, $type_no)
                return true;
        }
 
-       if ($type == SUPPRECEIVE)
+       if ($type == ST_SUPPRECEIVE)
        {
                return void_grn($type_no);
        }
@@ -194,10 +164,10 @@ function post_void_supp_trans($type, $type_no)
 
 //----------------------------------------------------------------------------------------
 
-function get_sql_for_supplier_inquiry()
+function get_sql_for_supplier_inquiry($filter, $after_date, $to_date, $supplier_id=ALL_TEXT)
 {
-    $date_after = date2sql($_POST['TransAfterDate']);
-    $date_to = date2sql($_POST['TransToDate']);
+    $date_after = date2sql($after_date);
+    $date_to = date2sql($to_date);
 
     $sql = "SELECT trans.type, 
                trans.trans_no,
@@ -210,7 +180,7 @@ function get_sql_for_supplier_inquiry()
        (trans.ov_amount + trans.ov_gst  + trans.ov_discount) AS TotalAmount, 
                trans.alloc AS Allocated,
                ((trans.type = ".ST_SUPPINVOICE." OR trans.type = ".ST_SUPPCREDIT.") AND trans.due_date < '" . date2sql(Today()) . "') AS OverDue,
-       (ABS(trans.ov_amount + trans.ov_gst  + trans.ov_discount - trans.alloc) <= 0.005) AS Settled
+       (ABS(trans.ov_amount + trans.ov_gst  + trans.ov_discount) - trans.alloc <= ".FLOAT_COMP_DELTA.") AS Settled
        FROM ".TB_PREF."supp_trans as trans, ".TB_PREF."suppliers as supplier
        WHERE supplier.supplier_id = trans.supplier_id
        AND trans.tran_date >= '$date_after'
@@ -221,7 +191,7 @@ function get_sql_for_supplier_inquiry()
                trans.id as trans_no,
                trans.reference, 
                supplier.supp_name, 
-               '' as supp_reference,
+               po.requisition_no AS supp_reference,
        delivery_date as tran_date, 
                '' as due_date,
                supplier.curr_code, 
@@ -229,43 +199,44 @@ function get_sql_for_supplier_inquiry()
                '' AS Allocated,
                0 as OverDue,
        1 as Settled
-       FROM ".TB_PREF."grn_batch as trans, ".TB_PREF."suppliers as supplier
+       FROM ".TB_PREF."grn_batch as trans, ".TB_PREF."suppliers as supplier, ".TB_PREF."purch_orders as po
        WHERE supplier.supplier_id = trans.supplier_id
+       AND trans.purch_order_no = po.order_no
        AND trans.delivery_date >= '$date_after'
        AND trans.delivery_date <= '$date_to'";
 
-       if ($_POST['supplier_id'] != ALL_TEXT) {
-               $sql .= " AND trans.supplier_id = ".db_escape($_POST['supplier_id']);
-               $sql2 .= " AND trans.supplier_id = ".db_escape($_POST['supplier_id']);
+       if ($supplier_id != ALL_TEXT) {
+               $sql .= " AND trans.supplier_id = ".db_escape($supplier_id);
+               $sql2 .= " AND trans.supplier_id = ".db_escape($supplier_id);
        }
-       if (($_POST['filterType'] == '6')) 
+       if (($filter == '6')) 
        {
                        $sql = $sql2;
        } 
-       elseif (!isset($_POST['filterType']) || $_POST['filterType'] == ALL_TEXT || $_POST['filterType'] == '6') {
+       elseif (!isset($filter) || $filter == ALL_TEXT || $filter == '6') {
                $sql = "SELECT * FROM (($sql) UNION ($sql2)) as tr";
        }
 
-       if (isset($_POST['filterType']) && $_POST['filterType'] != ALL_TEXT)
+       if (isset($filter) && $filter != ALL_TEXT)
        {
-               if (($_POST['filterType'] == '1')) 
+               if (($filter == '1')) 
                {
                        $sql .= " AND (trans.type = ".ST_SUPPINVOICE." OR trans.type = ".ST_BANKDEPOSIT.")";
                } 
-               elseif (($_POST['filterType'] == '2')) 
+               elseif (($filter == '2')) 
                {
                        $sql .= " AND trans.type = ".ST_SUPPINVOICE." ";
                } 
-               elseif ($_POST['filterType'] == '3') 
+               elseif ($filter == '3') 
                {
                        $sql .= " AND (trans.type = ".ST_SUPPAYMENT." OR trans.type = ".ST_BANKPAYMENT.") ";
                } 
-               elseif (($_POST['filterType'] == '4') || ($_POST['filterType'] == '5')) 
+               elseif (($filter == '4') || ($filter == '5')) 
                {
                        $sql .= " AND trans.type = ".ST_SUPPCREDIT."  ";
                }
 
-               if (($_POST['filterType'] == '2') || ($_POST['filterType'] == '5')) 
+               if (($filter == '2') || ($filter == '5')) 
                {
                        $today =  date2sql(Today());
                        $sql .= " AND trans.due_date < '$today' ";