function details($_POST, $err = "") { # Get vars extract($_POST); if (isset($back) and isStock($accid)) { return get_stock_items($_POST); } elseif (isset($back)) { return slctacc($_POST); } $accid += 0; $amount = $amount + 0; # validate input require_lib("validate"); $v = new validate(); $v->isOk($refnum, "num", 1, 10, "Invalid Reference number."); $v->isOk($ct_day, "num", 1, 2, "Invalid to Date ct_day."); $v->isOk($ct_month, "num", 1, 2, "Invalid to Date ct_monthth."); $v->isOk($ct_year, "num", 1, 4, "Invalid to Date Year."); $date = $ct_day . "-" . $ct_month . "-" . $ct_year; if (!checkdate($ct_month, $ct_day, $ct_year)) { $v->isOk($date, "num", 1, 1, "Invalid date."); } $v->isOk($accid, "num", 1, 50, "Invalid Contra Account."); $v->isOk($cusnum, "num", 1, 50, "Invalid Customer number."); $v->isOk($vatinc, "string", 1, 6, "Invalid Transaction VAT Option."); if (sprint($amount) <= 0) { $v->addError($amount, "Invalid Or Too Small Amount Entered."); } if ($accid == "0") { $v->addError($accid, "No Allowed Accounts Found. <a href='settings/credit-note-accounts.php'>Please Add One First</a>"); } # display errors, if any if ($v->isError()) { $confirm = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $confirm .= "<li class='err'>" . $e["msg"] . "</li>"; } return slctacc($_POST, $confirm . "<br>"); } # CHECK IF THIS DATE IS IN THE BLOCKED RANGE $blocked_date_from = getCSetting("BLOCKED_FROM"); $blocked_date_to = getCSetting("BLOCKED_TO"); if (strtotime($date) >= strtotime($blocked_date_from) and strtotime($date) <= strtotime($blocked_date_to) and !user_is_admin(USER_ID)) { return slctacc($_POST, "<li class='err'>Period Range Is Blocked. Only an administrator can process entries within this period.</li><br>"); } #if stock returned is selected ... override the setting if (isset($gotstock) and strlen($gotstock) > 0) { #get a stock id db_conn('exten'); $get_stkid = "SELECT stkacc FROM warehouses ORDER BY whid ASC LIMIT 1"; $run_stkid = db_exec($get_stkid) or errDie("Unable to get inventory account information."); if (pg_numrows($run_stkid) < 1) { return "<li class='err'>No Inventory Account Found.</li>"; } else { $accid = pg_fetch_result($run_stkid, 0, 0); } } # get contra account details $accRs = get("core", "*", "accounts", "accid", $accid); $acc = pg_fetch_array($accRs); #### handle the stock we selected if ((isStock($accid) or isset($gotstock)) and !isset($stockcontinue)) { #for whatever reason ... we need to get stock ... return get_stock_items($_POST); } db_connect(); # Select customer $sql = "SELECT * FROM customers WHERE cusnum = '{$cusnum}' AND div = '" . USER_DIV . "'"; $custRslt = db_exec($sql) or errDie("Unable to access databse.", SELF); if (pg_numrows($custRslt) < 1) { return "<li class='err'>Invalid customer ID, or customer has been blocked.</li>"; } else { $cust = pg_fetch_array($custRslt); } db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$cust['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { return "<i class='err'>Customer Department Not Found</i>"; } else { $dept = pg_fetch_array($deptRslt); } #get a stock total $stock_total = 0; if (isset($stock_items) and is_array($stock_items)) { foreach ($stock_items as $each => $own) { $stock_total = $stock_total + $stock_cost[$each] * $own; } } $stkamount = 0; $send_stock = ""; $show_stock = ""; if (isset($stock_items) and is_array($stock_items)) { $unit_total = array_sum($stock_items); if ($unit_total == 0) { $stock_unit_avg_cost = 0; } else { $stock_unit_avg_cost = sprint(($amount - $stock_total) / $unit_total); } foreach ($stock_items as $each => $own) { if ($own > 0) { if (!isset($own) or strlen($own) < 1) { $own = 1; } if (!isset($stock_cost[$each]) or strlen($stock_cost[$each]) < 1) { $stock_cost[$each] = 0; } $send_stock .= "<input type='hidden' name='stock_items[{$each}]' value='{$own}'>\n"; $send_stock .= "<input type='hidden' name='stock_cost[{$each}]' value='{$stock_cost[$each]}'>\n"; db_connect(); $get_stk = "SELECT stkdes,whid FROM stock WHERE stkid = '{$each}' LIMIT 1"; $run_stk = db_exec($get_stk) or errDie("Unable to get stock information."); if (pg_numrows($run_stk) < 1) { $stock_name = "Unknown"; } else { $stock_name = pg_fetch_result($run_stk, 0, 0); $whid = pg_fetch_result($run_stk, 0, 1); db_conn('exten'); $get_cos = "SELECT cosacc FROM warehouses WHERE whid = '{$whid}' LIMIT 1"; $run_cos = db_exec($get_cos) or errDie("Unable to get cost of sale information. (1)"); if (pg_numrows($run_cos) < 1) { $show_cos = ""; } else { $cos_id = pg_fetch_result($run_cos, 0, 0); db_conn('core'); $get_acc = "SELECT topacc,accnum,accname FROM accounts WHERE accid = '{$cos_id}' LIMIT 1"; $run_acc = db_exec($get_acc) or errDie("Unable to get cost of sale information. (2)"); if (pg_numrows($run_acc) < 1) { $show_cos = ""; } else { $aarr = pg_fetch_array($run_acc); $show_cos = "{$aarr['topacc']}/{$aarr['accnum']} - {$aarr['accname']}"; } } } if (!isset($stock_prof[$each])) { $stock_prof[$each] = sprint($stock_unit_avg_cost * $own); } $show_stock .= "\n\t\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t\t\t<td colspan='2'>{$stock_name}</td>\n\t\t\t\t\t\t\t\t\t\t<td>{$own}</td>\n\t\t\t\t\t\t\t\t\t\t<td nowrap>" . CUR . " " . sprint($stock_cost[$each]) . "</td>\n\t\t\t\t\t\t\t\t\t\t<td nowrap>" . CUR . " " . sprint($stock_cost[$each] * $own) . "</td>\n\t\t\t\t\t\t\t\t\t\t<td><input type='text' size='7' name='stock_prof[{$each}]' value='{$stock_prof[$each]}'></td>\n\t\t\t\t\t\t\t\t\t\t<td nowrap>{$show_cos}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t"; $stkamount = $stkamount + $stock_cost[$each] * $own; } } } if (strlen($send_stock) == 0) { $send_stock = "<input type='hidden' name='stock_items' value='0'>"; $send_stock .= "<input type='hidden' name='stock_cost' value='0'>"; $send_stock .= "<input type='hidden' name='stock_prof' value='0'>"; $get_gds_note = ""; } else { $send_stock .= "<input type='hidden' name='stockcontinue' value='0'>"; $send_stock .= "<input type='hidden' name='gotstock' value='1'>"; if (isset($gds_note) and strlen($gds_note) > 0) { $gds_note_sel = "checked='yes'"; } else { $gds_note_sel = ""; } $get_gds_note = "\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Print Goods Received Note</td>\n\t\t\t\t\t\t\t\t<td><input type='checkbox' name='gds_note' value='yes' {$gds_note_sel}></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t"; } db_conn('core'); $get_sales_acc = "SELECT topacc,accnum,accname FROM accounts WHERE accid = '{$dept['incacc']}' LIMIT 1"; $run_sales_acc = db_exec($get_sales_acc) or errDie("Unable to get sales account information. (1)"); if (pg_numrows($run_sales_acc) < 1) { $show_sales = ""; } else { $sarr = pg_fetch_array($run_sales_acc); $show_sales = "{$sarr['topacc']}/{$sarr['accnum']} - {$sarr['accname']}"; } if (strlen($show_stock) > 0) { $show_stock = "\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'>Stock Description</th>\n\t\t\t\t\t\t\t<th>Number Of Units Returned</th>\n\t\t\t\t\t\t\t<th>Unit Cost</th>\n\t\t\t\t\t\t\t<th>Total</th>\n\t\t\t\t\t\t\t<th>Profit/Loss</th>\n\t\t\t\t\t\t\t<th>Cost Of Sale Account</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$show_stock}\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='4' align='right'><b>Total:</b></td>\n\t\t\t\t\t\t\t<td nowrap>" . CUR . " " . sprint($stock_total) . "</td>\n\t\t\t\t\t\t\t<td colspan='2' nowrap><li class='err'>Difference ({$amount} - " . sprint($stock_total) . "): " . CUR . " " . sprint($amount - $stock_total) . "</li></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<td colspan='7'><li class='err'>Sales Account To Be Used: {$show_sales}</li></td>\n\t\t\t\t\t\t</tr>"; } # Probe tran type if ($entry == "CT") { $tran = "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td colspan='3'>{$acc['topacc']}/{$acc['accnum']} - {$acc['accname']}</td>\n\t\t\t\t\t\t<td colspan='2'>{$cust['accno']} - {$cust['cusname']} {$cust['surname']}</td>\n\t\t\t\t\t</tr>"; } else { $tran = "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td colspan='3'>{$cust['accno']} - {$cust['cusname']} {$cust['surname']}</td>\n\t\t\t\t\t\t<td colspan='2'>{$acc['topacc']}/{$acc['accnum']} - {$acc['accname']}</td>\n\t\t\t\t\t</tr>"; } if (!isset($amount)) { $amount = $stkamount; $details = ""; } if (!isset($vataccid)) { $vataccid = 0; } if (isset($vatinc) and $vatinc != "novat") { db_connect(); $get_vatcodes = "SELECT * FROM vatcodes ORDER BY code"; $run_vatcodes = db_exec($get_vatcodes) or errDie("Unable to get vat code inoformation."); if (pg_numrows($run_vatcodes) < 1) { return "No Vatcodes Found. Please Add One First."; } else { $vatcode_drop = "<select name='vatcode'>"; while ($varr = pg_fetch_array($run_vatcodes)) { $vatcode_drop .= "<option value='{$varr['id']}'>({$varr['code']}) {$varr['description']}</option>"; } $vatcode_drop .= "</select>"; } db_conn('core'); $vatacc = "<select name='vataccid'>"; $sql = "SELECT * FROM accounts WHERE div = '" . USER_DIV . "' ORDER BY accname ASC"; $accRslt = db_exec($sql); if (pg_numrows($accRslt) < 1) { return "<li>There are No accounts in Cubit.</li>"; } $vatacc_newid = gethook("accnum", "salesacc", "name", "VAT", "VAT"); $vataccid = getCSetting("CRED_NOTE_VAT_ACC"); if (!isset($vataccid) or strlen($vataccid) < 1 or $vataccid == "0") { $vataccid = $vatacc_newid; } // if (!isset($vataccid) OR $vataccid == "0") // $vataccid = $vatacc_newid; // while($acc_arr = pg_fetch_array($accRslt)){ // # Check Disable // if(isDisabled($acc_arr['accid'])) // continue; // if($vataccid == $acc_arr['accid']) { // $sel = "selected"; // } else { // $sel = ""; // } // $vatacc .= "<option value='$acc_arr[accid]' $sel>$acc_arr[topacc]/$acc_arr[accnum] - $acc_arr[accname]</option>"; // } // $vatacc .= "</select>"; if (isset($vatdedacc) and $vatdedacc == "dt") { $dsel1 = "checked='yes'"; } else { $dsel1 = ""; } if (isset($vatdedacc) and $vatdedacc == "ct") { $dsel2 = "checked='yes'"; } else { $dsel2 = ""; } if ($dsel1 == "" and $dsel2 == "") { $dsel1 = "checked='yes'"; } if (isStock($accid) and isset($gotstock)) { $showgetvatacc = "<input type='hidden' name='vatdedacc' value='dt'>"; } else { $showgetvatacc = "\n\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t\t<td colspan='2'valign='top'>VAT Deductable Account</td>\n\t\t\t\t\t\t\t\t\t<td colspan='2'>\n\t\t\t\t\t\t\t\t\t\t<input type='radio' name='vatdedacc' value='dt' {$dsel1} />{$acc['topacc']}/{$acc['accnum']} - {$acc['accname']}<br />\n\t\t\t\t\t\t\t\t\t\t<input type='radio' name='vatdedacc' value='ct' {$dsel2} />{$cust['accno']} - {$cust['surname']}\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t"; } db_conn('core'); $get_vatacc = "SELECT accname FROM accounts WHERE accid = '{$vataccid}' LIMIT 1"; $run_vatacc = db_exec($get_vatacc) or errDie("Unable to get vat account details."); if (pg_numrows($run_vatacc) < 1) { $showvatacc = ""; } else { $vatacc_id = pg_fetch_result($run_vatacc, 0, 0); $showvatacc = "\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td colspan='2'>VAT Account</td>\n\t\t\t\t\t\t\t\t<td colspan='3'>{$vatacc_id} <a target='_blank' href='settings/credit-note-accounts.php'>Change Account</a></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t"; } // <tr class='".bg_class()."'> // <td colspan='2'>VAT Account</td> // <td colspan='3'>$vatacc</td> // </tr> $get_vats = "\n\t\t\t\t\t\t" . TBL_BR . "\n\t\t\t\t\t\t<input type='hidden' name='vataccid' value='{$vataccid}'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='5'>VAT Detail</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$showgetvatacc}\n\t\t\t\t\t\t{$showvatacc}\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='2'>VAT Code</td>\n\t\t\t\t\t\t\t<td colspan='3'>{$vatcode_drop}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t" . TBL_BR . "\n\t\t\t\t\t"; } else { $get_vats = "\n\t\t\t\t\t\t<input type='hidden' name='vatinc' value='novat'>\n\t\t\t\t\t\t<input type='hidden' name='vatcode' value='0'>\n\t\t\t\t\t"; } // Layout Details $details = "\n \t\t\t\t<h3>Confirm Credit Note Details</h3>\n \t\t\t\t{$err}\n \t\t\t\t<form action='" . SELF . "' method='POST' name='form'>\n\t\t\t\t <input type='hidden' name='key' value='write'>\n\t\t\t\t\t\t<input type='hidden' name='type' value='1'>\n\t\t\t\t\t\t<input type='hidden' name='date' value='{$date}'>\n\t\t\t\t\t\t<input type='hidden' name='cusnum' value='{$cusnum}'>\n\t\t\t\t <input type='hidden' name='accid' value='{$accid}'>\n\t\t\t\t <input type='hidden' name='accname' value='{$acc['accname']}'>\n\t\t\t\t\t\t<input type='hidden' name='entry' value='{$entry}'>\n\t\t\t\t\t\t<input type='hidden' name='ct_day' value='{$ct_day}'>\n\t\t\t\t <input type='hidden' name='ct_month' value='{$ct_month}'>\n\t\t\t\t <input type='hidden' name='ct_year' value='{$ct_year}'>\n\t\t\t\t <input type='hidden' name='vatinc' value='{$vatinc}'>\n\t\t\t\t <input type='hidden' name='ac' value=''>\n\t\t\t\t <input type='hidden' name='amount' value='{$amount}'>\n\t\t\t\t <input type='hidden' name='refnum' value='{$refnum}'>\n\t\t\t\t <input type='hidden' name='difference' value='" . sprint($amount - $stock_total) . "'>\n\t\t\t\t {$send_stock}\n\t\t\t <table " . TMPL_tblDflts . " width='500'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='3'>Debit</th>\n\t\t\t\t\t\t\t<th colspan='2'>Credit</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$tran}\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t{$show_stock}\n \t\t\t\t\t{$get_vats}\n \t\t\t\t</table>\n \t\t\t\t<table " . TMPL_tblDflts . " width='500'>\n \t\t\t\t\t" . TBL_BR . "\n \t\t\t\t\t<tr>\n \t\t\t\t\t\t<th colspan='2'>Transaction Details</th>\n \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>Transaction Details</td>\n\t\t\t\t\t\t\t<td valign='center'><textarea cols='30' rows='5' name='details'>{$details}</textarea></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$get_gds_note}\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Person Authorising</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='hidden' size='20' name='author' value=" . USER_NAME . ">" . USER_NAME . "</td>\n\t\t\t\t\t\t</tr>\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><input type='submit' name='back' value='« Correction'></td>\n\t\t\t\t\t\t\t<td valign='center' align='right'><input type='submit' value='Confirm »'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t </table>\n\t\t\t </form>"; return $details; }
function write($_POST) { # Get vars extract($_POST); if (isset($back)) { unset($_POST["back"]); return slctacc($_POST); } if (isset($cback)) { return custconfirm($_POST); } # validate input require_lib("validate"); $v = new validate(); foreach ($amount as $key => $value) { if ($value > 0) { continue; } $v->isOk($ctaccid[$key], "num", 1, 50, "Invalid Account to be Credited.[{$key}]"); $v->isOk($dtaccid[$key], "num", 1, 50, "Invalid Account to be Debited.[{$key}]"); $v->isOk($refnum[$key], "num", 1, 10, "Invalid Reference number.[{$key}]"); $v->isOk($amount[$key], "float", 1, 20, "Invalid Amount.[{$key}]"); $v->isOk($descript[$key], "string", 0, 255, "Invalid Details.[{$key}]"); $datea = explode("-", $date[$key]); if (count($datea) == 3) { if (!checkdate($datea[1], $datea[0], $datea[2])) { $v->isOk("dadasdas", "num", 1, 1, "Invalid date."); } } else { $v->isOk("asdasd", "num", 1, 1, "Invalid date."); } $date[$key] = $datea[2] . "-" . $datea[1] . "-" . $datea[0]; } # display errors, if any if ($v->isError()) { $write = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $write .= "<li class='err'>" . $e["msg"] . "</li>"; } $write .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $write; } foreach ($amount as $key => $value) { if ($value <= 0) { continue; } // Accounts details $dtaccRs = get("core", "accname, topacc, accnum", "accounts", "accid", $dtaccid[$key]); $dtacc[$key] = pg_fetch_array($dtaccRs); $ctaccRs = get("core", "accname, topacc, accnum", "accounts", "accid", $ctaccid[$key]); $ctacc[$key] = pg_fetch_array($ctaccRs); $td = $date[$key]; if (isDebtors($dtaccid[$key])) { # Select customer db_connect(); $sql = "SELECT * FROM customers WHERE cusnum = '{$dcusnum[$key]}' AND div = '" . USER_DIV . "'"; $custRslt = db_exec($sql) or errDie("Unable to access databse.", SELF); if (pg_numrows($custRslt) < 1) { return "<li> Invalid Customer ID.</li>"; } else { $cust = pg_fetch_array($custRslt); } # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$cust['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { return "<i class='err'>Department Not Found</i>"; } else { $dept = pg_fetch_array($deptRslt); } db_connect(); # Begin updates pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $sdate = date("Y-m-d"); # record the payment on the statement $sql = "\n\t\t\t\t\tINSERT INTO stmnt (\n\t\t\t\t\t\tcusnum, invid, amount, date, type, st, div, allocation_date\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$cust['cusnum']}', '0', '{$amount[$key]}', '{$td}', '{$descript[$key]}', 'n', '" . USER_DIV . "', '{$td}'\n\t\t\t\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to Insert statement record in Cubit.", SELF); $sql = "\n\t\t\t\t\tINSERT INTO open_stmnt (\n\t\t\t\t\t\tcusnum, invid, amount, balance, date, \n\t\t\t\t\t\ttype, st, div\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$cust['cusnum']}', '0', '{$amount[$key]}', '{$amount[$key]}', '{$td}', \n\t\t\t\t\t\t'{$descript[$key]}', 'n', '" . USER_DIV . "'\n\t\t\t\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to Insert statement record in Cubit.", SELF); # update the customer (make balance more) $sql = "UPDATE customers SET balance = (balance + '{$amount[$key]}') WHERE cusnum = '{$cust['cusnum']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update customer in Cubit.", SELF); # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); # Make ledge record custledger($cust['cusnum'], $ctaccid[$key], $td, $refnum[$key], $descript[$key], $amount[$key], "d"); custDT($amount[$key], $cust['cusnum'], $td); $dtaccid[$key] = $dept['debtacc']; $descript[$key] = $descript[$key] . " - Customer {$cust['surname']}"; } elseif (isCreditors($dtaccid[$key])) { # Select supplier db_connect(); $sql = "SELECT * FROM suppliers WHERE supid = '{$dsupid[$key]}' AND div = '" . USER_DIV . "'"; $suppRslt = db_exec($sql) or errDie("Unable to access databse.", SELF); if (pg_numrows($suppRslt) < 1) { return "<li> Invalid Supplier ID.</li>"; } else { $supp = pg_fetch_array($suppRslt); } # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$supp['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { return "<i class='err'>Department Not Found</i>"; } else { $dept = pg_fetch_array($deptRslt); } db_connect(); # Begin updates pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $edate = date("Y-m-d"); # record the payment on the statement $sql = "\n\t\t\t\t\tINSERT INTO sup_stmnt (\n\t\t\t\t\t\tsupid, edate, ref, cacc, descript, amount, div\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$supp['supid']}', '{$td}', '0', '{$ctaccid[$key]}', '{$descript[$key]}', '-{$amount[$key]}', '" . USER_DIV . "'\n\t\t\t\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to Insert statement record in Cubit.", SELF); # update the supplier (make balance more) $sql = "UPDATE suppliers SET balance = (balance - '{$amount[$key]}') WHERE supid = '{$supp['supid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update supplier in Cubit.", SELF); # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); # Ledger Records suppledger($supp['supid'], $ctaccid[$key], $td, $refnum[$key], $descript[$key], $amount[$key], 'd'); suppDT($amount[$key], $supp['supid'], $td); $dtaccid[$key] = $dept['credacc']; $descript[$key] = $descript[$key] . " - Supplier {$supp['supname']}"; } elseif (isStock($dtaccid[$key])) { # Select Stock db_connect(); $sql = "SELECT * FROM stock WHERE stkid = '{$dstkids[$key]}' AND div = '" . USER_DIV . "'"; $stkRslt = db_exec($sql) or errDie("Unable to access databse.", SELF); if (pg_numrows($stkRslt) < 1) { return "<li> Invalid Stock ID.</li>"; } else { $stk = pg_fetch_array($stkRslt); } # Get warehouse name db_conn("exten"); $sql = "SELECT * FROM warehouses WHERE whid = '{$stk['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); # Update Stock db_connect(); $sql = "UPDATE stock SET csamt = (csamt + '{$amount[$key]}') WHERE stkid = '{$stk['stkid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to insert stock to Cubit.", SELF); $sdate = date("Y-m-d"); # stkid, stkcod, stkdes, trantype, edate, qty, csamt, details stockrec($stk['stkid'], $stk['stkcod'], $stk['stkdes'], 'dt', $td, 0, $amount[$key], "Stock Debit Transaction"); db_connect(); $dtaccid[$key] = $wh['stkacc']; } if (isDebtors($ctaccid[$key])) { # Select customer db_connect(); $sql = "SELECT * FROM customers WHERE cusnum = '{$ccusnum[$key]}' AND div = '" . USER_DIV . "'"; $custRslt = db_exec($sql) or errDie("Unable to access databse.", SELF); if (pg_numrows($custRslt) < 1) { return "<li> Invalid Customer ID.</li>"; } else { $cust = pg_fetch_array($custRslt); } # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$cust['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { return "<i class='err'>Department Not Found</i>"; } else { $dept = pg_fetch_array($deptRslt); } db_connect(); # Begin updates pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $sdate = date("Y-m-d"); # record the payment on the statement $sql = "\n\t\t\t\t\tINSERT INTO stmnt (\n\t\t\t\t\t\tcusnum, invid, amount, date, type, st, div, allocation_date\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$cust['cusnum']}', '0', '-{$amount[$key]}', '{$td}', '{$descript[$key]}', 'n', '" . USER_DIV . "', '{$td}'\n\t\t\t\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to Insert statement record in Cubit.", SELF); $sql = "\n\t\t\t\t\tINSERT INTO open_stmnt (\n\t\t\t\t\t\tcusnum, invid, amount, balance, date, \n\t\t\t\t\t\ttype, st, div\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$cust['cusnum']}', '0', '-{$amount[$key]}', '-{$amount[$key]}', '{$td}', \n\t\t\t\t\t\t'{$descript[$key]}', 'n', '" . USER_DIV . "'\n\t\t\t\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to Insert statement record in Cubit.", SELF); # update the customer (make balance more) $sql = "UPDATE customers SET balance = (balance - '{$amount[$key]}') WHERE cusnum = '{$cust['cusnum']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update customer in Cubit.", SELF); # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); # Make ledge record custledger($cust['cusnum'], $dtaccid[$key], $sdate, $refnum[$key], $descript[$key], $amount[$key], "c"); custCT($amount[$key], $cust['cusnum'], $td); $ctaccid[$key] = $dept['debtacc']; $descript[$key] = $descript[$key] . " - Customer {$cust['surname']}"; } elseif (isCreditors($ctaccid[$key])) { # Select supplier db_connect(); $sql = "SELECT * FROM suppliers WHERE supid = '{$csupid[$key]}' AND div = '" . USER_DIV . "'"; $suppRslt = db_exec($sql) or errDie("Unable to access databse.", SELF); if (pg_numrows($suppRslt) < 1) { return "<li> Invalid Supplier ID.</li>"; } else { $supp = pg_fetch_array($suppRslt); } # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$supp['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { return "<i class='err'>Department Not Found</i>"; } else { $dept = pg_fetch_array($deptRslt); } db_connect(); # Begin updates pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $edate = date("Y-m-d"); # record the payment on the statement $sql = "\n\t\t\t\t\tINSERT INTO sup_stmnt (\n\t\t\t\t\t\tsupid, edate, ref, cacc, descript, amount, div\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$supp['supid']}', '{$td}', '0', '{$dtaccid[$key]}', '{$descript[$key]}', '{$amount[$key]}', '" . USER_DIV . "'\n\t\t\t\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to Insert statement record in Cubit.", SELF); # update the supplier (make balance more) $sql = "UPDATE suppliers SET balance = (balance + '{$amount[$key]}') WHERE supid = '{$supp['supid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update supplier in Cubit.", SELF); # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); # Ledger Records suppledger($supp['supid'], $dtaccid[$key], $edate, $refnum[$key], $descript[$key], $amount[$key], 'c'); suppCT($amount[$key], $supp['supid'], $td); $ctaccid[$key] = $dept['credacc']; $descript[$key] = $descript[$key] . " - Supplier {$supp['supname']}"; } elseif (isStock($ctaccid[$key])) { # Select Stock db_connect(); $sql = "SELECT * FROM stock WHERE stkid = '{$cstkids[$key]}' AND div = '" . USER_DIV . "'"; $stkRslt = db_exec($sql) or errDie("Unable to access databse.", SELF); if (pg_numrows($stkRslt) < 1) { return "<li> Invalid Stock ID.</li>"; } else { $stk = pg_fetch_array($stkRslt); } # Get warehouse name db_conn("exten"); $sql = "SELECT * FROM warehouses WHERE whid = '{$stk['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); # Update Stock db_connect(); $sql = "UPDATE stock SET csamt = (csamt + '{$amount[$key]}') WHERE stkid = '{$stk['stkid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to insert stock to Cubit.", SELF); $sdate = date("Y-m-d"); # stkid, stkcod, stkdes, trantype, edate, qty, csamt, details stockrec($stk['stkid'], $stk['stkcod'], $stk['stkdes'], 'ct', $td, 0, $amount[$key], "Stock Credit Transaction"); db_connect(); $ctaccid[$key] = $wh['stkacc']; } # write transaction writetrans($dtaccid[$key], $ctaccid[$key], $date[$key], $refnum[$key], $amount[$key], $descript[$key]); } // Layout $write = "\n\t\t<center>\n\t\t<h3>Journal transactions have been recorded</h3>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Date</th>\n\t\t\t\t<th>Ref num</th>\n\t\t\t\t<th>Debit</th>\n\t\t\t\t<th>Credit</th>\n\t\t\t\t<th>Amount</th>\n\t\t\t\t<th>Description</th>\n\t\t\t</tr>"; foreach ($amount as $key => $value) { if ($value <= 0) { continue; } if (isDebtors($dtaccid[$key])) { $dcusRs = get("cubit", "*", "customers", "cusnum", $dcusnum[$key]); $dcus = pg_fetch_array($dcusRs); $dt = "<td valign='center'>{$dcus['accno']} - {$dcus['cusname']} {$dcus['surname']}</td>"; } elseif (isCreditors($dtaccid[$key])) { $dsupRs = get("cubit", "*", "suppliers", "supid", $dsupid[$key]); $dsup = pg_fetch_array($dsupRs); $dt = "<td valign='center'>{$dsup['supno']} - {$dsup['supname']}</td>"; } elseif (isStock($dtaccid[$key])) { $dstkRs = get("cubit", "*", "stock", "stkid", $dstkids[$key]); $dstk = pg_fetch_array($dstkRs); $dt = "<td valign='center'>{$dstk['stkcod']} - {$dstk['stkdes']}</td>"; } else { $dt = "<td valign='center'>" . $dtacc[$key]['accname'] . "</td>"; } if (isDebtors($ctaccid[$key])) { $ccusRs = get("cubit", "*", "customers", "cusnum", $ccusnum[$key]); $ccus = pg_fetch_array($ccusRs); $ct = "<td valign='center'>{$ccus['accno']} - {$ccus['cusname']} {$ccus['surname']}</td>"; } elseif (isCreditors($ctaccid[$key])) { $csupRs = get("cubit", "*", "suppliers", "supid", $csupid[$key]); $csup = pg_fetch_array($csupRs); $ct = "<td valign='center'>{$csup['supno']} - {$csup['supname']}</td>"; } elseif (isStock($ctaccid[$key])) { $cstkRs = get("cubit", "*", "stock", "stkid", $cstkids[$key]); $cstk = pg_fetch_array($cstkRs); $ct = "<td valign='center'>{$cstk['stkcod']} - {$cstk['stkdes']}</td>"; } else { $ct = "<td valign='center'>" . $ctacc[$key]['accname'] . "</td>"; } $write .= "\n\t\t\t\t<tr bgcolor=" . bgcolorg() . ">\n\t\t\t\t\t<td>{$date[$key]}</td>\n\t\t\t\t\t<td>{$refnum[$key]}</td>\n\t\t\t\t\t{$dt}\n\t\t\t\t\t{$ct}\n\t\t\t\t\t<td>" . CUR . " {$amount[$key]}</td>\n\t\t\t\t\t<td>{$descript[$key]}</td>\n\t\t\t\t</tr>"; } $write .= "\n\t\t</table>\n\t\t<p>\n\t\t<table " . TMPL_tblDflts . " width='25%'>\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='datacell'>\n\t\t\t\t<td align='center'><a href='../reporting/index-reports.php'>Financials</a></td>\n\t\t\t</tr>\n\t\t\t<tr class='datacell'>\n\t\t\t\t<td align='center'><a href='multi-trans.php'>Journal Transactions</td>\n\t\t\t</tr>\n\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t</table>"; return $write; }
/** * @ignore */ function Control($dtaccid, $ctaccid, $refnum, $day, $mon, $year) { # Check if its not customer control if (isDebtors($dtaccid)) { return debtors("dt", $ctaccid, $refnum, $day, $mon, $year); } if (isDebtors($ctaccid)) { return debtors("ct", $dtaccid, $refnum, $day, $mon, $year); } if (isStock($ctaccid)) { return stock("ct", $dtaccid, $refnum, $day, $mon, $year); } # Check if its not creditors control if (isCreditors($dtaccid)) { return creditors("dt", $ctaccid, $refnum, $day, $mon, $year); } if (isCreditors($ctaccid)) { return creditors("ct", $dtaccid, $refnum, $day, $mon, $year); } if (isStock($dtaccid)) { return stock("dt", $ctaccid, $refnum, $day, $mon, $year); } }