1<?php
2require('include.php');
3
4/* get vars */
5$cheque_amount	= $_POST['cheque_amount'];
6$cheque_memo		= $_POST['cheque_memo'];
7$cheque_recieved	= $_POST['cheque_recieved'];
8$customer_id	= $_POST['customer_id'];
9$invoice_id		= $_POST['invoice_id'];
10$workorder_id	= $_POST['workorder_id'];
11
12
13/* validation */
14if(empty($cheque_amount)) {
15	force_page("billing", "new&error_msg=Please Fill in the check amount.&wo_id=$workorder_id&customer_id=$customer_id&invoice_id=$invoice_id&page_title=Billing");
16}
17
18if(empty($cheque_recieved)) {
19	force_page("billing", "new&error_msg=Please Fill in the Document Number.&wo_id=$workorder_id&customer_id=$customer_id&invoice_id=$invoice_id&page_title=Billing");
20}
21
22/* get invoice details */
23$q = "SELECT * FROM ".PRFX."TABLE_INVOICE WHERE INVOICE_ID=".$db->qstr($invoice_id);
24if(!$rs = $db->execute($q)) {
25	force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1');
26	exit;
27}
28
29$invoice_details = $rs->FetchRow();
30
31//Check to see if we are processing more then required
32if($invoice_details['BALANCE'] < $cheque_amount){
33		force_page('billing', 'new&wo_id='.$workorder_id.'&customer_id='.$customer_id.'	&invoice_id='.$invoice_id.'&error_msg= You can not bill more than the amount of the invoice.');
34			exit;
35	}
36
37/* check if this is a partial payment */
38if($invoice_details['INVOICE_AMOUNT'] > $cheque_amount){
39		if($invoice_details['BALANCE'] > 0 ) {
40			$balance = $invoice_details['BALANCE'] - $cheque_amount;
41		} else {
42			$balance = $invoice_details['INVOICE_AMOUNT'] - $cheque_amount;
43		}
44		$paid_amount = $cheque_amount + $invoice_details['PAID_AMOUNT'];
45                $balance = sprintf("%01.2f", $balance);
46
47		if($balance == 0 ) {
48			$flag  = 1;
49		} else {
50			$flag = 0;
51		}
52
53	/* insert Transaction */
54	$memo = "Partial Cheque Payment Made of $currency_sym$cheque_amount, Balance due: $currency_sym$balance, Cheque Number: $cheque_recieved, Cheque Memo: $cheque_memo";
55
56	$q = "INSERT INTO ".PRFX."TABLE_TRANSACTION SET
57		  DATE 			= ".$db->qstr(time()).",
58		  TYPE 			= '2',
59		  INVOICE_ID            = ".$db->qstr($invoice_id).",
60		  WORKORDER_ID          = ".$db->qstr($workorder_id).",
61		  CUSTOMER_ID           = ".$db->qstr($customer_id).",
62		  MEMO 			= ".$db->qstr($memo).",
63		  AMOUNT		= ".$db->qstr($cheque_amount);
64	if(!$rs = $db->execute($q)) {
65		force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1');
66		exit;
67	}
68
69	/* update the invoice */
70	 if($balance == 0 ) {
71			$q = "UPDATE ".PRFX."TABLE_INVOICE SET
72		  	PAID_DATE  	= ".$db->qstr(time()).",
73		  	INVOICE_PAID	= ".$db->qstr($flag).",
74		  	PAID_AMOUNT 	= ".$db->qstr($paid_amount).",
75		  	balance 		= ".$db->qstr($balance).",
76			INVOICE_PAID	='1' WHERE INVOICE_ID = ".$db->qstr($invoice_id);
77	} else {
78		$q = "UPDATE ".PRFX."TABLE_INVOICE SET
79		  	PAID_DATE  	= ".$db->qstr(time()).",
80		  	INVOICE_PAID	= ".$db->qstr($flag).",
81		  	PAID_AMOUNT 	= ".$db->qstr($paid_amount).",
82		  	balance 		= ".$db->qstr($balance)." WHERE INVOICE_ID = ".$db->qstr($invoice_id);
83	}
84
85	if(!$rs = $db->execute($q)) {
86		force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1');
87		exit;
88	}
89
90	/* update work order */
91	$q = "INSERT INTO ".PRFX."TABLE_WORK_ORDER_STATUS SET
92		  WORK_ORDER_ID				= ".$db->qstr($workorder_id).",
93		  WORK_ORDER_STATUS_DATE 		= ".$db->qstr(time()).",
94		  WORK_ORDER_STATUS_NOTES 		= ".$db->qstr($memo).",
95		  WORK_ORDER_STATUS_ENTER_BY		= ".$db->qstr($employee);
96
97	if(!$rs = $db->execute($q)) {
98		force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1');
99		exit;
100	}
101
102	if($balance == 0 ) {
103	$q = "UPDATE ".PRFX."TABLE_WORK_ORDER SET
104			WORK_ORDER_STATUS			= '6',
105			WORK_ORDER_CURRENT_STATUS 	= '8'
106			WHERE WORK_ORDER_ID 		=	".$db->qstr($workorder_id);
107		if(!$rs = $db->execute($q)) {
108			force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1');
109			exit;
110		}
111	}
112
113	force_page('invoice', "view&invoice_id=$invoice_id&customer_id=$customer_id");
114
115} else {
116
117	/* full payment made */
118	if($invoice_details['INVOICE_AMOUNT'] < $cheque_amount) {
119		force_page('billing', 'new&wo_id='.$workorder_id.'&customer_id='.$customer_id.'	&invoice_id='.$invoice_id.'&error_msg=You can not bill more than the amout of the invoice.');
120			exit;
121		}
122	if($invoice_details['INVOICE_AMOUNT'] == $cheque_amount){
123		/* insert Transaction */
124		$memo = "Full Check Payment Made of $currency_sym$cheque_amount, Check Number: $cheque_recieved, Check Memo: $cheque_memo";
125
126		$q = "INSERT INTO ".PRFX."TABLE_TRANSACTION SET
127			DATE 			= ".$db->qstr(time()).",
128			TYPE 			= '2',
129			INVOICE_ID              = ".$db->qstr($invoice_id).",
130			WORKORDER_ID            = ".$db->qstr($workorder_id).",
131			CUSTOMER_ID             = ".$db->qstr($customer_id).",
132			MEMO 			= ".$db->qstr($memo).",
133			AMOUNT			= ".$db->qstr($cheque_amount);
134		if(!$rs = $db->execute($q)) {
135			force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1');
136			exit;
137		}
138
139		/* update the invoice */
140		$q = "UPDATE ".PRFX."TABLE_INVOICE SET
141			PAID_DATE  		= ".$db->qstr(time()).",
142			PAID_AMOUNT 		= ".$db->qstr($cheque_amount).",
143			INVOICE_PAID		= '1',
144			balance 		= ".$db->qstr(0.00)."
145			WHERE INVOICE_ID 	= ".$db->qstr($invoice_id);
146
147		if(!$rs = $db->execute($q)) {
148			force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1');
149			exit;
150		}
151
152		/* update work order */
153		$q = "INSERT INTO ".PRFX."TABLE_WORK_ORDER_STATUS SET
154			WORK_ORDER_ID			= ".$db->qstr($workorder_id).",
155			WORK_ORDER_STATUS_DATE 		= ".$db->qstr(time()).",
156			WORK_ORDER_STATUS_NOTES 	= ".$db->qstr($memo).",
157			WORK_ORDER_STATUS_ENTER_BY	= ".$db->qstr($_SESSION['login_id']);
158
159		if(!$rs = $db->execute($q)) {
160			force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1');
161			exit;
162		}
163
164		$q = "UPDATE ".PRFX."TABLE_WORK_ORDER SET
165			WORK_ORDER_STATUS		= '6',
166			WORK_ORDER_CURRENT_STATUS 	= '8'
167			WHERE WORK_ORDER_ID 		=".$db->qstr($workorder_id);
168		if(!$rs = $db->execute($q)) {
169			force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1');
170			exit;
171		}
172
173		force_page('invoice', "view&invoice_id=$invoice_id&customer_id=$customer_id");
174
175	}
176}
177?>