function write($_POST) { # get vars extract($_POST); # validate input require_lib("validate"); $v = new validate(); $v->isOk($purid, "num", 1, 20, "Invalid purchase number."); if (!isset($supid) && !isset($deptid)) { $v->isOk($supacc, "num", 1, 10, "Invalid Supplier Account number."); } $v->isOk($remarks, "string", 0, 255, "Invalid Remarks."); $v->isOk($refno, "string", 0, 255, "Invalid Delivery Reference No."); $v->isOk($shipchrg, "float", 0, 20, "Invalid Delivery Charges."); $pdate = $p_year . "-" . $p_month . "-" . $p_day; if (!checkdate($p_month, $p_day, $p_year)) { $v->isOk($date, "num", 1, 1, "Invalid Date."); } # used to generate errors $error = "asa@"; # check quantities if (isset($qtys)) { foreach ($qtys as $keys => $qty) { $v->isOk($qty, "num", 1, 10, "Invalid Quantity for product number : <b>" . ($keys + 1) . "</b>"); if ($qty > $qts[$keys]) { $v->isOk($qty, "num", 0, 0, "Error : Quantity for product number : <b>" . ($keys + 1) . "</b> is more that Qty Purchased"); } $v->isOk($unitcost[$keys], "float", 1, 20, "Invalid Unit Price for product number : <b>" . ($keys + 1) . "</b>."); if ($qty < 1) { $v->isOk($qty, "num", 0, 0, "Error : Item Quantity must be at least one. Product number : <b>" . ($keys + 1) . "</b>"); } } } # display errors, if any $err = ""; if ($v->isError()) { $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class='err'>" . $e["msg"] . "</li>"; } return details($_POST, $err); } # Get purchase info db_connect(); $sql = "SELECT * FROM nons_purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $purRslt = db_exec($sql) or errDie("Unable to get purchase information"); if (pg_numrows($purRslt) < 1) { return "<li>- purchase Not Found</li>"; } $pur = pg_fetch_array($purRslt); # CHECK IF THIS DATE IS IN THE BLOCKED RANGE $blocked_date_from = getCSetting("BLOCKED_FROM"); $blocked_date_to = getCSetting("BLOCKED_TO"); if (strtotime($pur['pdate']) >= strtotime($blocked_date_from) and strtotime($pur['pdate']) <= strtotime($blocked_date_to) and !user_is_admin(USER_ID)) { return "<li class='err'>Period Range Is Blocked. Only an administrator can process entries within this period.</li>"; } $pur['pdate'] = $p_year . "-" . $p_month . "-" . $p_day; # Get selected supplier info db_connect(); if (isset($supid)) { $sql = "SELECT * FROM suppliers WHERE supid = '{$supid}' AND div = '" . USER_DIV . "'"; $supRslt = db_exec($sql) or errDie("Unable to get supplier"); if (pg_numrows($supRslt) < 1) { $error = "<li class='err'> Supplier not Found.</li>"; $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } else { $sup = pg_fetch_array($supRslt); $pur['supplier'] = $sup['supname']; $pur['supaddr'] = $sup['supaddr']; # Get department info db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$sup['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); } $supacc = $dept['credacc']; } } elseif (isset($deptid)) { db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$deptid}'"; $deptRslt = db_exec($sql) or errDie("Unable to view customers"); if (pg_numrows($deptRslt) < 1) { $error = "<li class='err'> Department not Found."; $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } else { $dept = pg_fetch_array($deptRslt); $supacc = $dept['pca']; } } # check if purchase has been received if ($pur['received'] == "y") { $error = "<li class='err'> Error : purchase number <b>{$purid}</b> has already been received.</li>"; $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $error; } $vatacc = gethook("accnum", "salesacc", "name", "VAT"); $cvacc = gethook("accnum", "pchsacc", "name", "Cost Variance"); # Insert purchase to DB db_connect(); # begin updating pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $refnum = getrefnum(); /*refnum*/ db_connect(); if (isset($qtys)) { # amount of stock in $totstkamt = array(); $resub = 0; # Get subtotal foreach ($qtys as $keys => $value) { # Skip zeros if ($qtys[$keys] < 1) { continue; } $amt[$keys] = $qtys[$keys] * $unitcost[$keys]; } $SUBTOTAL = array_sum($amt); $revat = 0; foreach ($qtys as $keys => $value) { # Get selected stock line $sql = "SELECT * FROM nons_pur_items WHERE cod = '{$cod[$keys]}' AND purid = '{$purid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); # Calculate cost amount bought $amt[$keys] = $qtys[$keys] * $unitcost[$keys]; /* delivery charge */ # Calculate percentage from subtotal $perc[$keys] = $amt[$keys] / $SUBTOTAL * 100; # Get percentage from shipping charges $shipc[$keys] = $perc[$keys] / 100 * $shipchrg; # add delivery charges $amt[$keys] += $shipc[$keys]; /* end delivery charge */ # the subtotal + delivery charges $resub += $amt[$keys]; # calculate vat $svat[$keys] = svat($amt[$keys], $stkd['amt'], $stkd['svat']); db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $Ri = db_exec($Sl) or errDie("Unable to get data."); $vd = pg_fetch_array($Ri); vatr($vd['id'], $pur['pdate'], "INPUT", $vd['code'], $refnum, "Vat for Non-Stock Purchase No. {$pur['purnum']}", -$amt[$keys], -$svat[$keys]); # received vat $revat += $svat[$keys]; # make amount vat free if ($pur['vatinc'] == "yes") { $amt[$keys] = $amt[$keys] - $svat[$keys]; } # Update Order items $sql = "UPDATE nons_pur_items SET rqty = (rqty + '{$qtys[$keys]}') WHERE cod = '{$cod[$keys]}' AND purid='{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to insert Order items to Cubit.", SELF); /* ?: refer to :Code Insert: # keep records for transactions if(isset($totstkamt[$stkacc[$keys]])){ $totstkamt[$stkacc[$keys]] += $amt[$keys]; }else{ $totstkamt[$stkacc[$keys]] = $amt[$keys]; } */ # check if there are any outstanding items $sql = "SELECT * FROM nons_pur_items WHERE purid = '{$purid}' AND (qty - rqty) > '0' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); # if none the set to received if (pg_numrows($stkdRslt) < 1) { # update surch_int(received = 'y') $sql = "UPDATE nons_purchases SET received = 'y', supplier = '{$pur['supplier']}', supaddr = '{$pur['supaddr']}' WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update international Orders in Cubit.", SELF); } } } # Update purchase on the DB if ($pur['part'] == 'y') { # Update purchase on the DB $sql = "UPDATE nons_purchases SET shipchrg = (shipchrg + '{$shipchrg}'), refno = '{$refno}', remarks = '{$remarks}' WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update purchase in Cubit.", SELF); } else { # Update purchase on the DB $sql = "UPDATE nons_purchases SET shipchrg = '{$shipchrg}', refno = '{$refno}', remarks = '{$remarks}' WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update purchase in Cubit.", SELF); } /* Transactions */ /* - Start Hooks - */ /* - End Hooks - */ $detadd = ""; if (isset($supid)) { $detadd = " from Supplier {$sup['supname']}"; } $sdate = $pur['pdate']; /* ?:refer to :Code Insert: # record transaction from data foreach($totstkamt as $stkacc => $wamt){ # Debit Stock and Credit Suppliers control writetrans($stkacc, $supacc, date("d-m-Y"), $refnum, $wamt, "Non-Stock Purchase No. $pur[purnum] Received $detadd."); pettyrec($supacc, $sdate, "ct", "Non-Stock Purchase No. $pur[purnum] Received $detadd.", $wamt, "Cash Purchase"); }*/ # Calc Vat amount on (subtot + delchrg) $vatamt = $revat; # Add vat if not included if ($pur['vatinc'] == 'no') { $retot = $resub + $vatamt; } elseif ($pur['vatinc'] == "novat") { $retot = $resub; $vatamt = 0; } else { $retot = $resub; } # get warehouse name db_conn("exten"); $sql = "SELECT * FROM warehouses WHERE div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $tot_post = 0; if ($vatamt != 0) { $tot_post += $vatamt; # Debit bank and credit the account involved writetrans($vatacc, $supacc, $pdate, $refnum, $vatamt, "Non-Stock Purchase Vat paid on Non-Stock Purchase No. {$pur['purnum']} {$detadd}."); pettyrec($supacc, $sdate, "ct", "Non-Stock Purchase No. {$pur['purnum']} Received {$detadd}.", $vatamt, "Cash Purchase Vat"); # Record the payment on the statement db_connect(); $sdate = $pur['pdate']; } if (isset($supid)) { $DAte = $pur['pdate']; db_connect(); # update the supplier (make balance more) $sql = "UPDATE suppliers SET balance = (balance + '{$retot}') WHERE supid = '{$sup['supid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); $sql = "INSERT INTO sup_stmnt(supid, edate, cacc, amount, descript,ref,ex,div) VALUES('{$sup['supid']}','{$DAte}', '{$dept['credacc']}', '{$retot}','Non-Stock Purchase No. {$pur['purnum']} Received', '{$refnum}', '{$pur['purnum']}','" . USER_DIV . "')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); suppledger($sup['supid'], $wh['stkacc'], $DAte, $pur['purid'], "Non-Stock Purchase No. {$pur['purnum']} received.", $retot, 'c'); db_connect(); # update the supplier age analysis (make balance less) /* Make transaction record for age analysis */ $sql = "INSERT INTO suppurch(supid, purid, pdate, balance, div) VALUES('{$sup['supid']}', '{$pur['purnum']}', '{$DAte}', '{$retot}', '" . USER_DIV . "')"; $purcRslt = db_exec($sql) or errDie("Unable to update int purchases information in Cubit.", SELF); } /* End Transactions */ # commit updating // pglib_transaction ("COMMIT") or errDie("Unable to commit a database transaction.",SELF); /* Update items found in ther linked purchase */ # Get purchase info db_connect(); $sql = "SELECT * FROM nons_purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $purRslt = db_exec($sql) or errDie("Unable to get purchase information"); if (pg_numrows($purRslt) < 1) { return "<li>- purchase Not Found</li>"; } $pur = pg_fetch_array($purRslt); db_conn($pur['spurprd']); $stab = $pur['spurtype'] == "int" ? "purch_int" : "purchases"; $itab = $pur['spurtype'] == "int" ? "purint_items" : "pur_items"; # Get purchase info $sql = "SELECT * FROM {$stab} WHERE purnum = '{$pur['spurnum']}' AND div = '" . USER_DIV . "'"; $spurRslt = db_exec($sql) or errDie("Unable to get purchase information"); if (pg_numrows($spurRslt) < 1) { return "<li> - purchase Not Found</li>"; } $spur = pg_fetch_array($spurRslt); $purs = explode(",", $pur['purs']); $TSUB = 0; foreach ($purs as $purID) { $purID += 0; db_connect(); $sql = "SELECT * FROM purchases WHERE purnum = '{$purID}' AND div = '" . USER_DIV . "'"; $srchRslt = db_exec($sql) or errDie("Unable to retrieve purchases from database."); if (pg_numrows($srchRslt) > 0) { $p = pg_fetch_array($srchRslt); $TSUB += $p['subtot']; $Sl = "SELECT sum(unitcost) -sum(svat) as non FROM pur_items WHERE purid='{$p['purid']}' AND stkid=0"; $Ri = db_exec($Sl) or errDie("Unable to get data."); $pi = pg_fetch_array($Ri); $pi = $pi['non']; } $sql = "SELECT * FROM movpurch WHERE purnum = '{$purID}' AND div = '" . USER_DIV . "'"; $srchRslt = db_exec($sql) or errDie("Unable to retrieve purchases from database."); if (pg_numrows($srchRslt) > 0) { $res = pg_fetch_array($srchRslt); db_conn($res['prd']); $sql = "SELECT * FROM purchases WHERE purnum = '{$purID}' AND div = '" . USER_DIV . "'"; $srchRslt = db_exec($sql) or errDie("Unable to retrieve purchases from database."); if (pg_numrows($srchRslt) > 0) { $p = pg_fetch_array($srchRslt); $TSUB += $p['subtot']; $Sl = "SELECT sum(unitcost)-sum(svat) as non FROM pur_items WHERE purid='{$p['purid']}' AND stkid=0"; $Ri = db_exec($Sl) or errDie("Unable to get data."); $pi = pg_fetch_array($Ri); $pi = $pi['non']; } else { db_conn($res['prd']); $sql = "SELECT * FROM purch_int WHERE purnum = '{$purID}' AND div = '" . USER_DIV . "'"; $srchRslt = db_exec($sql) or errDie("Unable to retrieve purchases from database."); if (pg_numrows($srchRslt) > 0) { $p = pg_fetch_array($srchRslt); $TSUB += $p['subtot']; // $Sl="SELECT sum(unitcost)-sum(svat) as non FROM purint_items WHERE purid='$p[purid]' AND stkid=0"; // // $Ri=db_exec($Sl) or errDie("Unable to get data."); // $pi=pg_fetch_array($Ri); // $pi=$pi['non']; $pi = 0; } } } if (!isset($pi)) { $pi = 0; } $TSUB -= $pi; } $purs = explode(",", $pur['purs']); foreach ($purs as $purID) { $itab = "pur_items"; $purID += 0; //print $purID; db_connect(); $sql = "SELECT * FROM purchases WHERE purnum = '{$purID}' AND div = '" . USER_DIV . "'"; $srchRslt = db_exec($sql) or errDie("Unable to retrieve purchases from database."); if (pg_numrows($srchRslt) > 0) { $pur['spurprd'] = "cubit"; } $sql = "SELECT * FROM movpurch WHERE purnum = '{$purID}' AND div = '" . USER_DIV . "'"; $srchRslt = db_exec($sql) or errDie("Unable to retrieve purchases from database."); if (pg_numrows($srchRslt) > 0) { $res = pg_fetch_array($srchRslt); db_conn($res['prd']); $pur['spurprd'] = $res['prd']; } db_conn($pur['spurprd']); $test = $pur['spurprd']; $test += 0; if ($test != 0) { $s = "SELECT * FROM purchases WHERE purnum = '{$purID}' AND div = '" . USER_DIV . "'"; $q = db_exec($s) or errDie("Unable to retrieve purchases from database."); if (pg_num_rows($q) > 0) { $p = pg_fetch_array($q); $purID = $p['purid']; } else { $s = "SELECT * FROM purch_int WHERE purnum = '{$purID}' AND div = '" . USER_DIV . "'"; $q = db_exec($s) or errDie("Unable to retrieve purchases from database."); if (pg_num_rows($q) > 0) { $p = pg_fetch_array($q); $purID = $p['purid']; $itab = "purint_items"; } } } # Get selected stock $sql = "SELECT * FROM {$itab} WHERE purid = '{$purID}' AND div = '" . USER_DIV . "' AND stkid!=0"; $sstkdRslt = db_exec($sql); while ($sstk = pg_fetch_array($sstkdRslt)) { if ($pur['spurtype'] == "int") { $csamt = sprint($sstk['amt'] / $TSUB * ($retot - $vatamt)); } else { if ($spur['vatinc'] == "yes") { $csamt = sprint(($sstk['amt'] - $sstk['svat']) / $TSUB * ($retot - $vatamt)); } else { $csamt = sprint($sstk['amt'] / $TSUB * ($retot - $vatamt)); } } db_connect(); # get selected stock $sql = "SELECT * FROM stock WHERE stkid = '{$sstk['stkid']}' AND div = '" . USER_DIV . "'"; $stktRslt = db_exec($sql); $stkt = pg_fetch_array($stktRslt); /* Code insert */ # get warehouse name db_conn("exten"); $sql = "SELECT * FROM warehouses WHERE whid = '{$stkt['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $tot_post += $csamt; writetrans($wh['stkacc'], $supacc, $pdate, $refnum, $csamt, "Non-Stock Purchase No. {$pur['purnum']} Received {$detadd}."); /* End code insert */ db_connect(); if ($stkt['units'] != 0) { $sql = "UPDATE stock SET csamt = (csamt + '{$csamt}'), csprice = (csamt/units) WHERE stkid = '{$sstk['stkid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); } else { $sql = "UPDATE stock SET csamt = (csamt + '{$csamt}') WHERE stkid = '{$sstk['stkid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); } $sdate = $pur['pdate']; stockrec($stkt['stkid'], $stkt['stkcod'], $stkt['stkdes'], 'dt', $sdate, 0, $csamt, "Cost Increased with Non Stock Purchase No. {$pur['purnum']}"); # get selected stock db_connect(); $sql = "SELECT * FROM stock WHERE stkid = '{$sstk['stkid']}' AND div = '" . USER_DIV . "'"; $stktRslt = db_exec($sql); $stkt = pg_fetch_array($stktRslt); # $csprice = round(($stk['csamt']/$stk['units']), 2); if ($stkt['units'] > 0) { $csprice = round($stkt['csamt'] / $stkt['units'], 2); } else { $csprice = round($stkt['csprice'], 2); } # update stock(csprice = (csamt/units)) $sql = "UPDATE stock SET csprice = '{$csprice}' WHERE stkid = '{$sstk['stkid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); } } //exit; /* db_conn($pur['spurprd']); # Get selected stock $sql = "SELECT * FROM $itab WHERE purid = '$spur[purid]' AND div = '".USER_DIV."' AND stkid!=0"; $sstkdRslt = db_exec($sql); while($sstk = pg_fetch_array($sstkdRslt)){ if($pur['spurtype'] == "int"){ $csamt = sprint(($sstk['amt']/$TSUB) * ($retot - $vatamt)); }else{ if($spur['vatinc'] == "yes"){ $csamt = sprint((($sstk['amt'] - $sstk['svat'])/$TSUB) * ($retot - $vatamt)); }else{ $csamt = sprint((($sstk['amt'])/$TSUB) * ($retot - $vatamt)); } } db_connect(); # get selected stock $sql = "SELECT * FROM stock WHERE stkid = '$sstk[stkid]' AND div = '".USER_DIV."'"; $stktRslt = db_exec($sql); $stkt = pg_fetch_array($stktRslt); /* Code insert # get warehouse name db_conn("exten"); $sql = "SELECT * FROM warehouses WHERE whid = '$stkt[whid]' AND div = '".USER_DIV."'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $tot_post+=$csamt; writetrans($wh['stkacc'], $supacc, date("d-m-Y"), $refnum, $csamt, "Non-Stock Purchase No. $pur[purnum] Received $detadd."); /* End code insert db_connect(); if($stkt['units'] <> 0){ $sql = "UPDATE stock SET csamt = (csamt + '$csamt'), csprice = (csamt/units) WHERE stkid = '$sstk[stkid]' AND div = '".USER_DIV."'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.",SELF); }else{ $sql = "UPDATE stock SET csamt = (csamt + '$csamt') WHERE stkid = '$sstk[stkid]' AND div = '".USER_DIV."'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.",SELF); } $sdate = $pur['pdate']; stockrec($stkt['stkid'], $stkt['stkcod'], $stkt['stkdes'], 'dt', $sdate, 0, $csamt, "Cost Increased with Non Stock Purchase No. $pur[purnum]"); # get selected stock db_connect(); $sql = "SELECT * FROM stock WHERE stkid = '$sstk[stkid]' AND div = '".USER_DIV."'"; $stktRslt = db_exec($sql); $stkt = pg_fetch_array($stktRslt); # $csprice = round(($stk['csamt']/$stk['units']), 2); if($stkt['units'] > 0){ $csprice = round(($stkt['csamt']/$stkt['units']), 2); }else{ $csprice = round($stkt['csprice'], 2); } # update stock(csprice = (csamt/units)) $sql = "UPDATE stock SET csprice = '$csprice' WHERE stkid = '$sstk[stkid]' AND div = '".USER_DIV."'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.",SELF); } */ $diff = sprint($retot - $tot_post); if ($diff > 0) { writetrans($cvacc, $supacc, $sdate, $refnum, $diff, "Cost Variance for Non stock Purchase No. {$pur['purnum']}"); } elseif ($diff < 0) { writetrans($supacc, $cvacc, $sdate, $refnum, -$diff, "Cost Variance for Non stock Purchase No. {$pur['purnum']}"); } /* End Update items found in ther linked purchase */ /* Start moving if purchase received */ # Get purchase info db_connect(); $sql = "SELECT * FROM nons_purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $purRslt = db_exec($sql) or errDie("Unable to get purchase information"); if (pg_numrows($purRslt) < 1) { return "<li>- purchase Not Found</li>"; } $pur = pg_fetch_array($purRslt); if ($pur['received'] == "y") { if (isset($supid)) { $ctyp = "sup"; $typeid = $supid; } elseif (isset($deptid)) { $ctyp = "led"; $typeid = $deptid; } else { $ctyp = "ot"; $typeid = 0; } # copy purchase db_conn($pur['prd']); $pur['spurprd'] += 0; $pur['spurnum'] += 0; $sql = "INSERT INTO nons_purchases(purid, deptid, supplier, supaddr, terms, pdate, ddate, shipchrg, subtot, total, balance, vatinc, vat, remarks, refno, received, done, div, purnum,ctyp,typeid,spurprd,spurnum)"; $sql .= " VALUES('{$purid}', '{$pur['deptid']}', '{$pur['supplier']}', '{$pur['supaddr']}', '{$pur['terms']}', '{$pur['pdate']}', '{$pur['ddate']}', '{$pur['shipchrg']}', '{$pur['subtot']}', '{$pur['total']}', '0', '{$pur['vatinc']}', '{$pur['vat']}', '{$pur['remarks']}', '{$pur['refno']}', 'y', 'y', '" . USER_DIV . "', '{$pur['purnum']}','{$ctyp}','{$typeid}','{$pur['spurprd']}','{$pur['spurnum']}')"; $rslt = db_exec($sql) or errDie("Unable to insert Non-Stock Purchase to Cubit.", SELF); db_connect(); # Get selected stock $sql = "SELECT * FROM nons_pur_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $stktcRslt = db_exec($sql); while ($stktc = pg_fetch_array($stktcRslt)) { # Insert purchase items db_conn($pur['prd']); $sql = "INSERT INTO nons_pur_items(purid, cod, des, qty, unitcost, amt, ddate, div,svat) VALUES('{$purid}', '{$stktc['cod']}', '{$stktc['des']}', '{$stktc['qty']}', '{$stktc['unitcost']}', '{$stktc['amt']}', '{$stktc['ddate']}', '" . USER_DIV . "','{$stktc['svat']}')"; $rslt = db_exec($sql) or errDie("Unable to insert purchase items to Cubit.", SELF); } db_connect(); # Remove the purchase from running DB $sql = "DELETE FROM nons_purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $delRslt = db_exec($sql) or errDie("Unable to update int purchases information in Cubit.", SELF); # Remove those purchase items from running DB $sql = "DELETE FROM nons_pur_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $delRslt = db_exec($sql) or errDie("Unable to update int purchases information in Cubit.", SELF); } pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); /* End moving purchase received */ $cc = "<script> CostCenter('ct', 'Non-Stock Purchase', '{$pdate}', 'Non Stock Purchase No.{$pur['purnum']}', '" . ($retot - $vatamt) . "', ''); </script>"; // Final Layout $write = "\n\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Non-Stock Purchase received</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Non-Stock Purchase receipt has been recorded.</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\t\t\t\t<p>\n\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Quick Links</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><a href='nons-purchase-view.php'>View purchases</a></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t\t</table>"; return $write; }
function write($_POST) { #get vars extract($_POST); # validate input require_lib("validate"); $v = new validate(); $v->isOk($purid, "num", 1, 20, "Invalid Order number."); $v->isOk($refno, "string", 0, 255, "Invalid Delivery Reference No."); $ddate = $dyear . "-" . $dmon . "-" . $dday; if (!checkdate($dmon, $dday, $dyear)) { $v->isOk($ddate, "num", 1, 1, "Invalid Date."); } # used to generate errors $error = "asa@"; # check quantities if (isset($qtys)) { foreach ($qtys as $keys => $qty) { $v->isOk($qtys[$keys], "num", 1, 10, "Invalid Quantity for product number : <b>" . ($keys + 1) . "</b>"); $v->isOk($unitamts[$keys], "float", 1, 20, "Invalid Unit Price for product number : <b>" . ($keys + 1) . "</b>."); $v->isOk($stkacc[$keys], "num", 1, 10, "Invalid Item Account number : <b>" . ($keys + 1) . "</b>"); } } else { $v->isOk("#", "num", 0, 0, "Error : no products selected."); } $prd += 0; # display errors, if any $err = ""; if ($v->isError()) { $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class='err'>" . $e["msg"] . "</li>"; } return details($_POST, $err); } # Get Order info db_conn($prd); $sql = "SELECT * FROM nons_purch_int WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $purRslt = db_exec($sql) or errDie("Unable to get Order information"); if (pg_numrows($purRslt) < 1) { return "<li>- Order Not Found</li>"; } $pur = pg_fetch_array($purRslt); # Get selected supplier info db_connect(); $sql = "SELECT * FROM suppliers WHERE supid = '{$pur['supid']}' AND div = '" . USER_DIV . "'"; $supRslt = db_exec($sql) or errDie("Unable to get supplier"); if (pg_numrows($supRslt) < 1) { $error = "<li class='err'> Supplier not Found.</li>"; $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } else { $sup = pg_fetch_array($supRslt); $pur['supplier'] = $sup['supname']; $pur['supaddr'] = $sup['supaddr']; # Get department info db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$sup['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); } $supacc = $dept['credacc']; } # Insert Order to DB db_connect(); # begin updating pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); db_connect(); # Update all supplies xchange rate first xrate_update($pur['fcid'], $pur['xrate'], "suppurch", "id"); sup_xrate_update($pur['fcid'], $pur['xrate']); db_connect(); $retax = 0; if (isset($qtys)) { foreach ($qtys as $keys => $value) { # Get selected stock line db_conn($prd); $sql = "SELECT * FROM nons_purint_items WHERE id = '{$ids[$keys]}' AND purid = '{$purid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); # the unitcost + delivery charges * qty $famt[$keys] = sprint($unitamts[$keys] * $qtys[$keys]); # calculate tax $ftaxes[$keys] = svat($famt[$keys], $pur['subtot'], $pur['tax']); $amt[$keys] = sprint($unitamts[$keys] * $pur['xrate'] * $qtys[$keys]); # calculate tax $retax += sprint($ftaxes[$keys] * $pur['xrate']); # Update Order items $sql = "UPDATE nons_purint_items SET rqty = (rqty + '{$qtys[$keys]}'), accid = '{$stkacc[$keys]}' WHERE id = '{$ids[$keys]}' AND purid='{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to insert Order items to Cubit.", SELF); # keep records for transactions if (isset($totstkamt[$stkacc[$keys]])) { $totstkamt[$stkacc[$keys]] += $amt[$keys]; } else { $totstkamt[$stkacc[$keys]] = $amt[$keys]; } } } /* Transactions */ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT"); $refnum = getrefnum(); $sdate = $pur["pdate"]; //$ddate; /* - End Hooks - */ # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { # Debit Stock and Credit Suppliers control writetrans($supacc, $stkacc, date("d-m-Y"), $refnum, $wamt, "Non-Stock Purchase No. {$pur['purnum']} Returned to Supplier {$sup['supname']}."); } db_connect(); $Sl = "SELECT * FROM vatcodes WHERE id='{$pur['cusid']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please select the vatcode for all your stock."; } $vd = pg_fetch_array($Ri); if ($retax > 0) { writetrans($supacc, $vatacc, date("d-m-Y"), $refnum, $retax, "Returned, Non-Stock Purchase Vat paid on Non-Stock Order No. {$pur['purnum']}."); } $retot = sprint(array_sum($amt) + $retax); vatr($vd['id'], $pur['pdate'], "INPUT", $vd['code'], $refnum, "Returned, Non-Stock Purchase Vat paid on Non-Stock Order No. {$pur['purnum']}.", $retot, $retax); $fretot = sprint(array_sum($famt) + array_sum($ftaxes)); suppledger($sup['supid'], $stkacc, $sdate, $pur['purid'], "Returned, Non-Stock Purchase No. {$pur['purnum']} received.", $retot, 'd'); db_connect(); # update the supplier (make balance more) $sql = "UPDATE suppliers SET balance = (balance - '{$retot}'), fbalance = (fbalance - '{$fretot}') WHERE supid = '{$sup['supid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); $sql = "INSERT INTO sup_stmnt(supid, edate, cacc, amount, descript,ref,ex,div) VALUES('{$sup['supid']}','{$sdate}', '{$dept['credacc']}', '-{$fretot}','Returned, Non Stock Purchase No. {$pur['purnum']} Received', '{$refnum}', '{$pur['purnum']}','" . USER_DIV . "')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); db_connect(); # make transaction record for age analysis $sql = "INSERT INTO suppurch(supid, purid, pdate, fcid, balance, fbalance, div) VALUES('{$sup['supid']}', '{$pur['purnum']}', '{$sdate}', '{$pur['fcid']}', '-{$retot}', '-{$fretot}', '" . USER_DIV . "')"; $purcRslt = db_exec($sql) or errDie("Unable to update int Orders information in Cubit.", SELF); # Commit updating pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); db_conn($prd); # check if there are any outstanding items $sql = "SELECT * FROM nons_purint_items WHERE purid = '{$purid}' AND (qty - rqty) > '0' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); # if none the set to received if (pg_numrows($stkdRslt) < 1) { # update surch_int(received = 'y') $sql = "UPDATE nons_purch_int SET received = 'y' WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; //$rslt = db_exec($sql) or errDie("Unable to update international Orders in Cubit.",SELF); } # Update Order on the DB $sql = "UPDATE nons_purch_int SET refno = '{$refno}' WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; //$rslt = db_exec($sql) or errDie("Unable to update Order in Cubit.",SELF); /* End Transactions */ /* Start moving if Order received */ db_conn($prd); # begin updating pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $sql = "SELECT * FROM nons_purch_int WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $purRslt = db_exec($sql) or errDie("Unable to get Order information"); if (pg_numrows($purRslt) < 1) { return "<li>- Order Not Found</li>"; } $pur = pg_fetch_array($purRslt); $rdate = date("Y-m-d"); # copy Order db_conn($prd); $sql = "INSERT INTO rnons_purch_int(purid, deptid, supid, supplier, supaddr, terms, pdate, ddate, shipchrg, xrate, fcid, curr, currency, shipping, subtot, total, balance, tax, remarks, refno, received, done, div, purnum, rdate)"; $sql .= " VALUES('{$purid}', '{$pur['deptid']}', '{$pur['supid']}', '{$pur['supplier']}', '{$pur['supaddr']}', '{$pur['terms']}', '{$pur['pdate']}', '{$pur['ddate']}', '{$pur['shipchrg']}', '{$pur['xrate']}', '{$pur['fcid']}', '{$pur['curr']}', '{$pur['currency']}', '{$pur['shipping']}', '{$pur['subtot']}', '{$pur['total']}', '0', '{$pur['tax']}', '{$pur['remarks']}', '{$pur['refno']}', 'y', 'y', '" . USER_DIV . "', '{$pur['purnum']}', '{$rdate}')"; $rslt = db_exec($sql) or errDie("Unable to insert Non-Stock Order to Cubit.", SELF); db_connect(); db_conn($prd); # get selected stock $sql = "SELECT * FROM nons_purint_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $stktcRslt = db_exec($sql); while ($stktc = pg_fetch_array($stktcRslt)) { # Insert Order items db_conn($prd); $sql = "INSERT INTO rnons_purint_items(purid, cod, des, qty, unitcost, cunitcost, duty, dutyp, amt, accid, div) VALUES('{$purid}', '{$stktc['cod']}', '{$stktc['des']}', '{$stktc['qty']}', '{$stktc['unitcost']}', '{$stktc['cunitcost']}', '{$stktc['duty']}', '{$stktc['dutyp']}', '{$stktc['amt']}', '{$stktc['accid']}', '" . USER_DIV . "')"; $rslt = db_exec($sql) or errDie("Unable to insert Order items to Cubit.", SELF); } db_connect(); # Remove the Order from running DB $sql = "DELETE FROM nons_purch_int WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; //$delRslt = db_exec($sql) or errDie("Unable to update int Orders information in Cubit.",SELF); # Remove those Order items from running DB $sql = "DELETE FROM nons_purint_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; //$delRslt = db_exec($sql) or errDie("Unable to update int Orders information in Cubit.",SELF); # Commit updating pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); /* End moving Order received */ $cc = "<script> CostCenter('dt', 'Returned, International Non-Stock Purchase', '{$pur['pdate']}', 'Returned, Non Stock Purchase No.{$pur['purnum']}', '" . sprint($retot - $retax) . "', ''); </script>"; // Final Layout $write = "{$cc}\n\t<table " . TMPL_tblDflts . ">\n\t\t<tr>\n\t\t\t<th>International Non-Stock Order received</th>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>International Non-Stock Order receipt has been recorded.</td>\n\t\t</tr>\n\t</table>\n\t<p>\n\t<table " . TMPL_tblDflts . ">\n\t\t<tr>\n\t\t\t<th>Quick Links</th>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td><a href='nons-purch-int-view.php'>View International Orders</a></td>\n\t\t</tr>\n\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t</table>"; return $write; }
function bwrite($_POST) { extract($_POST); # validate input require_lib("validate"); $v = new validate(); $v->isOk($purid, "num", 1, 20, "Invalid Order number."); $v->isOk($prd, "num", 1, 20, "Invalid period Database number."); $v->isOk($remarks, "string", 0, 255, "Invalid Remarks."); $v->isOk($refno, "string", 0, 255, "Invalid Delivery Reference No."); $v->isOk($shipchrg, "float", 0, 20, "Invalid Delivery Charges."); $pdate = $p_year . "-" . $p_month . "-" . $p_day; if (!checkdate($p_month, $p_day, $p_year)) { $v->isOk($date, "num", 1, 1, "Invalid Date."); } # used to generate errors $error = "asa@"; # check quantities if (isset($qtys)) { foreach ($qtys as $keys => $qty) { $v->isOk($qty, "num", 1, 10, "Invalid Quantity for product number : <b>" . ($keys + 1) . "</b>"); if ($qty > $qts[$keys]) { $v->isOk($qty, "num", 0, 0, "Error : Quantity for product number : <b>" . ($keys + 1) . "</b> is more that Qty Orderd"); } $v->isOk($unitcost[$keys], "float", 1, 20, "Invalid Unit Price for product number : <b>" . ($keys + 1) . "</b>."); if ($qty < 1) { $v->isOk($qty, "num", 0, 0, "Error : Item Quantity must be at least one. Product number : <b>" . ($keys + 1) . "</b>"); } } } # display errors, if any $err = ""; if ($v->isError()) { $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class='err'>" . $e["msg"] . "</li>"; } return details($_POST, $err); } # Get Order info db_conn($prd); $sql = "SELECT * FROM nons_purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $purRslt = db_exec($sql) or errDie("Unable to get Order information"); if (pg_numrows($purRslt) < 1) { return "<li>- Order Not Found</li>"; } $pur = pg_fetch_array($purRslt); # Get selected supplier info db_connect(); if ($pur['ctyp'] == 's') { $supid = $pur['typeid']; $sql = "SELECT * FROM suppliers WHERE supid = '{$supid}' AND div = '" . USER_DIV . "'"; $supRslt = db_exec($sql) or errDie("Unable to get supplier"); if (pg_numrows($supRslt) < 1) { $error = "<li class='err'> Supplier not Found.</li>"; $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } else { $sup = pg_fetch_array($supRslt); $pur['supplier'] = $sup['supname']; $pur['supaddr'] = $sup['supaddr']; # Get department info db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$sup['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); } $supacc = $dept['credacc']; } } elseif ($pur['ctyp'] == 'c') { $deptid = $pur['typeid']; db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$deptid}'"; $deptRslt = db_exec($sql) or errDie("Unable to view customers"); if (pg_numrows($deptRslt) < 1) { $error = "<li class='err'> Department not Found.</li>"; $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } else { $dept = pg_fetch_array($deptRslt); $supacc = $dept['pca']; } } # Insert Order to DB db_connect(); # begin updating pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); if (isset($qtys)) { # amount of stock in $totstkamt = array(); $resub = 0; # Get subtotal foreach ($qtys as $keys => $value) { # Skip zeros if ($qtys[$keys] < 1) { continue; } $amt[$keys] = $qtys[$keys] * $unitcost[$keys]; } $SUBTOTAL = array_sum($amt); $revat = 0; foreach ($qtys as $keys => $value) { # Get selected stock line $sql = "SELECT * FROM nons_pur_items WHERE id = '{$ids[$keys]}' AND purid = '{$purid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); # Calculate cost amount bought $amt[$keys] = $qtys[$keys] * $unitcost[$keys]; /* delivery charge */ # Calculate percentage from subtotal $perc[$keys] = $amt[$keys] / $SUBTOTAL * 100; # Get percentage from shipping charges $shipc[$keys] = $perc[$keys] / 100 * $shipchrg; # add delivery charges $amt[$keys] += $shipc[$keys]; /* end delivery charge */ # the subtotal + delivery charges $resub += $amt[$keys]; # calculate vat $svat[$keys] = svat($amt[$keys], $stkd['amt'], $stkd['svat']); # received vat $revat += $svat[$keys]; # make amount vat free if ($pur['vatinc'] == "yes") { $amt[$keys] = $amt[$keys] - $svat[$keys]; } # Update Order items $sql = "\n\t\t\t\t\tUPDATE nons_pur_items \n\t\t\t\t\tSET rqty = (rqty + '{$qtys[$keys]}'), accid = '{$stkacc[$keys]}' \n\t\t\t\t\tWHERE id = '{$ids[$keys]}' AND purid='{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to insert Order items to Cubit.", SELF); # keep records for transactions if (isset($totstkamt[$stkacc[$keys]])) { $totstkamt[$stkacc[$keys]] += $amt[$keys]; } else { $totstkamt[$stkacc[$keys]] = $amt[$keys]; } # check if there are any outstanding items $sql = "SELECT * FROM nons_pur_items WHERE purid = '{$purid}' AND (qty - rqty) > '0' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); # if none the set to received if (pg_numrows($stkdRslt) < 1) { # update surch_int(received = 'y') $sql = "\n\t\t\t\t\t\tUPDATE nons_purchases \n\t\t\t\t\t\tSET received = 'y', supplier = '{$pur['supplier']}', supaddr = '{$pur['supaddr']}' \n\t\t\t\t\t\tWHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update international Orders in Cubit.", SELF); } } } # Update Order on the DB if ($pur['part'] == 'y') { # Update Order on the DB $sql = "\n\t\t\t\tUPDATE nons_purchases \n\t\t\t\tSET ctyp = '{$ctyp}', typeid = '{$typeid}', refno = '{$refno}', remarks = '{$remarks}' \n\t\t\t\tWHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update Order in Cubit.", SELF); } else { # Update Order on the DB $sql = "\n\t\t\t\tUPDATE nons_purchases \n\t\t\t\tSET ctyp = '{$ctyp}', typeid = '{$typeid}', refno = '{$refno}', remarks = '{$remarks}' \n\t\t\t\tWHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update Order in Cubit.", SELF); } /* Transactions */ $refnum = getrefnum(date("d-m-Y")); /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT"); /* - End Hooks - */ $detadd = ""; if (isset($supid)) { $detadd = " from Supplier {$sup['supname']}"; } $sdate = $pur['pdate']; $tpp = 0; $ccamt = 0; # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { # Debit Stock and Credit Suppliers control writetrans($stkacc, $supacc, date("d-m-Y"), $refnum, $wamt, "Non-Stock Purchase No. {$pur['purnum']} Received {$detadd}."); pettyrec($supacc, $sdate, "ct", "Non-Stock Purchase No. {$pur['purnum']} Received {$detadd}.", $wamt, "Cash Order"); } # vat $vatamt = $revat; # Add vat if not included if ($pur['vatinc'] == 'no') { $retot = $resub + $vatamt; } elseif ($pur['vatinc'] == "novat") { $retot = $resub; $vatamt = 0; } else { $retot = $resub; } if (isset($supid)) { # Ledger Records $DAte = $pur['pdate']; suppledger($sup['supid'], $stkacc, $DAte, $pur['purid'], "Non-Stock Purchase No. {$pur['purnum']} received.", $retot, 'c'); } if ($vatamt != 0) { # Debit bank and credit the account involved writetrans($vatacc, $supacc, date("d-m-Y"), $refnum, $vatamt, "Non-Stock Purchase VAT paid on Non-Stock Order No. {$pur['purnum']} {$detadd}."); pettyrec($supacc, $sdate, "ct", "Non-Stock Purchase No. {$pur['purnum']} Received {$detadd}.", $vatamt, "Cash Order VAT"); # Record the payment on the statement db_connect(); $sdate = $pur['pdate']; } if (isset($supid)) { $DAte = $pur['pdate']; db_connect(); # update the supplier (make balance more) $sql = "UPDATE suppliers SET balance = (balance + '{$retot}') WHERE supid = '{$sup['supid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); $sql = "\n\t\t\t\tINSERT INTO sup_stmnt (\n\t\t\t\t\tsupid, edate, cacc, amount, descript, ref, ex, div\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$sup['supid']}','{$DAte}', '{$dept['credacc']}', '{$retot}', 'Non Stock Purchase No. {$pur['purnum']} Received', '{$refnum}', '{$pur['purnum']}', '" . USER_DIV . "'\n\t\t\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); db_connect(); # update the supplier age analysis (make balance less) /* Make transaction record for age analysis */ $sql = "\n\t\t\t\tINSERT INTO suppurch (\n\t\t\t\t\tsupid, purid, pdate, balance, div\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$sup['supid']}', '{$pur['purnum']}', '{$DAte}', '{$retot}', '" . USER_DIV . "'\n\t\t\t\t)"; $purcRslt = db_exec($sql) or errDie("Unable to update int Orders information in Cubit.", SELF); } # commit updating pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); /* End Transactions */ /* Start moving if Order received */ # Get Order info db_connect(); $sql = "SELECT * FROM nons_purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $purRslt = db_exec($sql) or errDie("Unable to get Order information"); if (pg_numrows($purRslt) < 1) { return "<li>- Order Not Found</li>"; } $pur = pg_fetch_array($purRslt); if ($pur['received'] == "y") { # copy Order db_conn($pur['prd']); $sql = "\n\t\t\t\tINSERT INTO nons_purchases (\n\t\t\t\t\tpurid, deptid, supplier, supaddr, terms, pdate, ddate, \n\t\t\t\t\tshipchrg, shipping, subtot, total, balance, vatinc, vat, \n\t\t\t\t\tremarks, refno, received, done, ctyp, typeid, div, purnum\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$purid}', '{$pur['deptid']}', '{$pur['supplier']}', '{$pur['supaddr']}', '{$pur['terms']}', '{$pur['pdate']}', '{$pur['ddate']}', \n\t\t\t\t\t'{$pur['shipchrg']}', '{$pur['shipping']}', '{$pur['subtot']}', '{$pur['total']}', '0', '{$pur['vatinc']}', '{$pur['vat']}', \n\t\t\t\t\t'{$pur['remarks']}', '{$pur['refno']}', 'y', 'y', '{$pur['ctyp']}', '{$pur['typeid']}', '" . USER_DIV . "', '{$pur['purnum']}'\n\t\t\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert Non-Stock Order to Cubit.", SELF); db_connect(); # Get selected stock $sql = "SELECT * FROM nons_pur_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $stktcRslt = db_exec($sql); while ($stktc = pg_fetch_array($stktcRslt)) { # Insert Order items db_conn($pur['prd']); $sql = "\n\t\t\t\t\tINSERT INTO nons_pur_items (\n\t\t\t\t\t\tpurid, cod, des, qty, unitcost, amt, \n\t\t\t\t\t\tsvat, ddate, accid, div\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$purid}', '{$stktc['cod']}', '{$stktc['des']}', '{$stktc['qty']}', '{$stktc['unitcost']}', '{$stktc['amt']}', \n\t\t\t\t\t\t'{$stktc['svat']}', '{$stktc['ddate']}', '{$stktc['accid']}', '" . USER_DIV . "'\n\t\t\t\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert Order items to Cubit.", SELF); } db_connect(); # Remove the Order from running DB $sql = "DELETE FROM nons_purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $delRslt = db_exec($sql) or errDie("Unable to update int Orders information in Cubit.", SELF); # Remove those Order items from running DB $sql = "DELETE FROM nons_pur_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $delRslt = db_exec($sql) or errDie("Unable to update int Orders information in Cubit.", SELF); } /* End moving Order received */ $cc = "<script> CostCenter('ct', 'Non-Stock Purchase', '{$pur['pdate']}', 'Non Stock Purchase No.{$pur['purnum']}', '" . ($retot - $vatamt) . "', ''); </script>"; // Final Layout $write = "\n\t\t{$cc}\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Non-Stock Order received</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Non-Stock Order receipt has been recorded.</td>\n\t\t\t</tr>\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='nons-purchase-view.php'>View Orders</a></td>\n\t\t\t</tr>\n\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t</table>"; return $write; }
function write($_POST) { # Get vars extract($_POST); # validate input require_lib("validate"); $v = new validate(); $v->isOk($purid, "num", 1, 20, "Invalid Order number."); $v->isOk($remarks, "string", 0, 255, "Invalid Remarks."); $v->isOk($refno, "string", 0, 255, "Invalid Delivery Reference No."); $v->isOk($shipchrg, "float", 0, 20, "Invalid Delivery Charges."); # used to generate errors $error = "asa@"; # check quantities if (isset($recvd)) { foreach ($recvd as $sk => $keys) { $v->isOk($qtys[$keys], "num", 1, 10, "Invalid Quantity for product number : <b>" . ($keys + 1) . "</b>"); $v->isOk($unitcost[$keys], "float", 1, 20, "Invalid Unit Price for product number : <b>" . ($keys + 1) . "</b>."); if ($qtys[$keys] < 1) { $v->isOk("#", "num", 0, 0, "Error : Item Quantity must be at least one. Product number : <b>" . ($keys + 1) . "</b>"); } if ($qtys[$keys] > $qts[$keys]) { $v->isOk("#", "num", 0, 0, "Error : Item Quantity returned is more than the bought quantity : <b>" . ($keys + 1) . "</b>"); } $v->isOk($stkids[$keys], "num", 1, 10, "Invalid Stock number, please enter all details."); # Validate ddate[] $v->isOk($d_day[$keys], "num", 1, 2, "Invalid Delivery Date day."); $v->isOk($d_month[$keys], "num", 1, 2, "Invalid Delivery Date month."); $v->isOk($d_year[$keys], "num", 1, 5, "Invalid Delivery Date year."); $ddate[$keys] = $d_year[$keys] . "-" . $d_month[$keys] . "-" . $d_day[$keys]; if (!checkdate($d_month[$keys], $d_day[$keys], $d_year[$keys])) { $v->isOk($ddate[$keys], "num", 1, 1, "Invalid Delivery Date."); } } if (isset($sers)) { foreach ($sers as $stkid => $sernos) { if (!ext_isUnique(ext_remBlnk($sernos))) { $v->isOk("error", "num", 1, 1, "Error : Serial numbers must be unique per Stock Item."); } else { foreach ($recvd as $sk => $keys) { if (isset($sernos[$keys]) && $v->isOk($sernos[$keys], "string", 1, 20, "Error : Invalid Serial number.")) { if (ext_findSer($sernos[$keys]) != false) { $v->isOk("#", "string", 1, 20, "Error : Serial number already exists."); } } } } } } } else { $v->isOk("#", "num", 0, 0, "Error : Items Not Selected."); } /* check quantities if(isset($qtys)){ foreach($qtys as $keys => $qty){ $v->isOk ($qty, "num", 1, 10, "Invalid Quantity for product number : <b>".($keys+1)."</b>"); $v->isOk ($unitcost[$keys], "float", 1, 20, "Invalid Unit Price for product number : <b>".($keys+1)."</b>."); if($qty > $qts[$keys]){ $v->isOk ($qty, "num", 0, 0, "Error : Item Quantity returned is more than the bought quantity : <b>".($keys+1)."</b>"); } } } # check stkids if(isset($stkids)){ foreach($stkids as $keys => $stkid){ $v->isOk ($stkid, "num", 1, 10, "Invalid Stock number, please enter all details."); } }*/ # display errors, if any $err = ""; if ($v->isError()) { $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class='err'>" . $e["msg"] . "</li>"; } return details($_POST, $err); } # Get purchase info db_connect(); $sql = "SELECT * FROM purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $purRslt = db_exec($sql) or errDie("Unable to get Order information"); if (pg_numrows($purRslt) < 1) { return "<li> - Order Not Found</li>"; } $pur = pg_fetch_array($purRslt); # check if purchase has been received if ($pur['received'] == "y") { $error = "<li class='err'> Error : Order number <b>{$purid}</b> has already been received.</li>"; $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $error; } # Get department info db_conn("exten"); $sql = "SELECT deptname FROM departments WHERE deptid = '{$pur['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { $dept['deptname'] = "<i class='err'>Not Found</i>"; } else { $dept = pg_fetch_array($deptRslt); } core_connect(); # Get Petty cash account $cashacc = gethook("accnum", "bankacc", "name", "Petty Cash"); # Insert purchase to DB db_connect(); # Begin updating pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); # amount of stock in $totstkamt = array(); $resub = 0; $taxex = 0; $revat = 0; # Get subtotal foreach ($recvd as $sk => $keys) { # Skip zeros if ($qtys[$keys] < 1) { continue; } $amt[$keys] = $qtys[$keys] * $unitcost[$keys]; } $SUBTOTAL = array_sum($amt); foreach ($recvd as $sk => $keys) { # Skip zeros if ($qtys[$keys] < 1) { continue; } # get selamt from selected stock $sql = "SELECT * FROM stock WHERE stkid = '{$stkids[$keys]}' AND div = '" . USER_DIV . "'"; $stkRslt = db_exec($sql); $stk = pg_fetch_array($stkRslt); # Get selected stock line $sql = "SELECT * FROM pur_items WHERE id = '{$ids[$keys]}' AND purid = '{$purid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); # Calculate cost amount bought $amt[$keys] = $qtys[$keys] * $unitcost[$keys]; /* delivery charge */ # Calculate percentage from subtotal $perc[$keys] = $amt[$keys] / $SUBTOTAL * 100; # Get percentage from shipping charges $shipc[$keys] = $perc[$keys] / 100 * $shipchrg; # Add delivery charges $amt[$keys] += $shipc[$keys]; /* end delivery charge */ # the subtotal + delivery charges $resub += $amt[$keys]; # Check Tax Excempt if ($stk['exvat'] == 'yes') { # how much is not vatable? $taxex += $amt[$keys]; } else { # Line vat $svat[$keys] = svat($amt[$keys], $stkd['amt'], $stkd['svat']); # received vat $revat += $svat[$keys]; # make amount vat free if ($pur['vatinc'] == "yes") { $amt[$keys] = $amt[$keys] - $svat[$keys]; } } # Update purchase items $sql = "UPDATE pur_items SET rqty = (rqty + '{$qtys[$keys]}'), ddate = '{$ddate[$keys]}' WHERE id = '{$ids[$keys]}' AND purid='{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to insert Order items to Cubit.", SELF); # Update stock(ordered + qty, units + qty, csamt + (csamt + amt)) $sql = "UPDATE stock SET ordered = (ordered - '{$qtys[$keys]}'), units = (units + '{$qtys[$keys]}'), csamt = (csamt + '{$amt[$keys]}') WHERE stkid = '{$stkids[$keys]}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); if (isset($sers[$stkids[$keys]][$keys])) { ext_InSer($sers[$stkids[$keys]][$keys], $stkids[$keys], $pur['supname'], $pur['purnum'], "pur", $pur['pdate']); $serial = $sers[$stkids[$keys]][$keys]; db_connect(); $sql = "INSERT INTO pserec(purid, purnum, stkid, serno, div)\n\t\t\t\tVALUES('{$purid}', '{$pur['purnum']}', '{$stkids[$keys]}', '{$serial}', '" . USER_DIV . "')"; $rslt = db_exec($sql) or errDie("Unable to update stock serials in Cubit.", SELF); } # Keep records for transactions if (isset($totstkamt[$stk['whid']])) { $totstkamt[$stk['whid']] += $amt[$keys]; } else { $totstkamt[$stk['whid']] = $amt[$keys]; } # Get selected stock $sql = "SELECT * FROM stock WHERE stkid = '{$stkids[$keys]}' AND div = '" . USER_DIV . "'"; $stkRslt = db_exec($sql); $stk = pg_fetch_array($stkRslt); # stkid, stkcod, stkdes, trantype, edate, qty, csamt, details $sdate = date("Y-m-d"); stockrec($stk['stkid'], $stk['stkcod'], $stk['stkdes'], 'dt', $sdate, $qtys[$keys], $amt[$keys], "Stock Received from Supplier : {$pur['supname']} - Order No. {$pur['purnum']}"); db_connect(); $cspric = sprint($amt[$keys] / $qtys[$keys]); $sql = "INSERT INTO stockrec(edate, stkid, stkcod, stkdes, trantype, qty, csprice, csamt, details, div)\n\t\t\tVALUES('{$sdate}', '{$stk['stkid']}', '{$stk['stkcod']}', '{$stk['stkdes']}', 'purchase', '{$qtys[$keys]}', '{$amt[$keys]}', '{$cspric}', 'Stock Received from Supplier : {$pur['supname']} - Order No. {$pur['purnum']}', '" . USER_DIV . "')"; $recRslt = db_exec($sql); # Just wanted to fix the xxx.xxxxxxe-x value if ($stk['units'] > 0) { $csprice = round($stk['csamt'] / $stk['units'], 2); } else { $csprice = round($stk['csprice'], 2); } # update stock(csprice = (csamt/units)) $sql = "UPDATE stock SET csprice = '{$csprice}', lcsprice = '{$cspric}' WHERE stkid = '{$stkids[$keys]}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); # check if there are any outstanding items $sql = "SELECT * FROM pur_items WHERE purid = '{$purid}' AND (qty - rqty) > '0' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); # if none the set to received if (pg_numrows($stkdRslt) < 1) { # update surch_int(received = 'y') $sql = "UPDATE purchases SET received = 'y' WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update Orders in Cubit.", SELF); } } if (strlen($refno) > 0) { if (strlen($pur['refno']) > 0) { $refno = "{$pur['refno']}-{$refno}"; } else { $refno = $refno; } } else { $refno = $pur['refno']; } # Update purchase on the DB if ($pur['part'] == 'y') { $sql = "UPDATE purchases SET shipchrg = (shipchrg + '{$shipchrg}'), refno = '{$refno}', remarks = '{$remarks}', edit = 1 WHERE purid = '{$purid}'"; } else { $sql = "UPDATE purchases SET shipchrg = '{$shipchrg}', part = 'y', refno = '{$refno}', remarks = '{$remarks}', edit = 1 WHERE purid = '{$purid}'"; } $rslt = db_exec($sql) or errDie("Unable to update Order in Cubit.", SELF); /* Transactions */ $refnum = getrefnum(date("d-m-Y")); /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT"); /* - End Hooks - */ $tpp = 0; # Record transaction from data foreach ($totstkamt as $whid => $wamt) { # Get whouse info db_conn("exten"); $sql = "SELECT stkacc FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); # Debit Stock and Petty Cash acc writetrans($wh['stkacc'], $cashacc, date("d-m-Y"), $refnum, $wamt, "Stock Received for Purchase No. {$pur['purid']} from Supplier : {$pur['supname']}."); } # Calc Vat amount on (subtot + delchrg) # $vatamt = vat(($resub - $taxex), $pur['vatinc']); $vatamt = $revat; # Add vat if not included if ($pur['vatinc'] == 'no') { $retot = $resub + $vatamt; } else { $retot = $resub; } # Transfer vat writetrans($vatacc, $cashacc, date("d-m-Y"), $refnum, $vatamt, "Vat Paid for Purchase No. {$pur['purid']} from Supplier : {$pur['supname']}."); db_connect(); # Record tranfer for patty cash report $sdate = date("Y-m-d"); $sql = "INSERT INTO pettyrec(date, type, det, amount, name, div) VALUES ('{$sdate}', 'Req', 'Cash Payment for Stock Received on Purchase No. {$pur['purid']} from Supplier : {$pur['supname']}.', '-{$retot}', 'Petty Cash Purchase', '" . USER_DIV . "')"; $Rslt = db_exec($sql) or errDie("Unable to add bank payment to database.", SELF); /* Start moving if purchase received */ # Get purchase info db_connect(); $sql = "SELECT * FROM purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $purRslt = db_exec($sql) or errDie("Unable to get Order information"); if (pg_numrows($purRslt) < 1) { return "<li> - Order Not Found</li>"; } $pur = pg_fetch_array($purRslt); if ($pur['received'] == "y") { # copy purchase db_conn($pur['prd']); $sql = "INSERT INTO purchases(purid, deptid, supid, supname, supaddr, supno, terms, pdate, ddate, shipchrg, subtot, total, balance, vatinc, vat, remarks, refno, received, done, div, purnum)"; $sql .= " VALUES('{$purid}', '{$pur['deptid']}', '{$pur['supid']}', '{$pur['supname']}', '{$pur['supaddr']}', '{$pur['supno']}', '{$pur['terms']}', '{$pur['pdate']}', '{$pur['ddate']}', '{$pur['shipchrg']}', '{$pur['subtot']}', '{$pur['total']}', '0', '{$pur['vatinc']}', '{$pur['vat']}', '{$pur['remarks']}', '{$pur['refno']}', 'y', 'y', '" . USER_DIV . "', '{$pur['purnum']}')"; $rslt = db_exec($sql) or errDie("Unable to insert Order to Cubit.", SELF); db_connect(); # Get selected stock $sql = "SELECT * FROM pur_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $stktcRslt = db_exec($sql); while ($stktc = pg_fetch_array($stktcRslt)) { # Insert purchase items db_conn($pur['prd']); $sql = "INSERT INTO pur_items(purid, whid, stkid, qty, rqty, unitcost, amt, ddate, div) VALUES('{$purid}', '{$stktc['whid']}', '{$stktc['stkid']}', '{$stktc['qty']}', '{$stktc['rqty']}', '{$stktc['unitcost']}', '{$stktc['amt']}', '{$stktc['ddate']}', '" . USER_DIV . "')"; $rslt = db_exec($sql) or errDie("Unable to insert Order items to Cubit.", SELF); } db_connect(); # Remove the purchase from running DB $sql = "DELETE FROM purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $delRslt = db_exec($sql) or errDie("Unable to update int Order information in Cubit.", SELF); # Record where purchase is $sql = "INSERT INTO movpurch(purtype, purnum, prd, div) VALUES('loc', '{$pur['purnum']}', '{$pur['prd']}', '" . USER_DIV . "')"; $movRslt = db_exec($sql) or errDie("Unable to update int Order information in Cubit.", SELF); # Remove those purchase items from running DB $sql = "DELETE FROM pur_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $delRslt = db_exec($sql) or errDie("Unable to update Order information in Cubit.", SELF); } # commit updating pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); /* End moving purchase received */ // Final Layout $write = "\n\t<table " . TMPL_tblDflts . ">\n\t\t<tr>\n\t\t\t<th>Order received</th>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Order receipt from Supplier <b>{$pur['supname']}</b> has been recorded.</td>\n\t\t</tr>\n\t</table>\n\t<p>\n\t<table " . TMPL_tblDflts . ">\n\t\t<tr>\n\t\t\t<th>Quick Links</th>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td><a href='purchase-view.php'>View Orders</a></td>\n\t\t</tr>\n\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t</table>"; return $write; }
function process_entries($_POST) { extract($_POST); # CHECK IF THIS DATE IS IN THE BLOCKED RANGE $blocked_date_from = getCSetting("BLOCKED_FROM"); $blocked_date_to = getCSetting("BLOCKED_TO"); db_connect(); pglib_transaction("BEGIN") or errDie("Unable to start transaction."); $vatacc = gethook("accnum", "salesacc", "name", "VAT"); $vatinc = "yes"; #remove any selected entries foreach ($ids as $keys => $value) { if (isset($remids[$keys]) and $remids[$keys] == $value) { db_connect(); #now remove this entry $rem_sql = "DELETE FROM purch_batch_entries WHERE id = '{$ids[$keys]}'"; $run_rem = db_exec($rem_sql) or errDie("Unable to remove processed batch entry."); continue; } } db_connect(); #first we get the suppliers involved $get_sup = "SELECT distinct(supplier) FROM purch_batch_entries"; $run_sup = db_exec($get_sup) or errDie("Unable to get supplier information."); if (pg_numrows($run_sup) < 1) { return get_items($_POST, "<li class='err'>Please Add At Least One Item.</li>"); } else { while ($sarr0 = pg_fetch_array($run_sup)) { #get this supplier's name $get_supp = "SELECT supname,supaddr FROM suppliers WHERE supid = '{$sarr0['supplier']}' LIMIT 1"; $run_supp = db_exec($get_supp) or errDie("Unable to get supplier information."); if (pg_numrows($run_supp) < 1) { $supname = ""; $supaddr = ""; } else { $sarr = pg_fetch_array($run_supp); $supname = $sarr['supname']; $supaddr = $sarr['supaddr']; } #get distinct invs $get_inv = "SELECT distinct (supinv) FROM purch_batch_entries WHERE supplier = '{$sarr0['supplier']}'"; $run_inv = db_exec($get_inv) or errDie("Unable to get batch entries."); if (pg_numrows($run_inv) < 1) { return get_items($_POST, "<li class='err'>Please Add At Least One Item.</li>"); } else { while ($earr = pg_fetch_array($run_inv)) { #get the info + each entry = new line item $get_items = "SELECT * FROM purch_batch_entries WHERE supplier = '{$sarr0['supplier']}' AND supinv = '{$earr['supinv']}'"; $run_items = db_exec($get_items) or errDie("Unable to get purchase information."); if (pg_numrows($run_items) < 1) { return get_items($_POST, "<li class='err'>Please Add At Least One Item.</li>"); } else { $total = 0; while ($arr1 = pg_fetch_array($run_items)) { if (strtotime($arr1['pdate']) >= strtotime($blocked_date_from) and strtotime($arr1['pdate']) <= strtotime($blocked_date_to) and !user_is_admin(USER_ID)) { return "<li class='err'>Period Range Is Blocked. Only an administrator can process entries within this period.</li>"; } #calculate the total $total = $total + $arr1['qty'] * $arr1['price']; $pdate = $arr1['pdate']; $ddate = $arr1['pdate']; } } #get the info + each entry = new line item $get_items = "SELECT * FROM purch_batch_entries WHERE supplier = '{$sarr0['supplier']}' AND supinv = '{$earr['supinv']}'"; $run_items = db_exec($get_items) or errDie("Unable to get purchase information."); if (pg_numrows($run_items) < 1) { return get_items($_POST, "<li class='err'>Please Add At Least One Item.</li>"); } else { #################[ write the non stock purchase ]################ $remarks = ""; $supaddr = ""; $terms = "0"; $total = 0; $subtot = 0; // $pdate = "$dates_year[$keys]-$dates_month[$keys]-$dates_day[$keys]"; // $ddate = $arr['sdate']; $shipchrg = "0.00"; $purnum = divlastid("pur", USER_DIV); $typeid = 0; if (!isset($ctyp)) { $ctyp = "s"; } //old ... //'$sarr0[supplier]','2','$supname','$supaddr','$terms', # Insert Order to DB $sql = "\n\t\t\t\t\t\t\t\tINSERT INTO nons_purchases (\n\t\t\t\t\t\t\t\t\tsupid, deptid, supplier, supaddr, terms, pdate, ddate, \n\t\t\t\t\t\t\t\t\tshipchrg, subtot, total, balance, vatinc, vat, remarks, received, done, \n\t\t\t\t\t\t\t\t\tprd, div, purnum, ctyp, typeid\n\t\t\t\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t\t\t\t'{$sarr0['supplier']}', '2', '{$supname}', '{$supaddr}', '{$terms}', '{$pdate}', '{$ddate}', \n\t\t\t\t\t\t\t\t\t'{$shipchrg}', '{$subtot}', '{$total}', '{$total}', 'yes', '0', '{$remarks}', 'n', 'n', \n\t\t\t\t\t\t\t\t\t'" . PRD_DB . "', '" . USER_DIV . "', '{$purnum}', '{$ctyp}', '{$typeid}'\n\t\t\t\t\t\t\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert Non-Stock Order to Cubit.", SELF); ################################################################# $refnum = getrefnum(); $resub = 0; $totstkamt = array(); $revat = 0; #######[ NOW WRITE THE ITEMS ]######## while ($arr1 = pg_fetch_array($run_items)) { if (!in_array("{$arr1['id']}", $ids)) { } $darr = explode("-", $arr1['pdate']); $suppliers[$keys] = $arr1['supplier']; $accounts[$keys] = $arr1['account']; $dates_year[$keys] = $darr[0]; $dates_month[$keys] = $darr[1]; $dates_day[$keys] = $darr[2]; $vatcodes[$keys] = $arr1['vatcode']; $supinvs[$keys] = $arr1['supinv']; $descriptions[$keys] = $arr1['description']; $qtys[$keys] = $arr1['qty']; $prices[$keys] = $arr1['price']; # Get next ordnum $purid = lastpurid(); $novat[$keys] = "1"; # Calculate amount $amt[$keys] = $qtys[$keys] * $prices[$keys]; $tv = $vatinc; db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$vatcodes[$keys]}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return get_items($_POST, "<li class='err'>Please select the vatcode for all your items.</li>"); } $vd = pg_fetch_array($Ri); $VATP = $vd['vat_amount']; if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") { $showvat = FALSE; } # Check Tax Excempt if ($vd['zero'] == "Yes") { $vat[$keys] = 0; $vatinc = "novat"; } if (isset($novat[$keys]) || strlen($vat[$keys]) < 1) { # If vat is not included if ($vatinc == "no") { $vat[$keys] = sprint($VATP / 100 * $amt[$keys]); } elseif ($vatinc == "yes") { $vat[$keys] = sprint($amt[$keys] / (100 + $VATP) * $VATP); } else { $vat[$keys] = 0; } } if ($vatinc == "novat") { $vat[$keys] = 0; } if ($vatinc != "novat") { # If vat is not included if ($vatinc == "no") { $vat[$keys] = sprintf("%01.2f", $VATP / 100 * $amt[$keys]); } else { $vat[$keys] = sprintf("%01.2f", $amt[$keys] / ($VATP + 100) * $VATP); } } $vatinc = $tv; # insert Order items $sql = "\n\t\t\t\t\t\t\t\t\tINSERT INTO nons_pur_items (\n\t\t\t\t\t\t\t\t\t\tpurid, cod, des, \n\t\t\t\t\t\t\t\t\t\tqty, unitcost, amt, \n\t\t\t\t\t\t\t\t\t\tsvat, ddate, div, vatcode\n\t\t\t\t\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t\t\t\t\t'{$purid}', '{$supinvs[$keys]}', '{$descriptions[$keys]}', \n\t\t\t\t\t\t\t\t\t\t'{$qtys[$keys]}', '{$prices[$keys]}', '{$amt[$keys]}', \n\t\t\t\t\t\t\t\t\t\t'{$vat[$keys]}', '{$ddate}', '" . USER_DIV . "','{$vatcodes[$keys]}'\n\t\t\t\t\t\t\t\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert Order items to Cubit.", SELF); //FP $itemid = pglib_lastid("nons_pur_items", "id"); $SUBTOT = ""; $TOTAL = ""; # calculate subtot if (isset($amt[$keys])) { $SUBTOT = $amt[$keys]; } else { $SUBTOT = 0.0; } # If there vatable items if (isset($vat[$keys])) { $VAT = $vat[$keys]; } else { $VAT = 0; } # Total $TOTAL = $SUBTOT; # If vat is not included if ($vatinc == "no") { $TOTAL = $TOTAL + $VAT; } else { $TOTAL = $TOTAL; $SUBTOT -= $VAT; } # insert Order to DB $sql = "\n\t\t\t\t\t\t\t\t\tUPDATE nons_purchases \n\t\t\t\t\t\t\t\t\tSET terms = '{$terms}', \n\t\t\t\t\t\t\t\t\t\tsubtot = subtot + '{$SUBTOT}', total = total + '{$TOTAL}',\n\t\t\t\t\t\t\t\t\t\tbalance = balance + '{$TOTAL}', vatinc = 'yes', vat = vat + '{$VAT}',\n\t\t\t\t\t\t\t\t\t\tsupinv='{$supinvs[$keys]}'\n\t\t\t\t\t\t\t\t\tWHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update Order in Cubit.", SELF); #####################[ BEGIN PROCESSING ]####################### db_connect(); $td = $pdate; # amount of stock in $amt[$keys] = $qtys[$keys] * $prices[$keys]; $SUBTOTAL = $amt[$keys]; # Get selected stock line $sql = "SELECT * FROM nons_pur_items WHERE purid = '{$purid}' AND id = '{$itemid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); # Calculate cost amount bought $amt[$keys] = $qtys[$keys] * $prices[$keys]; /* delivery charge */ # Calculate percentage from subtotal $perc[$keys] = $amt[$keys] / $SUBTOTAL * 100; /* end delivery charge */ # the subtotal + delivery charges $resub += $amt[$keys]; # calculate vat $svat[$keys] = svat($amt[$keys], $stkd['amt'], $stkd['svat']); db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $Ri = db_exec($Sl) or errDie("Unable to get data."); $vd = pg_fetch_array($Ri); vatr($vd['id'], $pdate, "INPUT", $vd['code'], $refnum, "VAT for Non-Stock Purchase No. {$purnum}", -$amt[$keys], -$svat[$keys]); # received vat $revat += $svat[$keys]; # make amount vat free $amt[$keys] = $amt[$keys] - $svat[$keys]; # keep records for transactions if (isset($totstkamt[$accounts[$keys]])) { $totstkamt[$accounts[$keys]] += $amt[$keys]; } else { $totstkamt[$accounts[$keys]] = $amt[$keys]; } # check if there are any outstanding items $sql = "SELECT * FROM nons_pur_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; // the old method check for this .. we receive everything NOW so we dont need this AND (qty - rqty) > '0' AND div = '".USER_DIV."'"; $stkdRslt = db_exec($sql); # if none the set to received if (pg_numrows($stkdRslt) < 1) { //NO items were found ... problem somewhere } else { # update surch_int(received = 'y') $sql = "UPDATE nons_purchases SET received = 'y' WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update international Orders in Cubit.", SELF); // while ($uniarr1 = pg_fetch_array($stkdRslt)){ # Update Order items $sql = "UPDATE nons_pur_items SET rqty = (rqty + '{$qtys[$keys]}'), accid = '{$accounts[$keys]}' WHERE purid='{$purid}' AND div = '" . USER_DIV . "' AND id = '{$itemid}'"; $rslt = db_exec($sql) or errDie("Unable to insert Order items to Cubit.", SELF); // } } # Update Order on the DB $sql = "UPDATE nons_purchases SET typeid = '2', refno = '', remarks = '{$remarks}' WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update Order in Cubit.", SELF); /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT"); if (isset($suppliers[$keys])) { $typeid = $suppliers[$keys]; db_connect(); $sql = "SELECT * FROM suppliers WHERE supid = '{$suppliers[$keys]}' AND div = '" . USER_DIV . "'"; $supRslt = db_exec($sql) or errDie("Unable to get supplier"); if (pg_numrows($supRslt) < 1) { $error = "<li class='err'> Supplier not Found.</li>"; $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } else { $sup = pg_fetch_array($supRslt); $pur['supplier'] = $sup['supname']; $pur['supaddr'] = $sup['supaddr']; # Get department info db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$sup['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); } $supacc = $dept['credacc']; } } /* - End Hooks - */ ### DATA SET 2 WAS HERE ##################################################################################### //pglib_transaction("COMMIT") or errDie("Unable to complete transaction."); #received so now move //pglib_transaction("BEGIN") or errDie("Unable to start transaction."); ## move stuff went here ##################################################################################### db_connect(); // $sql = "SELECT * FROM bankacct WHERE btype != 'int' AND div = '".USER_DIV."' LIMIT 1"; // $banks = db_exec($sql); // if(pg_numrows($banks) < 1){ // return "<li class='err'> There are no accounts held at the selected Bank. // <p><input type='button' onClick='JavaScript:history.back();' value='« Correct Selection'>"; // } // $barr = pg_fetch_array($banks); // $bankid = $barr['bankid']; // core_connect(); // $sql = "SELECT * FROM bankacc WHERE accid = '$bankid' AND div = '".USER_DIV."'"; // $rslt = db_exec($sql) or errDie("Unable to retrieve bank account link from Cubit",SELF); // # Check if link exists // if(pg_numrows($rslt) <1){ // return "<li class='err'> ERROR : The bank account that you selected doesn't appear to have an account linked to it."; // } // $banklnk = pg_fetch_array($rslt); // $cc_trantype = cc_TranTypeAcc($arr1['account'], $banklnk['accnum']); // // if(($arr1['project_id'] == 0) OR (strlen($arr1['project_code']) < 1) OR (strlen($arr1['center_code']) < 1) OR (strlen($arr1['center_perc']) < 1)){ // $cc = " // <script> // CostCenter('$cc_trantype', 'Non Stock Purchase', '$arr1[pdate]', '$arr1[description]', '$arr1[price]', ''); // </script> // "; // }else { // $cc = ""; // } // $get_data = "SELECT * FROM purch_batch_entries WHERE id = '$ids[$keys]' LIMIT 1"; $get_data = "SELECT * FROM purch_batch_entries WHERE id = '{$arr1['id']}' LIMIT 1"; $run_data = db_exec($get_data) or errDie("Unable to get cost ledger information."); if (pg_numrows($run_data) < 1) { return "\n\t\t\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t<td><li class='err'>Unable to get batch entry information.</li></td>\n\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t\t\t<br>" . mkQuickLinks(ql("nons-purch-batch-add.php", "Batch Creditors Non-Stock Invoices Add"), ql("purchase-new.php", "Add Purchase"), ql("purchase-view.php", "View Purchases"), ql("nons-purchase-new.php", "Add Non-Stock Purchase"), ql("nons-purchase-view.php", "View Non-Stock Purchases")); } $data_arr = pg_fetch_array($run_data); $csetting = getsetting("CC_USE"); if ($csetting == "use") { # we want to store all the relevant information in a neat and orderly manner ... $get_info = "SELECT * FROM purch_batch_entries_costcenters WHERE batch_entry = '{$arr1['id']}'"; //$ids[$keys]'"; $run_info = db_exec($get_info) or errDie("Unable to get batch entry cost ledger information."); if (pg_numrows($run_info) < 1) { #no cost entries ???? } else { $ccenters = ""; while ($arr = pg_fetch_array($run_info)) { $amt_vat = $arr1['price'] / (100 + $vd['vat_amount']) * $vd['vat_amount']; $amount = $arr1['qty'] * ($arr1['price'] - $amt_vat); db_connect(); #get project id $get_pro = "SELECT * FROM projects WHERE code = '{$arr['project']}' LIMIT 1"; $run_pro = db_exec($get_pro) or errDie("Unable to get project information."); if (pg_numrows($run_pro) < 1) { $project = 0; } else { $pro_arr = pg_fetch_array($run_pro); $project = $pro_arr['id']; } #get costcenter id $get_cst = "SELECT * FROM costcenters WHERE centercode = '{$arr['costcenter']}' LIMIT 1"; $run_cst = db_exec($get_cst) or errDie("Unable to get cost center information."); if (pg_numrows($run_cst) < 1) { $costcenterlink = 0; } else { $cst_arr = pg_fetch_array($run_cst); $costcenterlink = $cst_arr['ccid']; } #get costcenter/project link id $get_link = "SELECT * FROM costcenters_links WHERE ccid = '{$costcenterlink}' AND project1 = '{$project}' LIMIT 1"; $run_link = db_exec($get_link) or errDie("Unable to get cost center link information."); if (pg_numrows($run_link) < 1) { return "<li class='err'>Unable to get cost ledger link information.</li>"; } $cc = pg_fetch_array($run_link); $edate = ext_rdate($data_arr['pdate']); $edarr = explode("-", $edate); $prd = $edarr[1]; $ccamts = sprint($amount * ($arr['costperc'] / 100)); #we need to connect to the actual period db db_conn($prd); $sql = "\n\t\t\t\t\t\t\t\t\t\t\t\tINSERT INTO cctran (\n\t\t\t\t\t\t\t\t\t\t\t\t\tccid, trantype, typename, edate, description, \n\t\t\t\t\t\t\t\t\t\t\t\t\tamount, username, div, project\n\t\t\t\t\t\t\t\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t\t\t\t\t\t\t\t'{$cc['ccid']}', 'ct', 'Non Stock Purchase', '{$data_arr['pdate']}', '{$data_arr['description']}', \n\t\t\t\t\t\t\t\t\t\t\t\t\t'{$ccamts}', '" . USER_NAME . "', '" . USER_DIV . "', '{$project}'\n\t\t\t\t\t\t\t\t\t\t\t\t)"; $insRslt = db_exec($sql) or errDie("Unable to retrieve insert Cost center amounts into database."); } } } db_connect(); #now remove this entry $rem_sql = "DELETE FROM purch_batch_entries WHERE id = '{$arr1['id']}'"; $run_rem = db_exec($rem_sql) or errDie("Unable to remove processed batch entry."); #remove cost center $rem_sql2 = "DELETE FROM purch_batch_entries_costcenters WHERE batch_entry = '{$arr1['id']}'"; $run_rem2 = db_exec($rem_sql2) or errDie("Unable to remove cost center information."); } # Get Order info db_connect(); $sql = "SELECT * FROM nons_purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $purRslt = db_exec($sql) or errDie("Unable to get Order information"); if (pg_numrows($purRslt) < 1) { return "<li>- Order Not Found</li>"; } $pur = pg_fetch_array($purRslt); $sid = $pur['supid']; $purnum = $pur['purnum']; if ($pur['received'] == "y") { if (isset($bankid)) { $sid = $bankid; $sid += 0; } ### DATA SET 2 ... $detadd = ""; if (isset($sid)) { $detadd = " from Supplier {$pur['supplier']}"; } $sdate = $pdate; $tpp = 0; $ccamt = 0; # record transaction from data if (isset($BA)) { $supacc = $BA; } foreach ($totstkamt as $stkacc => $wamt) { writetrans($stkacc, $supacc, $td, $refnum, $wamt, "Non-Stock Purchase No. {$purnum} Received {$detadd}."); pettyrec($supacc, $sdate, "ct", "Non-Stock Purchase No. {$purnum} Received {$detadd}.", $wamt, "Cash Order"); } # vat $vatamt = $revat; # Add vat if not included $retot = $resub; if (isset($sid)) { db_connect(); # update the supplier (make balance more) $sql = "UPDATE suppliers SET balance = (balance + '{$retot}') WHERE supid = '{$pur['supid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); } if (isset($sid)) { # Ledger Records $DAte = $pur['pdate']; suppledger($sup['supid'], $stkacc, $DAte, $purid, "Non-Stock Purchase No. {$purnum} received.", $retot, 'c'); } if ($vatamt != 0) { # Debit bank and credit the account involved writetrans($vatacc, $supacc, $td, $refnum, $vatamt, "Non-Stock Purchase VAT paid on Non-Stock Order No. {$purnum} {$detadd}."); pettyrec($supacc, $sdate, "ct", "Non-Stock Purchase No. {$purnum} Received {$detadd}.", $vatamt, "Cash Order VAT"); # Record the payment on the statement db_connect(); $sdate = $pdate; } // if(isset($bankid)) { // db_connect(); // $sql = "INSERT INTO cashbook(bankid, trantype, date, name, descript, cheqnum, amount, vat, chrgvat, banked, accinv, div) VALUES ('$bankid', 'withdrawal', '$sdate', '$pur[supplier]', 'Non-Stock Purchase No. $pur[purnum] received', '0', '$retot', '$vatamt', '$pur[vatinc]', 'no', '$stkacc', '".USER_DIV."')"; // $Rslt = db_exec ($sql) or errDie ("Unable to add bank payment to database.",SELF); // } if (isset($sid)) { db_connect(); $DAte = $pdate; $sql = "\n\t\t\t\t\t\t\t\t\t\tINSERT INTO sup_stmnt (\n\t\t\t\t\t\t\t\t\t\t\tsupid, edate, cacc, amount, \n\t\t\t\t\t\t\t\t\t\t\tdescript, ref, ex, div\n\t\t\t\t\t\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t\t\t\t\t\t'{$pur['supid']}', '{$pur['pdate']}', '{$stkacc}', '{$retot}', \n\t\t\t\t\t\t\t\t\t\t\t'Non Stock Purchase No. {$purnum} Received', '{$refnum}', '{$purnum}', '" . USER_DIV . "'\n\t\t\t\t\t\t\t\t\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); db_connect(); # update the supplier age analysis (make balance less) /* Make transaction record for age analysis */ $sql = "\n\t\t\t\t\t\t\t\t\t\tINSERT INTO suppurch (\n\t\t\t\t\t\t\t\t\t\t\tsupid, purid, pdate, balance, div\n\t\t\t\t\t\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t\t\t\t\t\t'{$pur['supid']}', '{$purnum}', '{$pur['pdate']}', '{$retot}', '" . USER_DIV . "'\n\t\t\t\t\t\t\t\t\t\t)"; $purcRslt = db_exec($sql) or errDie("Unable to update int Orders information in Cubit.", SELF); } ### # copy Order db_conn(PRD_DB); $sql = "\n\t\t\t\t\t\t\t\t\tINSERT INTO nons_purchases (\n\t\t\t\t\t\t\t\t\t\tpurid, deptid, supplier, supaddr, terms, \n\t\t\t\t\t\t\t\t\t\tpdate, ddate, shipchrg, shipping, subtot, \n\t\t\t\t\t\t\t\t\t\ttotal, balance, vatinc, vat, remarks, \n\t\t\t\t\t\t\t\t\t\trefno, received, done, ctyp, typeid, \n\t\t\t\t\t\t\t\t\t\tdiv, purnum, supid, mpurid, is_asset, supinv\n\t\t\t\t\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t\t\t\t\t'{$purid}', '{$pur['deptid']}', '{$pur['supplier']}', '{$pur['supaddr']}', '{$pur['terms']}', \n\t\t\t\t\t\t\t\t\t\t'{$pur['pdate']}', '{$pur['ddate']}', '{$pur['shipchrg']}', '{$pur['shipping']}', '{$pur['subtot']}', \n\t\t\t\t\t\t\t\t\t\t'{$pur['total']}', '0', '{$pur['vatinc']}', '{$pur['vat']}', '{$pur['remarks']}', \n\t\t\t\t\t\t\t\t\t\t'{$pur['refno']}', 'y', 'y', '{$pur['ctyp']}', '{$pur['typeid']}', \n\t\t\t\t\t\t\t\t\t\t'" . USER_DIV . "', '{$pur['purnum']}','{$sid}', '{$supacc}', '{$pur['is_asset']}', '{$pur['supinv']}'\n\t\t\t\t\t\t\t\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert Non-Stock Order to Cubit.", SELF); db_connect(); # Get selected stock $sql = "SELECT * FROM nons_pur_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $stktcRslt = db_exec($sql); while ($stktc = pg_fetch_array($stktcRslt)) { # Insert Order items db_conn($pur['prd']); $sql = "\n\t\t\t\t\t\t\t\t\t\tINSERT INTO nons_pur_items (\n\t\t\t\t\t\t\t\t\t\t\tpurid, cod, des, qty, unitcost, \n\t\t\t\t\t\t\t\t\t\t\tamt, svat, ddate, accid, \n\t\t\t\t\t\t\t\t\t\t\tdiv, vatcode\n\t\t\t\t\t\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t\t\t\t\t\t'{$purid}', '{$stktc['cod']}', '{$stktc['des']}', '{$stktc['qty']}', '{$stktc['unitcost']}', \n\t\t\t\t\t\t\t\t\t\t\t'{$stktc['amt']}', '{$stktc['svat']}', '{$stktc['ddate']}', '{$stktc['accid']}', \n\t\t\t\t\t\t\t\t\t\t\t'" . USER_DIV . "', '{$stktc['vatcode']}'\n\t\t\t\t\t\t\t\t\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert Order items to Cubit.", SELF); } db_connect(); # Remove the Order from running DB $sql = "DELETE FROM nons_purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $delRslt = db_exec($sql) or errDie("Unable to update int Orders information in Cubit.", SELF); # Remove those Order items from running DB $sql = "DELETE FROM nons_pur_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $delRslt = db_exec($sql) or errDie("Unable to update int Orders information in Cubit.", SELF); } } } } } } pglib_transaction("COMMIT") or errDie("Unable to complete transaction."); return "\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Processing Completed</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>All Selected Transactions Completed</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<br>\n\t\t" . mkQuickLinks(ql("nons-purch-batch-add.php", "Batch Creditors Non-Stock Invoices Add"), ql("purchase-new.php", "Add Purchase"), ql("purchase-view.php", "View Purchases"), ql("nons-purchase-new.php", "Add Non-Stock Purchase"), ql("nons-purchase-view.php", "View Non-Stock Purchases")); }
function write($_POST) { #get vars foreach ($_POST as $key => $value) { ${$key} = $value; } # validate input require_lib("validate"); $v = new validate(); $v->isOk($purid, "num", 1, 20, "Invalid purchase number."); if (!isset($supid) && !isset($bankid)) { $v->isOk($supacc, "num", 1, 10, "Invalid Supplier Account number."); } $v->isOk($remarks, "string", 0, 255, "Invalid Remarks."); $v->isOk($refno, "string", 0, 255, "Invalid Delivery Reference No."); $v->isOk($shipchrg, "float", 0, 20, "Invalid Delivery Charges."); $pdate = $pyear . "-" . $pmon . "-" . $pday; if (!checkdate($pmon, $pday, $pyear)) { $v->isOk($date, "num", 1, 1, "Invalid Date."); } # used to generate errors $error = "asa@"; # check quantities if (isset($qtys)) { foreach ($qtys as $keys => $qty) { $v->isOk($qty, "num", 1, 10, "Invalid Quantity for product number : <b>" . ($keys + 1) . "</b>"); if ($qty > $qts[$keys]) { $v->isOk($qty, "num", 0, 0, "Error : Quantity for product number : <b>" . ($keys + 1) . "</b> is more that Qty Purchased"); } $v->isOk($unitcost[$keys], "float", 1, 20, "Invalid Unit Price for product number : <b>" . ($keys + 1) . "</b>."); if ($qty < 1) { $v->isOk($qty, "num", 0, 0, "Error : Item Quantity must be at least one. Product number : <b>" . ($keys + 1) . "</b>"); } } } # display errors, if any $err = ""; if ($v->isError()) { $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class=err>" . $e["msg"]; } return details($_POST, $err); } # Get purchase info db_connect(); $sql = "SELECT * FROM nons_purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $purRslt = db_exec($sql) or errDie("Unable to get purchase information"); if (pg_numrows($purRslt) < 1) { return "<li>- purchase Not Found</li>"; } $pur = pg_fetch_array($purRslt); $pur['pdate'] = $pyear . "-" . $pmon . "-" . $pday; # check if purchase has been received if ($pur['received'] == "y") { $error = "<li class=err> Error : Purchase number <b>{$purid}</b> has already been received."; $error .= "<p><input type=button onClick='JavaScript:history.back();' value='« Correct submission'>"; return $error; } db_connect(); $Sql = "SELECT * FROM assets WHERE (id = '{$pur['assid']}' AND div = '" . USER_DIV . "')"; $Rslt = db_exec($Sql) or errDie("Unable to access database."); if (pg_numrows($Rslt) < 1) { return "<li class=err> - Asset not Found"; } $asset = pg_fetch_array($Rslt); # Get group $sql = "SELECT * FROM assetgrp WHERE grpid = '{$asset['grpid']}' AND div = '" . USER_DIV . "'"; $grpRslt = db_exec($sql); $grp = pg_fetch_array($grpRslt); $stkacc = $grp['costacc']; # Insert purchase to DB db_connect(); # begin updating pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); if (isset($qtys)) { # amount of stock in $totstkamt = array(); $resub = 0; # Get subtotal foreach ($qtys as $keys => $value) { # Skip zeros if ($qtys[$keys] < 1) { continue; } $amt[$keys] = $qtys[$keys] * $unitcost[$keys]; } $SUBTOTAL = array_sum($amt); $revat = 0; foreach ($qtys as $keys => $value) { # Get selected stock line $sql = "SELECT * FROM nons_pur_items WHERE cod = '{$cod[$keys]}' AND purid = '{$purid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); # Calculate cost amount bought $amt[$keys] = $qtys[$keys] * $unitcost[$keys]; /* delivery charge */ # Calculate percentage from subtotal $perc[$keys] = $amt[$keys] / $SUBTOTAL * 100; # Get percentage from shipping charges $shipc[$keys] = $perc[$keys] / 100 * $shipchrg; # add delivery charges $amt[$keys] += $shipc[$keys]; /* end delivery charge */ # the subtotal + delivery charges $resub += $amt[$keys]; # calculate vat $svat[$keys] = svat($amt[$keys], $stkd['amt'], $stkd['svat']); # received vat $revat += $svat[$keys]; # make amount vat free if ($pur['vatinc'] == "yes") { $amt[$keys] = $amt[$keys] - $svat[$keys]; } # Update Order items $sql = "UPDATE nons_pur_items SET rqty = (rqty + '{$qtys[$keys]}') WHERE cod = '{$cod[$keys]}' AND purid='{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to insert Order items to Cubit.", SELF); # keep records for transactions if (isset($totstkamt[$stkacc])) { $totstkamt[$stkacc] += $amt[$keys]; } else { $totstkamt[$stkacc] = $amt[$keys]; } # check if there are any outstanding items $sql = "SELECT * FROM nons_pur_items WHERE purid = '{$purid}' AND (qty - rqty) > '0' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); # if none the set to received if (pg_numrows($stkdRslt) < 1) { # update surch_int(received = 'y') $sql = "UPDATE nons_purchases SET received = 'y', supplier = '{$pur['supplier']}', supaddr = '{$pur['supaddr']}' WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update international Orders in Cubit.", SELF); } } } # Update purchase on the DB if ($pur['part'] == 'y') { # Update purchase on the DB $sql = "UPDATE nons_purchases SET shipchrg = (shipchrg + '{$shipchrg}'), refno = '{$refno}', remarks = '{$remarks}' WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update purchase in Cubit.", SELF); } else { # Update purchase on the DB $sql = "UPDATE nons_purchases SET shipchrg = '{$shipchrg}', refno = '{$refno}', remarks = '{$remarks}' WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update purchase in Cubit.", SELF); } /* Transactions */ $refnum = getrefnum(date("d-m-Y")); /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT"); /* - End Hooks - */ $sdate = $pur['pdate']; $tpp = 0; # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { # Debit Stock and Credit Suppliers control writetrans($stkacc, $supacc, date("d-m-Y"), $refnum, $wamt, "Non-Stock Asset Purchase No. {$pur['purnum']} Received."); pettyrec($supacc, $sdate, "ct", "Non-Stock Asset Purchase No. {$pur['purnum']} Received.", $wamt, "Cash Purchase"); } # Calc Vat amount on (subtot + delchrg) $vatamt = $revat; # Add vat if not included if ($pur['vatinc'] == 'no') { $retot = $resub + $vatamt; } elseif ($pur['vatinc'] == "novat") { $retot = $resub; $vatamt = 0; } else { $retot = $resub; } if ($vatamt != 0) { # Debit bank and credit the account involved writetrans($vatacc, $supacc, date("d-m-Y"), $refnum, $vatamt, "Non-Stock Asset Purchase Vat paid on Non-Stock Purchase No. {$pur['purnum']}."); pettyrec($supacc, $sdate, "ct", "Non-Stock Asset Purchase No. {$pur['purnum']} Received.", $vatamt, "Cash Purchase Vat"); # Record the payment on the statement db_connect(); $sdate = $pur['pdate']; } /* End Transactions */ /* Start moving if purchase received */ # Get purchase info db_connect(); $sql = "SELECT * FROM nons_purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $purRslt = db_exec($sql) or errDie("Unable to get purchase information"); if (pg_numrows($purRslt) < 1) { return "<li>- purchase Not Found</li>"; } $pur = pg_fetch_array($purRslt); if ($pur['received'] == "y") { # copy purchase db_conn($pur['prd']); $sql = "INSERT INTO nons_purchases(purid, deptid, supplier, supaddr, terms, pdate, ddate, shipchrg, subtot, total, balance, vatinc, vat, remarks, refno, received, done, div, purnum)"; $sql .= " VALUES('{$purid}', '{$pur['deptid']}', '{$pur['supplier']}', '{$pur['supaddr']}', '{$pur['terms']}', '{$pur['pdate']}', '{$pur['ddate']}', '{$pur['shipchrg']}', '{$pur['subtot']}', '{$pur['total']}', '0', '{$pur['vatinc']}', '{$pur['vat']}', '{$pur['remarks']}', '{$pur['refno']}', 'y', 'y', '" . USER_DIV . "', '{$pur['purnum']}')"; $rslt = db_exec($sql) or errDie("Unable to insert Non-Stock Purchase to Cubit.", SELF); db_connect(); # Get selected stock $sql = "SELECT * FROM nons_pur_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $stktcRslt = db_exec($sql); while ($stktc = pg_fetch_array($stktcRslt)) { # Insert purchase items db_conn($pur['prd']); $sql = "INSERT INTO nons_pur_items(purid, cod, des, qty, unitcost, amt, ddate, div) VALUES('{$purid}', '{$stktc['cod']}', '{$stktc['des']}', '{$stktc['qty']}', '{$stktc['unitcost']}', '{$stktc['amt']}', '{$stktc['ddate']}', '" . USER_DIV . "')"; $rslt = db_exec($sql) or errDie("Unable to insert purchase items to Cubit.", SELF); } db_connect(); # Remove the purchase from running DB $sql = "DELETE FROM nons_purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $delRslt = db_exec($sql) or errDie("Unable to update int purchases information in Cubit.", SELF); # Remove those purchase items from running DB $sql = "DELETE FROM nons_pur_items WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'"; $delRslt = db_exec($sql) or errDie("Unable to update int purchases information in Cubit.", SELF); } # Commit updating pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); /* End moving purchase received */ // Final Layout $write = "\n\t<table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>\n\t\t<tr><th>Non-Stock Asset Purchase received</th></tr>\n\t\t<tr class='bg-even'><td>Non-Stock Asset Purchase receipt has been recorded.</td></tr>\n\t</table>\n\t<p>\n\t<table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>\n\t\t<tr><th>Quick Links</th></tr>\n\t\t<tr class='bg-odd'><td><a href='nons-purchase-view.php'>View purchases</a></td></tr>\n\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t</table>"; return $write; }