function alloc($_POST, $err = "") { extract($_POST); #if quick ... redirect here if (isset($quickpay)) { $date = "{$date_year}-{$date_month}-{$date_day}"; header("Location: bank-pay-supp-quick.php?supid={$supid}&amt={$amt}&cheqnum={$cheqnum}&reference={$reference}&descript={$descript}&bankid={$bankid}&tdate={$date}&pur=&inv=&process_type={$process_type}"); exit; } if (isset($midupdate)) { $navigation = "\n\t\t\t<script>\n\t\t\t\tgotoName('midupdate');\n\t\t\t</script>"; } if (isset($botupdate)) { $navigation = "\n\t\t\t<script>\n\t\t\t\tgotoName('botupdate');\n\t\t\t</script>"; } #######set all missing vars ... $out = 0; $doset = TRUE; $settext = "Do not use this settlement discount function if the supplier is going to issue a tax credit note. If the supplier tax invoice contains the percentage and terms of settlement or any additional post transactional discount, then the supplier does not have to issue a tax credit note and you can use this function."; if (!isset($all)) { $all = 2; } if (!isset($bankid)) { $bankid = ""; } if (!isset($descript)) { $descript = ""; } if (!isset($reference)) { $reference = ""; } if (!isset($cheqnum)) { $cheqnum = ""; } if (!isset($paidamt) or !is_array($paidamt)) { $paidamt = array(0); } $amt = sprint(array_sum($paidamt)); if (!isset($stock_setamt)) { $stock_setamt = array(0); } if (!isset($setamt)) { $setamt = 0; } if (!isset($setvat)) { $setvat = ""; } if (!isset($setvatcode)) { $setvatcode = ""; } if (!isset($overpay)) { $overpay = 0; } if (!isset($process_type)) { $process_type = getCSetting("SUPP_PROCESS_TYPE"); } if (!isset($process_type)) { $process_type = ""; } if (!isset($supid) or strlen($supid) < 1) { return sel_sup(); } $amt = sprint($amt + $overpay); $setamt = sprint($setamt); if (!isset($date_day)) { #get the last used one ... $date = getCSetting("SUPP_PAY_DATE"); if (isset($date) and strlen($date) > 0) { $date_arr = explode("-", $date); $date_day = $date_arr[2]; $date_month = $date_arr[1]; $date_year = $date_arr[0]; } else { $date_year = date("Y"); $date_month = date("m"); $date_day = date("d"); } } if (!isset($date_day) or strlen($date_day) < 1 or $date_day > 31 or $date_day < 1) { $date_day = date("d"); } if (!isset($date_month) or strlen($date_month) < 1 or $date_month > 12 or $date_month < 1) { $date_month = date("m"); } if (!isset($date_year) or strlen($date_year) < 1 or $date_year < 1980 or $date_year > 2020) { $date_year = date("Y"); } //print "$date_year-$date_month-$date_day"; ####### validate input require_lib("validate"); $v = new validate(); $v->isOk($bankid, "num", 0, 30, "Invalid Bank Account."); $v->isOk($all, "num", 1, 1, "Invalid allocation."); $v->isOk($date_day, "num", 1, 2, "Invalid Date day."); $v->isOk($date_month, "num", 1, 2, "Invalid Date month."); $v->isOk($date_year, "num", 1, 4, "Invalid Date Year."); if (strlen($date_year) != 4) { $v->isOk($bankname, "num", 1, 1, "Invalid Date year."); } $v->isOk($descript, "string", 0, 255, "Invalid Description."); $v->isOk($reference, "string", 0, 50, "Invalid Reference Name/Number."); $v->isOk($cheqnum, "num", 0, 30, "Invalid Cheque number."); $v->isOk($amt, "float", 1, 10, "Invalid amount."); $v->isOk($setamt, "float", 0, 40, "Invalid Settlement Discount Amount."); $v->isOk($setvat, "string", 0, 10, "Invalid Settlement VAT Option."); $v->isOk($setvatcode, "string", 0, 40, "Invalid Settlement VAT code"); $v->isOk($supid, "num", 1, 10, "Invalid supplier number."); $date = mkdate($date_year, $date_month, $date_day); if (!checkdate($date_month, $date_day, $date_year)) { $v->isOk($date, "num", 1, 1, "Invalid date."); } # display errors, if any if ($v->isError()) { $confirm = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $confirm .= "<li class='err'>" . $e["msg"] . "</li>"; } return $confirm . alloc($_POST, $confirm . "<br>"); } db_connect(); #check if this supplier is blocked ... $sql = "SELECT blocked FROM suppliers WHERE supid = '{$supid}'"; $run_sql = db_exec($sql) or errDie("Unable to get supplier information."); if (pg_numrows($run_sql) < 1) { return "<li class='err'>Supplier information not found.</li>"; } else { $res = pg_fetch_array($run_sql); if ($res['blocked'] == "yes") { return "<li class='err'>Supplier has been blocked. Please unblock supplier before continuing. <a href='../supp-view.php'>View Suppliers.</a></li>"; } } ####### Get supplier details $sql = "SELECT supid,supno,supname,setdisc,setdays,balance FROM suppliers WHERE supid = '{$supid}' AND div = '" . USER_DIV . "'"; $supRslt = db_exec($sql); $sup = pg_fetch_array($supRslt); ####### Get Bank Dropdown $sql = "SELECT * FROM bankacct WHERE btype != 'int' AND div = '" . USER_DIV . "' ORDER BY accname,bankname"; $banks = db_exec($sql); $numrows = pg_numrows($banks); if (empty($numrows)) { return "<li class='err'> There are no accounts held at the selected Bank.</li>\n\t\t<p><input type='button' onClick='JavaScript:history.back();' value='« Correct Selection'>"; } $bank_drop = "<select name='bankid'>"; while ($acc = pg_fetch_array($banks)) { if ($bankid == $acc['bankid']) { $bank_drop .= "<option value='{$acc['bankid']}' selected>{$acc['accname']} - {$acc['bankname']} ({$acc['acctype']})</option>"; } else { $bank_drop .= "<option value='{$acc['bankid']}'>{$acc['accname']} - {$acc['bankname']} ({$acc['acctype']})</option>"; } } $bank_drop .= "</select>"; ####### Get vat codes for dropdown $get_vatc = "SELECT * FROM vatcodes ORDER BY code"; $run_vatc = db_exec($get_vatc) or errDie("Unable to get vat codes information."); if (pg_numrows($run_vatc) < 1) { $vatcode_drop = "<input type='hidden' name='setvatcode' value=''>"; } else { $vatcode_drop = "<select name='setvatcode'>"; while ($varr = pg_fetch_array($run_vatc)) { if (isset($setvatcode) and $setvatcode == $varr['id']) { $vatcode_drop .= "<option value='{$varr['id']}' selected>{$varr['code']} {$varr['description']}</option>"; } else { $vatcode_drop .= "<option value='{$varr['id']}'>{$varr['code']} {$varr['description']}</option>"; } } $vatcode_drop .= "</select>"; } $setvatsel1 = ""; $setvatsel2 = ""; if ($setvat == "novat") { $setvatsel2 = "checked='yes'"; } else { $setvatsel1 = "checked='yes'"; } // <input type='hidden' name='bankid' value='$bankid'> // <input type='hidden' name='date' value='$date'> // <input type='hidden' name='descript' value='$descript'> // <input type='hidden' name='reference' value='$reference'> // <input type='hidden' name='cheqnum' value='$cheqnum'> // <input type='hidden' name='amt' value='$amt'> // <input type='hidden' name='setvat' value='$setvat'> // <input type='hidden' name='setvatcode' value='$setvatcode'> // <input type='hidden' name='setamt' value='".sprint (array_sum($stock_setamt))."'> $prsel1 = ""; $prsel2 = ""; if ($process_type == "batch") { $prsel2 = "checked='yes'"; } else { $prsel1 = "checked='yes'"; } if (perm("allow-user-change-supp-process-type.php")) { $show_process_type = "\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'>Payment Process Type</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><input type='radio' name='process_type' value='now' {$prsel1}>Pay creditor immediately and add to cashbook</td>\n\t\t\t\t\t<td><input type='radio' name='process_type' value='batch' {$prsel2}>Add to creditor payment batch</td>\n\t\t\t\t</tr>\n\t\t\t\t" . TBL_BR . "\n\t\t\t</table>"; } else { $show_process_type = "<input type='hidden' name='process_type' value='{$process_type}'>"; } $confirm = "\n\t\t<script>\n\t\t\tfunction showText() {\n\t\t\t\tXPopupShow('{$settext}', getObject('phonetic_show'));\n\t\t\t}\n\t\t\tfunction updateStockTotal (counter){\n\t\t\t\tvar total_val = getObj('total_id'+counter);\n\t\t\t\tvar htotal_val = getObj('total_hid'+counter);\n\t\t\t\tvar set_val = getObj('set_id'+counter);\n\t\t\t\tvar hset_val = getObj('set_hid'+counter);\n\t\n\t\t\t\tvar button_val = getObj('button'+counter);\n\t\n\t\t\t\tif (total_val.value == '0.00'){\n\t\t\t\t\ttotal_val.value = htotal_val.value - hset_val.value;\n\t\t\t\t}else {\n\t\t\t\t\ttotal_val.value = '0.00';\n\t\t\t\t}\n\t\t\t\tif (set_val.value == '0.00'){\n\t\t\t\t\tset_val.value = hset_val.value;\n\t\t\t\t}else {\n\t\t\t\t\tset_val.value = '0.00';\n\t\t\t\t}\n\t\t\t\tbutton_val.blur();\n\t\t\t}\n\t\t\tfunction pageXY(el){\n\t\t\t\tvar XY={x:0, y:0};\n\t\t\t\tfor( var node = el; node; node=node.offsetParent)\n\t\t\t\t{ XY.x += node.offsetLeft;\n\t\t\t\t\tXY.y += node.offsetTop;\n\t\t\t\t}\n\t\t\t\treturn XY;\n\t\t\t}\n\t\t\tfunction gotoName(name){\n\t\t\t\tvar anchors, anchor, XY;\n\t\t\t\tanchors=document.anchors;\n\t\t\t\tanchor=anchors[name];\n\t\t\t\tif(!anchor) // IE sucks\n\t\t\t\t{\n\t\t\t\t\tfor( var i = 0; i < anchors.length; ++i){\n\t\t\t\t\t\tif(anchors[i].name==name){\n\t\t\t\t\t\t\tanchor = anchors[i];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!anchor){\n\t\t\t\t\tif( document.getElementById)\n\t\t\t\t\t\tanchor=document.getElementById(name);\n\t\t\t\t\telse if( document.all) // untested\n\t\t\t\t\t\tanchor=document.all[name];\n\t\t\t\t}\n\t\t\t\tif(anchor){\n\t\t\t\t\tXY = pageXY(anchor);\n\t\t\t\t\twindow.scrollTo(XY.x, XY.y);\n\t\t\t\t}\n\t\t\t}\n\t\t</script>\n\t\t<h3>New Bank Payment</h3>\n\t\t<form action='" . SELF . "' method='POST' name='form1'>\n\t\t{$show_process_type}\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t{$err}\n\t\t\t<input type='hidden' name='key' value='confirm'>\n\t\t\t<input type='hidden' name='all' value='{$all}'>\n\t\t\t<input type='hidden' name='supid' value='{$supid}'>\n\t\t\t<input type='hidden' name='pur' value=''>\n\t\t\t<input type='hidden' name='inv' value=''>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Field</th>\n\t\t\t\t\t\t\t<th>Value</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Account</td>\n\t\t\t\t\t\t\t<td>{$bank_drop}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Payment Date</td>\n\t\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("date", $date_year, $date_month, $date_day) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Paid To</td>\n\t\t\t\t\t\t\t<td valign='center'>({$sup['supno']}) {$sup['supname']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Description</td>\n\t\t\t\t\t\t\t<td valign='center'><textarea col='18' rows='3' name='descript'>{$descript}</textarea></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Reference</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='25' name='reference' value='{$reference}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Total Amount</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$amt}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Settlement Discount</td>\n\t\t\t\t\t\t\t<td valign='center'>" . CUR . " " . sprint(array_sum($stock_setamt)) . " <input type='button' onClick='showText();' value='Tax Credit Note ?'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td nowrap>Settlement Discount VAT</td>\n\t\t\t\t\t\t\t<td nowrap>\n\t\t\t\t\t\t\t\t{$vatcode_drop} \n\t\t\t\t\t\t\t\t<input type='radio' name='setvat' value='inc' {$setvatsel1}> VAT Inclusive \n\t\t\t\t\t\t\t\t<input type='radio' name='setvat' value='novat' {$setvatsel2}> No VAT\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td width='5%'></td>\n\t\t\t\t<td valign='top'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'><font style='color:red'>Quick</font> Payment</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Cheque Number</td>\n\t\t\t\t\t\t\t<td valign='center'><input size='20' name='cheqnum' value='{$cheqnum}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Amount</td>\n\t\t\t\t\t\t\t<td valign='center'>" . CUR . " <input type='text' size='6' name='amt' value='{$amt}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='2' align='right'><input type='submit' name='quickpay' value='Allocate the above payment automatically'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t" . TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td align='right'><input type='submit' name='confirm' value='Allocate the payments below »'></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t" . TBL_BR . "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='4'>Add unallocated payment to supplier statement </td>\n\t\t\t\t<td> " . CUR . " <input type='text' size='10' name='overpay' value='{$overpay}'></td>\n\t\t\t</tr>\n\t\t\t" . TBL_BR; db_conn('cubit'); $Sl = "SELECT purnum,supinv FROM purchases"; $Ri = db_exec($Sl); while ($pd = pg_fetch_array($Ri)) { $pid = $pd['purnum']; $supinv[$pid] = $pd['supinv']; } for ($i = 1; $i < 13; $i++) { db_conn($i); $Sl = "SELECT purnum, supinv FROM purchases"; $Ri = db_exec($Sl); while ($pd = pg_fetch_array($Ri)) { $pid = $pd['purnum']; $supinv[$pid] = $pd['supinv']; } $Sl = "SELECT purnum, supinv FROM nons_purchases"; $Ri = db_exec($Sl); while ($pd = pg_fetch_array($Ri)) { $pid = $pd['purnum']; $supinv[$pid] = $pd['supinv']; } } if ($all == 2) { if (!isset($paidamt)) { $paidamt = array(0); } if (!isset($stock_setamt)) { $stock_setamt = array(0); } #user has to use auto allocation ... we cant just die here anymore ... db_conn("cubit"); $sql = "\n\t\t\tSELECT purid as invid, intpurid as invid2, SUM(balance) AS balance, pdate as odate \n\t\t\tFROM suppurch WHERE supid = '{$supid}' AND div = '" . USER_DIV . "' \n\t\t\tGROUP BY purid, intpurid, pdate \n\t\t\tHAVING SUM(balance) > 0 \n\t\t\tORDER BY odate ASC"; $prnInvRslt = db_exec($sql); // if(pg_numrows($prnInvRslt) < 1) {return "The selected supplier has no outstanding purchases<br> // To make a payment in advance please select Auto Allocation";} $i = 0; $counter = 0; $total = 0; while ($inv = pg_fetch_array($prnInvRslt)) { if ($inv['invid'] == 0) { continue; } if ($inv['invid2'] > 0) { $inv['invid'] = $inv['invid2']; } if ($doset) { $showsethead = "<th>Settlement</th><th>Potential Settlement Discount</th>"; } else { $showsethead = ""; } if ($i == 0) { $confirm .= "\n\t\t\t\t\t" . TBL_BR . "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td colspan='3'><h3>Allocate Payments To Supplier Invoices:</h3></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t" . TBL_BR . "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Purchase</th>\n\t\t\t\t\t\t<th>Supplier Invoice No.</th>\n\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t{$showsethead}\n\t\t\t\t\t</tr>"; } $invid = $inv['invid']; $val = ''; if (pg_numrows($prnInvRslt) == 1) { $val = $amt; } if (isset($paidamt[$i])) { $val = sprint($paidamt[$i]); } $val = sprint($val); if (isset($supinv[$invid])) { $sinv = $supinv[$invid]; } else { $sinv = ""; } if ($doset) { #check if we can find a recommended settlement amt ... if ($sup['setdisc'] != "0") { #generate the dates ... if ($sup['setdays'] == 0) { $month = date("m") + 1; } else { $month = date("m"); } $startmonth = $month - 1; $firstdate = date("Y-m-d", mktime(0, 0, 0, $startmonth, $sup['setdays'], date("Y"))); $discdate = date("Y-m-d", mktime(0, 0, 0, $month, $sup['setdays'], date("Y"))); $lastdate = date("Y-m-d", mktime(0, 0, 0, date("m") + 1, -1, date("Y"))); //print "$firstdate -> $discdate -> $lastdate =====> $date ($inv[odate])<br>"; if ($inv['odate'] > $firstdate and $inv['odate'] < $lastdate and $inv['odate'] <= $date) { #discount applies ... $setrec = sprint($inv['balance'] / 100 * $sup['setdisc']); } else { #no discount $setrec = sprint(0); } } else { $setrec = sprint(0); } if (!isset($stock_setamt[$i])) { $stock_setamt[$i] = sprint(0); } $stock_setamt[$i] = sprint($stock_setamt[$i]); $showset = "\n\t\t\t\t\t<td><input id='set_id{$counter}' type='text' size='10' name='stock_setamt[{$i}]' value='{$stock_setamt[$i]}'></td>\n\t\t\t\t\t<td><input id='set_hid{$counter}' type='hidden' name='stock_setamt_val' value='{$setrec}'>" . CUR . " {$setrec}</td>"; } else { $showset = "\n\t\t\t\t\t<input id='set_id{$counter}' type='hidden' name='stock_setamt[{$i}]' value='0'>\n\t\t\t\t\t<input id='set_hid{$counter}' type='hidden' name='stock_setamt_val' value='0'>"; } $confirm .= "\n\t\t\t\t<input type='hidden' size='20' name='invids[{$i}]' value='{$inv['invid']}'>\n\t\t\t\t<input id='total_hid{$counter}' type='hidden' name='totamt[{$i}]' value='{$inv['balance']}'>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>{$inv['invid']}</td>\n\t\t\t\t\t<td>{$sinv}</td>\n\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t<td><input id='total_id{$counter}' type='text' name='paidamt[{$i}]' size='10' value='{$val}'></td>\n\t\t\t\t\t{$showset}\n\t\t\t\t\t<td><input id='button{$counter}' type='checkbox' onClick=\"updateStockTotal({$counter});\"></td>\n\t\t\t\t</tr>"; $i++; $total = $total + $inv['balance']; if ($counter == 15) { $confirm .= "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td colspan='2'></td>\n\t\t\t\t\t\t<td class='" . bg_class() . "' nowrap colspan='2'>" . CUR . " " . sprint($total) . "</td>\n\t\t\t\t\t\t<td class='" . bg_class() . "' nowrap>Total: " . CUR . " " . sprint(array_sum($paidamt)) . " </td>\n\t\t\t\t\t\t<td class='" . bg_class() . "' nowrap>Total: " . CUR . " " . sprint(array_sum($stock_setamt)) . " </td>\n\t\t\t\t\t\t<td class='" . bg_class() . "' nowrap align='left'><input type='submit' name='midupdate' value='Update'></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<a name='midupdate'></a>"; $counter = 0; } $counter++; } if ($counter != 0) { $confirm .= "\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'></td>\n\t\t\t\t\t<td class='" . bg_class() . "' nowrap colspan='2'>" . CUR . " " . sprint($total) . "</td>\n\t\t\t\t\t<td class='" . bg_class() . "' nowrap>Total: " . CUR . " " . sprint(array_sum($paidamt)) . " </td>\n\t\t\t\t\t<td class='" . bg_class() . "' nowrap>Total: " . CUR . " " . sprint(array_sum($stock_setamt)) . " </td>\n\t\t\t\t\t<td class='" . bg_class() . "' nowrap align='left'><input type='submit' name='botupdate' value='Update'></td>\n\t\t\t\t</tr>\n\t\t\t\t<a name='botupdate'></a>"; } // 0.01 because of high precisions like 0.0000000001234 still matching if ($out >= 0.01) { $confirm .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='5'><b>A general transaction will debit the supplier's account with " . CUR . " " . sprint($out) . " </b></td>\n\t\t\t\t</tr>"; } } vsprint($out); ###########################[ RECONCILIATION ]############################# #if we adding a new reason ... add it if (isset($newreason) and strlen($newreason) > 0 and (isset($newreasonamt) and strlen($newreasonamt) > 0)) { if (!isset($newreasondescr)) { $newreasondescr = ""; } $ins_sql = "\n\t\t\tINSERT INTO recon_balance_ct (\n\t\t\t\tsupid, date, reason_id, amount,descr\n\t\t\t) VALUES (\n\t\t\t\t'{$supid}', 'now', '{$newreason}', '{$newreasonamt}', '{$newreasondescr}'\n\t\t\t)"; $run_ins = db_exec($ins_sql) or errDie("Unable to record new reson information."); $navigation = "<script>gotoName('bottom');</script>"; } #if we adding a new comment ... add it if (isset($newcomment) and strlen($newcomment) > 0) { $ins_sql = "\n\t\t\tINSERT INTO recon_comments_ct (\n\t\t\t\tsupid, comment, date\n\t\t\t) VALUES (\n\t\t\t\t'{$supid}', '" . base64_encode($newcomment) . "', 'now'\n\t\t\t)"; $run_ins = db_exec($ins_sql) or errDie("Unable to record new comment information."); $navigation = "<script>gotoName('bottom');</script>"; } #if we removing a reason ... remove it if (isset($remreason)) { $rem_sql = "DELETE FROM recon_balance_ct WHERE id = '{$remreason}'"; $run_rem = db_exec($rem_sql) or errDie("Unable to remove selected reason."); } #if we removing a comment ... remove it if (isset($remcomment)) { $rem_com = "DELETE FROM recon_comments_ct WHERE id = '{$remcomment}'"; $run_rem = db_exec($rem_com) or errDie("Unable to remove selected comment."); } #get balances ... if (!isset($creditor_balance) or strlen($creditor_balance) < 1) { $sql = "SELECT balance FROM cubit.recon_creditor_balances WHERE supid='{$supid}'"; $cbalance_rslt = db_exec($sql) or errDie("Unable to retrieve creditor balance."); if (pg_numrows($cbalance_rslt) < 1) { $creditor_balance = 0; $ins_sql = "INSERT INTO cubit.recon_creditor_balances (supid,balance) VALUES ('{$supid}','0')"; $run_ins = db_exec($ins_sql) or errDie("Unable to record creditor balance."); } $creditor_balance = pg_fetch_result($cbalance_rslt, 0); } else { #update the db one now .. $upd_sql = "UPDATE recon_creditor_balances SET balance = '{$creditor_balance}' WHERE supid = '{$supid}'"; $run_upd = db_exec($upd_sql) or errDie("Unable to update creditor balance information."); } $total_balance = sprint($sup["balance"] + $creditor_balance); // $diff_balance = sprint($sup["balance"] - $creditor_balance); $diff_balance = sprint($amt + array_sum($stock_setamt) - $creditor_balance); #get reasons for supplier ... $sql = "SELECT recon_balance_ct.id, date, reason, amount, descr FROM cubit.recon_balance_ct\n\t\t\t\tLEFT JOIN cubit.recon_reasons\n\t\t\t\t\tON recon_balance_ct.reason_id=recon_reasons.id\n\t\t\tWHERE supid='{$supid}' AND date>='{$date}'"; $balance_rslt = db_exec($sql) or errDie("Unable to retrieve balances."); $balance_out = ""; $reason_total = 0; while (list($id, $date, $reason, $amount, $reasondescr) = pg_fetch_array($balance_rslt)) { $balance_out .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$date}</td>\n\t\t\t\t<td>{$reason}</td>\n\t\t\t\t<td align='right'>" . CUR . " {$amount}</td>\n\t\t\t\t<td>{$reasondescr}</td>\n\t\t\t\t<td><input type='checkbox' name='remreason' value='{$id}' onClick='document.form1.submit();'></td>\n\t\t\t</tr>"; $reason_total = $reason_total + $amount; } if ($reason_total != 0) { $balance_out .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='2'><b>Total:</b></td>\n\t\t\t\t<td align='right'><b>" . CUR . " " . sprint($reason_total) . "</b></td>\n\t\t\t\t<td colspan='2'></td>\n\t\t\t</tr>"; } if (!isset($sup['supid'])) { $sup['supid'] = "0"; } #get comments for supplier ... $sql = "SELECT id, date, comment FROM cubit.recon_comments_ct WHERE supid='{$sup['supid']}' ORDER BY id DESC"; $comments_rslt = db_exec($sql) or errDie("Unable to retrieve comments."); $comments_out = ""; while ($comments_data = pg_fetch_array($comments_rslt)) { $comments_out .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$comments_data['date']}</td>\n\t\t\t\t<td>" . base64_decode(nl2br($comments_data["comment"])) . "</td>\n\t\t\t\t<td><input type='checkbox' name='remcomment' value='{$comments_data['id']}' onClick='document.form1.submit();'></td>\n\t\t\t</tr>"; } $get_reasons = "SELECT * FROM recon_reasons ORDER BY reason"; $run_reasons = db_exec($get_reasons) or errDie("Unable to get reasons information"); if (pg_numrows($run_reasons) < 1) { $newreason_drop = "<a target='_blank' href='../recon_reason_view.php'>No Reasons Found.</a>"; } else { #get list of available reasons $newreason_drop = "<select name='newreason'>"; while ($rarr = pg_fetch_array($run_reasons)) { $newreason_drop .= "<option value='{$rarr['id']}'>{$rarr['reason']}</option>"; } $newreason_drop .= "</select>"; } if (!isset($navigation)) { $navigation = ""; } $confirm .= "\n\t\t\t<input type='hidden' name='out' value='{$out}'>\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'></td>\n\t\t\t\t<td align='right'><input type='submit' name='confirm' value='Confirm »'></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t" . TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td valign='top'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='5'>Reconciliation to statement supplied by supplier:</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t<th>Reason</th>\n\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t\t<th>Ref No</th>\n\t\t\t\t\t\t\t<th>Remove</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$balance_out}\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='2'>{$newreason_drop}</td>\n\t\t\t\t\t\t\t<td><input type='text' size='10' name='newreasonamt'></td>\n\t\t\t\t\t\t\t<td><input type='text' size='14' name='newreasondescr'></td>\n\t\t\t\t\t\t\t<td><input type='submit' value='Add'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td valign='top'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='3'>Comments</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t<th>Comment</th>\n\t\t\t\t\t\t\t<th>Remove</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$comments_out}\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='2'><input type='text' size='30' name='newcomment'></td>\n\t\t\t\t\t\t\t<td><input type='submit' value='Add'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t" . TBL_BR . "\n\t\t</table>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Balance According to Cubit</td>\n\t\t\t\t<td align='right'>" . CUR . " {$sup['balance']}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Total Of This Payment</td>\n\t\t\t\t<td align='right'>" . CUR . " " . sprint($amt + array_sum($stock_setamt)) . "</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Balance According to Supplier</td>\n\t\t\t\t<td align='right'><input type='text' name='creditor_balance' value='{$creditor_balance}'></td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Difference in amount paid now and supplier statement</td>\n\t\t\t\t<td align='right'><li class='err'>" . CUR . " {$diff_balance}</li></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</form>\n\t\t<a name='bottom'></a>\n\t\t{$navigation}"; return $confirm; }
break; case "alloc": $OUTPUT = alloc($_POST); break; case "confirm": $OUTPUT = confirm($_POST); break; case "write": $OUTPUT = write($_POST); break; default: $OUTPUT = sel_sup(); } } else { # Display default output $OUTPUT = sel_sup(); } # get templete require "../template.php"; # Insert details function sel_sup() { // suppliers Drop down selections db_connect(); $supp = "<select name='supid'>"; $sql = "SELECT supid, supno, supname FROM suppliers WHERE div = '" . USER_DIV . "' ORDER BY supname,supno"; $supRslt = db_exec($sql); if (pg_numrows($supRslt) < 1) { return "<li> There are no Creditors in Cubit."; } while ($sup = pg_fetch_array($supRslt)) {
function alloc($_POST) { # get vars extract($_POST); if (isset($back)) { if (isset($e)) { header("Location: cashbook-entry.php"); exit; } return sel_sup(); } $passon = ""; # validate input require_lib("validate"); $v = new validate(); $v->isOk($all, "num", 1, 1, "Invalid allocation."); $v->isOk($rec_amount, "num", 1, 10, "Invalid supplier payment amount."); for ($t = 0; $t < $rec_amount; $t++) { $v->isOk($supid[$t], "num", 1, 10, "Invalid supplier number. ({$t})"); $v->isOk($bankid[$t], "num", 1, 30, "Invalid Bank Account. ({$t})"); $v->isOk($date_day[$t], "num", 1, 2, "Invalid Date day. ({$t})"); $v->isOk($date_month[$t], "num", 1, 2, "Invalid Date month. ({$t})"); $v->isOk($date_year[$t], "num", 1, 4, "Invalid Date Year. ({$t})"); if (strlen($date_year[$t]) != 4) { $v->isOk($bankname, "num", 1, 1, "Invalid Date year. ({$t})"); } $v->isOk($descript[$t], "string", 0, 255, "Invalid Description. ({$t})"); $v->isOk($reference[$t], "string", 0, 50, "Invalid Reference Name/Number. ({$t})"); $v->isOk($cheqnum[$t], "num", 0, 30, "Invalid Cheque number. ({$t})"); $v->isOk($amt[$t], "float", 1, 10, "Invalid amount. ({$t})"); if ($amt[$t] < 0.01) { $v->isOk($amt[$t], "float", 5, 1, "Amount too small. ({$t})"); } $date[$t] = mkdate($date_year[$t], $date_month[$t], $date_day[$t]); if (!checkdate($date_month[$t], $date_day[$t], $date_year[$t])) { $v->isOk($date[$t], "num", 1, 1, "Invalid date. ({$t})"); } $passon .= "\n\t\t\t\t<input type='hidden' name='bankid[{$t}]' value='{$bankid[$t]}'>\n\t\t\t\t<input type='hidden' name='date[{$t}]' value='{$date[$t]}'>\n\t\t\t\t<input type='hidden' name='supid[{$t}]' value='{$supid[$t]}'>\n\t\t\t\t<input type='hidden' name='descript[{$t}]' value='{$descript[$t]}'>\n\t\t\t\t<input type='hidden' name='reference[{$t}]' value='{$reference[$t]}'>\n\t\t\t\t<input type='hidden' name='cheqnum[{$t}]' value='{$cheqnum[$t]}'>\n\t\t\t\t<input type='hidden' name='amt[{$t}]' value='{$amt[$t]}'>\n\t\t\t\t<input type='hidden' name='date_day[{$t}]' value='{$date_day[$t]}'>\n\t\t\t\t<input type='hidden' name='date_month[{$t}]' value='{$date_month[$t]}'>\n\t\t\t\t<input type='hidden' name='date_year[{$t}]' value='{$date_year[$t]}'>"; } # display errors, if any if ($v->isError()) { $confirm = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $confirm .= "<li class='err'>" . $e["msg"] . "</li>"; } //$confirm .= "<p><input type=button onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm . method($supid); } $confirm = "\n\t\t\t<h3>Confirm Multiple Bank Receipts</h3>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t\t<input type='hidden' name='key' value='confirm'>\n\t\t\t\t<input type='hidden' name='rec_amount' value='{$rec_amount}'>\n\t\t\t\t<input type='hidden' name='all' value='{$all}'>\n\t\t\t\t<input type='hidden' name='pur' value=''>\n\t\t\t\t<input type='hidden' name='inv' value=''>\n\t\t\t\t{$passon}"; for ($t = 0; $t < $rec_amount; $t++) { //$out = array(); # Get bank account name db_connect(); $sql = "SELECT accname,bankname FROM bankacct WHERE bankid = '{$bankid[$t]}' AND div = '" . USER_DIV . "'"; $bankRslt = db_exec($sql); $bank[$t] = pg_fetch_array($bankRslt); if (pg_num_rows($bankRslt) < 1) { $bank[$t]['accname'] = "Cash"; $bank[$t]['bankname'] = ""; } # Supplier name $sql = "SELECT supno,supname FROM suppliers WHERE supid = '{$supid[$t]}' AND div = '" . USER_DIV . "'"; $supRslt = db_exec($sql); $sup = pg_fetch_array($supRslt); $bank1 = $bank[$t]['accname']; $bank2 = $bank[$t]['bankname']; $confirm .= "\n\t\t\t\t" . TBL_BR . "\n\t\t\t\t" . TBL_BR . "\n\t\t\t\t" . TBL_BR . "\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><h3>Supplier</h3></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Account</th>\n\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t<th>Paid To</th>\n\t\t\t\t\t<th>Description</th>\n\t\t\t\t\t<th>Reference</th>\n\t\t\t\t\t<th>Cheque Number</th>\n\t\t\t\t\t<th>Amount</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>{$bank1} - {$bank2}</td>\n\t\t\t\t\t<td valign='center'>{$date[$t]}</td>\n\t\t\t\t\t<td valign='center'>({$sup['supno']}) {$sup['supname']}</td>\n\t\t\t\t\t<td valign='center'>" . nl2br($descript[$t]) . "</td>\n\t\t\t\t\t<td valign='center'>{$reference[$t]}</td>\n\t\t\t\t\t<td valign='center'>{$cheqnum[$t]}</td>\n\t\t\t\t\t<td valign='center'>" . CUR . " {$amt[$t]}</td>\n\t\t\t\t</tr>"; db_conn('cubit'); $Sl = "SELECT purnum,supinv FROM purchases"; $Ri = db_exec($Sl); while ($pd = pg_fetch_array($Ri)) { $pid = $pd['purnum']; $supinv[$pid] = $pd['supinv']; } for ($i = 1; $i < 13; $i++) { db_conn($i); $Sl = "SELECT purnum,supinv FROM purchases"; $Ri = db_exec($Sl); while ($pd = pg_fetch_array($Ri)) { $pid = $pd['purnum']; $supinv[$pid] = $pd['supinv']; } } if ($all == 0) { $out[$t] = $amt[$t]; // Connect to database db_conn("cubit"); $sql = "SELECT purid as invid,intpurid as invid2,SUM(balance) AS balance,pdate as odate\n\t\t\t\t\tFROM suppurch WHERE supid = '{$supid[$t]}' AND div = '" . USER_DIV . "'\n\t\t\t\t\tGROUP BY purid, intpurid, pdate\n\t\t\t\t\tHAVING SUM(balance) > 0\n\t\t\t\t\tORDER BY odate ASC"; $prnInvRslt = db_exec($sql) or errDie("unable to get invoices."); $i = 0; while ($inv = pg_fetch_array($prnInvRslt) and $out[$t] > 0) { //if ($inv['invid']==0) {continue;} if ($inv['invid2'] > 0) { $inv['invid'] = $inv['invid2']; } if ($i == 0) { $confirm .= "\n\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Purchase</th>\n\t\t\t\t\t\t<th>Supplier Invoice No.</th>\n\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t</tr>"; } $invid = $inv['invid']; if (isset($supinv[$invid])) { $sinv = $supinv[$invid]; } else { $sinv = ""; } $confirm .= "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><input type='hidden' size='20' name='invids[{$t}][]' value='{$inv['invid']}'>{$inv['invid']}</td>\n\t\t\t\t\t\t\t<td>{$sinv}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t\t<td>{$inv['odate']}</td>"; if ($out[$t] >= $inv['balance']) { $val = $inv['balance']; $out[$t] = $out[$t] - $inv['balance']; } else { $val = $out[$t]; $out[$t] = 0; } $i++; $val = sprint($val); $confirm .= "\n\t\t\t\t\t\t\t<td><input type='hidden' name='paidamt[{$invid}]' size='10' value='{$val}'>" . CUR . " {$val}</td>\n\t\t\t\t\t\t</tr>"; } // 0.01 because of high precisions like 0.0000000001234 still matching if ($out[$t] >= 0.01) { $confirm .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='5'><b>A general transaction will debit the supplier's account\n\t\t\t\t\t\twith " . CUR . " " . sprint($out[$t]) . " </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>"; } } if ($all == 1) { $confirm .= "\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Current</th>\n\t\t\t\t\t\t\t<th>30 days</th>\n\t\t\t\t\t\t\t<th>60 days</th>\n\t\t\t\t\t\t\t<th>90 days</th>\n\t\t\t\t\t\t\t<th>120 days</th>\n\t\t\t\t\t\t\t<th>Total Outstanding</th>\n\t\t\t\t\t\t</tr>"; $curr[$t] = sage($supid[$t], 29); $age30[$t] = sage($supid[$t], 59); $age60[$t] = sage($supid[$t], 89); $age90[$t] = sage($supid[$t], 119); $age120[$t] = sage($supid[$t], 149); $supttot[$t] = sprint($curr[$t] + $age30[$t] + $age60[$t] + $age90[$t] + $age120[$t]); if (!isset($out1[$t])) { $out1[$t] = ""; $out2[$t] = ""; $out3[$t] = ""; $out4[$t] = ""; $out5[$t] = ""; } vsprint($out1[$t]); vsprint($out2[$t]); vsprint($out3[$t]); vsprint($out4[$t]); vsprint($out5[$t]); # Alternate bgcolor $confirm .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>" . CUR . " {$curr[$t]}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$age30[$t]}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$age60[$t]}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$age90[$t]}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$age120[$t]}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$supttot[$t]}</td>\n\t\t\t\t\t\t</tr>"; $confirm .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='text' size='7' name='out1[{$t}]' value='{$out1[$t]}'></td>\n\t\t\t\t\t\t<td><input type='text' size='7' name='out2[{$t}]' value='{$out2[$t]}'></td>\n\t\t\t\t\t\t<td><input type='text' size='7' name='out3[{$t}]' value='{$out3[$t]}'></td>\n\t\t\t\t\t\t<td><input type='text' size='7' name='out4[{$t}]' value='{$out4[$t]}'></td>\n\t\t\t\t\t\t<td><input type='text' size='7' name='out5[{$t}]' value='{$out5[$t]}'></td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t</tr>"; $confirm .= "\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>"; } if ($all == 2) { db_conn("cubit"); $sql = "SELECT purid as invid,intpurid as invid2,SUM(balance) AS balance,pdate as odate\n\t\t\t\t\tFROM suppurch WHERE supid = '{$supid[$t]}' AND div = '" . USER_DIV . "'\n\t\t\t\t\tGROUP BY purid, intpurid, pdate\n\t\t\t\t\tHAVING SUM(balance) > 0\n\t\t\t\t\tORDER BY odate ASC"; $prnInvRslt = db_exec($sql); if (pg_numrows($prnInvRslt) < 1) { return "The selected supplier has no outstanding purchases<br>\n\t\t\t\t\tTo make a payment in advance please select Auto Allocation"; } $i = 0; while ($inv = pg_fetch_array($prnInvRslt)) { if ($inv['invid'] == 0) { continue; } if ($inv['invid2'] > 0) { $inv['invid'] = $inv['invid2']; } if ($i == 0) { $confirm .= "\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Purchase</th>\n\t\t\t\t\t\t\t<th>Supplier Invoice No.</th>\n\t\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t</tr>"; } $invid = $inv['invid']; $val = ''; if (pg_numrows($prnInvRslt) == 1) { $val = $amt[$t]; } if (isset($paidamt[$t][$i])) { $val = $paidamt[$t][$i]; } if (isset($supinv[$invid])) { $sinv = $supinv[$invid]; } else { $sinv = ""; } $confirm .= "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><input type='hidden' size='20' name='invids[{$t}][]' value='{$inv['invid']}'>{$inv['invid']}</td>\n\t\t\t\t\t\t\t<td>{$sinv}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t\t<td>{$inv['odate']}</td>"; $i++; $confirm .= "\n\t\t\t\t\t\t\t<td><input type='text' name='paidamt[{$t}][{$invid}]' size='10' value='{$val}'></td>\n\t\t\t\t\t\t</tr>"; } // 0.01 because of high precisions like 0.0000000001234 still matching if ($out[$t] >= 0.01) { $confirm .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='5'><b>A general transaction will debit the supplier's account\n\t\t\t\t\t\twith " . CUR . " " . sprint($out[$t]) . " </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>"; } } vsprint($out[$t]); $confirm .= "<input type='hidden' name='out[{$t}]' value='{$out[$t]}'>"; } $confirm .= "\n\t\t\t\n\t\t\t" . TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td><input type='submit' name='back' value='« Correction'></td>\n\t\t\t\t<td align='right' colspan='6'><input type='submit' value='Confirm »'></td>\n\t\t\t</tr>\n\t\t</form>\n\t\t</table>\n\t\t<p>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Quick Links</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td><a href='bank-pay-supp.php'>Add supplier payment</a></td>\n\t\t\t</tr>\n\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t</table>"; return $confirm; }