add_supp_trans and reinsert_supp_trans merged into write_supp_trans
[fa-stable.git] / purchasing / includes / db / supp_payment_db.inc
1 <?php
2 /**********************************************************************
3     Copyright (C) FrontAccounting, LLC.
4         Released under the terms of the GNU General Public License, GPL, 
5         as published by the Free Software Foundation, either version 3 
6         of the License, or (at your option) any later version.
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
10     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 function add_supp_payment($supplier_id, $date_, $bank_account,
13         $amount, $discount, $ref, $memo_, $rate=0, $charge=0)
14 {
15         global $Refs;
16
17         begin_transaction();
18
19         $supplier_currency = get_supplier_currency($supplier_id);
20     $bank_account_currency = get_bank_account_currency($bank_account);
21         $bank_gl_account = get_bank_gl_account($bank_account);
22
23         if ($rate == 0)
24         {
25                 $supp_amount = exchange_from_to($amount, $bank_account_currency, $supplier_currency, $date_);
26                 $supp_discount = exchange_from_to($discount, $bank_account_currency, $supplier_currency, $date_);
27                 $supp_charge = exchange_from_to($charge, $bank_account_currency, $supplier_currency, $date_);
28         }
29         else
30         {
31                 $supp_amount = round($amount / $rate, user_price_dec());
32                 $supp_discount = round($discount / $rate, user_price_dec());
33                 $supp_charge = round($charge / $rate, user_price_dec());
34         }
35         
36
37         // it's a supplier payment
38         $trans_type = ST_SUPPAYMENT;
39
40         /* Create a supp_trans entry for the supplier payment */
41         $payment_id = write_supp_trans($trans_type, 0, $supplier_id, $date_, $date_,
42                 $ref, "", -$supp_amount, 0, -$supp_discount, "", $rate);
43
44         // Now debit creditors account with payment + discount
45
46         $total = 0;
47     $supplier_accounts = get_supplier_accounts($supplier_id);
48         $total += add_gl_trans_supplier($trans_type, $payment_id, $date_, $supplier_accounts["payable_account"], 0, 0,
49                 $supp_amount + $supp_discount, $supplier_id, "", $rate);
50
51         // Now credit discount received account with discounts
52         if ($supp_discount != 0)
53         {
54                 $total += add_gl_trans_supplier($trans_type, $payment_id, $date_, $supplier_accounts["payment_discount_account"], 0, 0,
55                         -$supp_discount, $supplier_id, "", $rate);
56         }
57
58         if ($supp_charge != 0)
59         {
60                 $charge_act = get_company_pref('bank_charge_act');
61                 $total += add_gl_trans_supplier($trans_type, $payment_id, $date_, $charge_act, 0, 0,
62                         $supp_charge, $supplier_id, "", $rate);
63         }
64
65         if ($supp_amount != 0)
66         {
67                 $total += add_gl_trans_supplier($trans_type, $payment_id, $date_, $bank_gl_account, 0, 0,
68                         -($supp_amount + $supp_charge), $supplier_id, "", $rate);
69         }
70
71         /*Post a balance post if $total != 0 */
72         add_gl_balance($trans_type, $payment_id, $date_, -$total, PT_SUPPLIER, $supplier_id);   
73
74    /*now enter the bank_trans entry */
75         add_bank_trans($trans_type, $payment_id, $bank_account, $ref,
76                 $date_, -($amount + $supp_charge), PT_SUPPLIER,
77                 $supplier_id, $bank_account_currency,
78                 "Could not add the supplier payment bank transaction");
79
80         add_comments($trans_type, $payment_id, $date_, $memo_);
81
82         $Refs->save($trans_type, $payment_id, $ref);
83
84         commit_transaction();
85
86         return $payment_id;
87 }
88
89 //------------------------------------------------------------------------------------------------
90
91 function void_supp_payment($type, $type_no)
92 {
93         begin_transaction();
94
95         void_bank_trans($type, $type_no, true);
96         void_gl_trans($type, $type_no, true);
97         void_supp_allocations($type, $type_no);
98         void_supp_trans($type, $type_no);
99
100         commit_transaction();
101 }
102
103
104 ?>