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?>