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_journal($type, $trans_no, $amount, $tran_date, $currency, $reference, $source_ref='', $rate=1,
13 $event_date='', $doc_date='')
15 $sql = "INSERT INTO ".TB_PREF."journal(
16 `type`,`trans_no`, `amount`, `currency`, `rate`, `reference`, `source_ref`, `tran_date`,`event_date`,`doc_date`)
19 .db_escape($trans_no).","
20 .db_escape($amount).","
21 .db_escape($currency).","
23 .db_escape($reference).","
24 .db_escape($source_ref).","
25 ."'".date2sql($tran_date)."','"
26 . ($event_date === '' ? '0000-00-00' : date2sql($event_date))."','"
27 . ($doc_date === '' ? '0000-00-00' : date2sql($doc_date))."')";
29 return db_query($sql, 'cannot add journal entry');
32 function update_journal($type, $trans_no, $amount, $tran_date, $currency, $reference, $source_ref='', $rate=1,
33 $event_date='', $doc_date='')
35 $sql = "UPDATE ".TB_PREF."journal SET "
36 ."`amount`=".db_escape($amount).","
37 ."`currency`=".db_escape($currency).","
38 ."`rate`=".db_escape($rate).","
39 ."`reference`=".db_escape($reference).","
40 ."`source_ref`=".db_escape($source_ref).","
41 ."`tran_date`='".date2sql($tran_date)."',"
42 ."`event_date`='".($event_date === '' ? '0000-00-00' : date2sql($event_date))."',"
43 ."`doc_date`='".($doc_date === '' ? '0000-00-00' : date2sql($doc_date))."'
44 WHERE `type`=".db_escape($type)." AND " ."`trans_no`=".db_escape($trans_no);
46 return db_query($sql, 'cannot update journal entry');
49 function delete_journal($type, $trans_no)
51 $sql = "DELETE FROM ".TB_PREF."journal
52 WHERE `type`=".db_escape($type)." AND " ."`trans_no`=".db_escape($trans_no);
54 return db_query($sql, 'cannot delete journal entry');
57 function get_journal($type, $trans_no)
59 $sql = "SELECT gl.*, bt.reconciled reconcile_date FROM ".TB_PREF."journal gl
60 LEFT JOIN ".TB_PREF."bank_trans bt ON gl.`type`=bt.`type` AND gl.trans_no=bt.trans_no
61 WHERE gl.`type`=".db_escape($type)." AND " ."gl.`trans_no`=".db_escape($trans_no);
63 $myrow= db_query($sql, 'cannot retrieve journal entry');
64 return db_fetch($myrow);
68 // Write headers in debtor_trans for allocation purposes.
69 // Amount in customer currency
71 function write_cust_journal($trans_type, $trans_no, $branch_id, $date, $ref, $amount, $rate)
73 // we have to select any branch_id for given AR_act - in fact w
74 $sql = "INSERT INTO ".TB_PREF."debtor_trans (trans_no, type, debtor_no, branch_code, tran_date, reference, ov_amount, rate)
76 .db_escape($trans_no).", ".db_escape($trans_type).", debtor_no,"
77 .db_escape($branch_id).",'".date2sql($date)."', ".db_escape($ref).","
78 .db_escape($amount).", ".db_escape($rate)."
79 FROM ".TB_PREF."cust_branch WHERE branch_code=".db_escape($branch_id);
81 return db_query($sql, 'cannot write cust_journal');
85 // Write headers in supp_trans for allocation purposes.
86 // Amount in supplier currency
88 function write_supp_journal($trans_type, $trans_no, $supp_id, $date, $ref, $amount, $rate, $src_ref)
90 $sql = "INSERT INTO ".TB_PREF."supp_trans (trans_no, type, supplier_id, tran_date, reference, ov_amount, rate, supp_reference)
91 VALUES (".db_escape($trans_no).", ".db_escape($trans_type).", ".db_escape($supp_id).", '".date2sql($date)."',"
92 .db_escape($ref).", ".db_escape($amount).",".db_escape($rate).",".db_escape($src_ref).")";
94 return db_query($sql, 'cannot write supp_journal');
97 //--------------------------------------------------------------------------------
98 // Write/update journal entries.
100 function write_journal_entries(&$cart)
104 $date_ = $cart->tran_date;
105 $ref = $cart->reference;
106 $memo_ = $cart->memo_;
107 $trans_type = $cart->trans_type;
108 $new = $cart->order_id == 0;
114 $msg = void_transaction($trans_type, $cart->order_id, Today(), _("Document reentered."));
122 $trans_id = $cart->order_id = get_next_trans_no($trans_type);
123 $total = $cart->gl_items_total_debit();
127 add_journal($trans_type, $trans_id, $total, $date_ , $cart->currency, $ref,
128 $cart->source_ref, $cart->rate, $cart->event_date, $cart->doc_date);
130 if ($cart->reconcile_date)
131 update_reconcile_date($trans_type, $cart->order_id, $cart->reconcile_date);
133 $Refs->save($trans_type, $trans_id, $ref);
135 add_comments($trans_type, $trans_id, $date_, $memo_);
137 update_comments($trans_type, $trans_id, null, $memo_);
140 add_audit_trail($trans_type, $trans_id, $date_);
142 commit_transaction();
147 //----------------------------------------------------------------------------------------
149 function void_journal_trans($type, $type_no, $use_transaction=true)
151 if ($use_transaction)
154 $sql = "UPDATE ".TB_PREF."journal SET amount=0
155 WHERE type=".db_escape($type)." AND trans_no=".db_escape($type_no);
157 db_query($sql, "could not void journal transaction for type=$type and trans_no=$type_no");
159 void_bank_trans($type, $type_no, true);
161 if ($use_transaction)
162 commit_transaction();