function create_dummy($deptid, $assid, $grpid) { db_conn('cubit'); $Sql = "SELECT * FROM assets WHERE (id = '{$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.</li>"; } $asset = pg_fetch_array($Rslt); db_connect(); # Dummy Vars $remarks = ""; $supaddr = ""; $terms = "0"; $total = 0; $subtot = 0; $pdate = $asset['bdate']; $ddate = $asset['bdate']; $shipchrg = "0.00"; $purnum = divlastid("pur", USER_DIV); # Insert purchase to DB $sql = "INSERT INTO nons_purchases(deptid, purnum, supplier, supaddr, terms, pdate, ddate, shipchrg, subtot, total, balance, vatinc, vat, remarks, received, done, prd, div, assid, grpid, is_asset)"; $sql .= " VALUES('{$deptid}', '{$purnum}', '', '{$supaddr}', '{$terms}', '{$pdate}', '{$ddate}', '{$shipchrg}', '{$subtot}', '{$total}', '{$total}', 'no', '0', '{$remarks}', 'n', 'n', '" . PRD_DB . "', '" . USER_DIV . "', '{$assid}', '{$grpid}', 'yes')"; $rslt = db_exec($sql) or errDie("Unable to insert Non-Stock Purchase to Cubit.", SELF); # Get next ordnum $purid = lastpurid(); for ($x = 0; $x < $asset['split_from']; $x++) { # insert Order items $sql = "INSERT INTO nons_pur_items(purid, cod, des, qty, unitcost, amt, svat, ddate, div, vatcode, is_asset)\n\t\tVALUES('{$purid}', '{$asset['serial']}', '{$asset['des']}', '1', '{$asset['amount']}', '{$asset['amount']}', '0', '{$asset['bdate']}', '" . USER_DIV . "', (SELECT id FROM cubit.vatcodes WHERE code='01' LIMIT 1),'{$assid}')"; $rslt = db_exec($sql) or errDie("Unable to insert Order items to Cubit.", SELF); } return $purid; }
function invoice() { extract($_REQUEST); pglib_transaction("BEGIN"); $invnum = divlastid("inv"); $sql = "INSERT INTO cubit.invoices(deptid, chrgvat, odate, printed, done, \n\t\t\t\tusername, prd, invnum, div, systime, pslip_sordid, cusnum, ordno)\n\t\t\tVALUES ('" . USER_DIV . "', 'inc', current_date, 'n', 'n',\n\t\t\t\t'" . USER_NAME . "', '" . PRD_DB . "', '{$invnum}', '" . USER_DIV . "',\n\t\t\t\tcurrent_date, '{$sordid}', '{$cusnum}', '{$sordid}')"; $inv_rslt = db_exec($sql) or errDie("Unable to retrieve invoice."); $invid = lastinvid(); $sql = "SELECT stock.stkid, stock.whid, qty, sorders_items.vatcode, amt, unitcost\n\t\t\tFROM cubit.sorders_items\n\t\t\t\tLEFT JOIN cubit.stock ON sorders_items.stkid=stock.stkid\n\t\t\tWHERE sordid='{$sordid}'"; $stock_rslt = db_exec($sql) or errDie("Unable to retrieve stock."); while (list($stkid, $whid, $qty, $vatcode, $amt, $unitcost) = pg_fetch_array($stock_rslt)) { $sql = "INSERT INTO cubit.inv_items (invid, whid, stkid, qty, div,\n\t\t\t\t\tvatcode, amt, unitcost)\n\t\t\t\tVALUES ('{$invid}', '{$whid}', '{$stkid}', '{$qty}', '" . USER_DIV . "',\n\t\t\t\t\t'{$vatcode}', '{$amt}', '{$unitcost}')"; db_exec($sql) or errDie("Unable to add inventory items."); } $OUTPUT = "\n\t<script>\n\t\tmove(\"../cust-credit-stockinv-no-neg.php?invid={$invid}&cont=true\");\n\t</script>"; pglib_transaction("COMMIT"); return $OUTPUT; }
function create_dummy($deptid, $spurnum, $spurtype, $spurprd) { db_connect(); # Dummy Vars $remarks = ""; $supaddr = ""; $terms = "0"; $total = 0; $subtot = 0; $pdate = date("Y-m-d"); $ddate = date("Y-m-d"); $shipchrg = "0.00"; $purnum = divlastid("pur", USER_DIV); # Insert purchase to DB $sql = "INSERT INTO nons_purchases(deptid, supplier, supaddr, terms, pdate, ddate, shipchrg, subtot, total, balance, vatinc, vat, remarks, received, done, prd, div, purnum, spurnum, spurtype, spurprd)"; $sql .= " VALUES('{$deptid}', '', '{$supaddr}', '{$terms}', '{$pdate}', '{$ddate}', '{$shipchrg}', '{$subtot}', '{$total}', '{$total}', 'yes', '0', '{$remarks}', 'n', 'n', '" . PRD_DB . "', '" . USER_DIV . "', '{$purnum}', '{$spurnum}', '{$spurtype}', '{$spurprd}')"; $rslt = db_exec($sql) or errDie("Unable to insert Non-Stock Purchase to Cubit.", SELF); # Get next ordnum $purid = pglib_lastid("nons_purchases", "purid"); return $purid; }
function create_dummy($deptid) { db_connect(); # Dummy Vars $supid = 0; $remarks = ""; $supname = ""; $supaddr = ""; $supno = ""; $terms = "0"; $total = 0; $subtot = 0; // $pdate = date("Y-m-d"); $ddate = date("Y-m-d"); $shipchrg = "0.00"; $purnum = divlastid('pur', USER_DIV); if (getSetting("PURCH_APPRV") == 'napprv' || getSetting("PURCH_APPRV") == '') { $apprv = 'y'; } else { $apprv = 'n'; } $def_vat = getCSetting("PURCH_DEFAULT_VAT_SETTING"); if (!isset($def_vat) or $def_vat == "yes") { $vatsetting = "yes"; } else { $vatsetting = "no"; } $trans_date_setting = getCSetting("USE_TRANSACTION_DATE"); if (isset($trans_date_setting) and $trans_date_setting == "yes") { $trans_date_value = getCSetting("TRANSACTION_DATE"); $date_arr = explode("-", $trans_date_value); $date_year = $date_arr[0]; $date_month = $date_arr[1]; $date_day = $date_arr[2]; } else { $date_year = date("Y"); $date_month = date("m"); $date_day = date("d"); } $pdate = "{$date_year}-{$date_month}-{$date_day}"; # Insert Order to DB $sql = "\n\t\tINSERT INTO purchases (\n\t\t\tdeptid, supid, supname, supaddr, supno, terms, pdate, ddate, shipchrg, subtot, \n\t\t\ttotal, balance, vatinc, vat, remarks, received, done, prd, div, purnum, apprv\n\t\t) VALUES (\n\t\t\t'{$deptid}', '{$supid}', '{$supname}', '{$supaddr}', '{$supno}', '{$terms}', '{$pdate}', '{$ddate}', '{$shipchrg}', '{$subtot}', \n\t\t\t'{$total}', '{$total}', '{$vatsetting}', '0', '{$remarks}', 'n', 'n', '" . PRD_DB . "', '" . USER_DIV . "', '{$purnum}', '{$apprv}'\n\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert Order to Cubit.", SELF); # Get next ordnum $purid = lastpurid(); return $purid; }
function write($_POST) { # Set max execution time to 12 hours ini_set("max_execution_time", 43200); # Get vars foreach ($_POST as $key => $value) { ${$key} = $value; } # validate input require_lib("validate"); $v = new validate(); foreach ($invids as $key => $invid) { $v->isOk($invid, "num", 1, 20, "Invalid recuring invoice number."); } $VATP = TAX_VAT; # display errors, if any $err = ""; if ($v->isError()) { $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class=err>" . $e["msg"]; } return $err; } pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $i = 0; foreach ($invids as $key => $invid) { db_connect(); $sql = "SELECT * FROM nons_invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "' and done='n'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class=err>Not Found</i>"; } $inv = pg_fetch_array($invRslt); $ctyp = $inv['ctyp']; //$td=$inv['sdate']; $td = $inv['odate']; //$cus['surname']=$inv['cusname']; if ($ctyp == 's') { $cusnum = $inv['tval']; $sql = "SELECT * FROM customers WHERE cusnum = '{$cusnum}' AND div = '" . USER_DIV . "'"; $custRslt = db_exec($sql) or errDie("Unable to view customer"); $cus = pg_fetch_array($custRslt); $na = $cus['surname']; } elseif ($ctyp == 'c') { $deptid = $inv['tval']; db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$deptid}'"; $deptRslt = db_exec($sql) or errDie("Unable to view customers"); $dept = pg_fetch_array($deptRslt); $na = $inv['cusname']; } db_connect(); $sql = "SELECT * FROM nons_inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql) or errDie("Unable to get data."); unset($totstkamt); $refnum = getrefnum(); /*refnum*/ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "NO VAT"); $varacc = gethook("accnum", "salesacc", "name", "sales_variance"); /* - End Hooks - */ db_conn("cubit"); $real_invid = divlastid('inv', USER_DIV); db_conn("cubit"); # Put in product $totstkamt = array(); while ($stk = pg_fetch_array($stkdRslt)) { $Sl = "SELECT * FROM vatcodes WHERE id='{$stk['vatex']}'"; $Ri = db_exec($Sl) or errDie("Unable to get data."); $vd = pg_fetch_array($Ri); if ($vd['zero'] == "Yes") { $stk['vatex'] = "y"; } $t = $inv['chrgvat']; $stkacc = $stk['accid']; if (isset($totstkamt[$stkacc])) { if ($stk['vatex'] == "y") { $totstkamt[$stkacc] += vats($stk['amt'], 'novat', $vd['vat_amount']); $va = 0; $inv['chrgvat'] = ""; } else { $totstkamt[$stkacc] += vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']); $va = sprint($stk['amt'] - vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($stk['amt'] * $vd['vat_amount'] / 100); } } } else { if ($stk['vatex'] == "y") { $totstkamt[$stkacc] = vats($stk['amt'], 'novat', $vd['vat_amount']); $inv['chrgvat'] = ""; $va = 0; } else { $totstkamt[$stkacc] = vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']); $va = sprint($stk['amt'] - vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($stk['amt'] * $vd['vat_amount'] / 100); } } } vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "Non-Stock Sales, invoice No.{$real_invid}", vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']) + $va, $va); //print vats($stk['amt'],$inv['chrgvat'], $vd['vat_amount']); $inv['chrgvat'] = $t; //$sql = "UPDATE nons_inv_items SET accid = '$stk[account]' WHERE id = '$stk[id]'"; //$sRslt = db_exec($sql); } /* --- Start Some calculations --- */ # Subtotal $SUBTOT = sprint($inv['subtot']); $VAT = sprint($inv['vat']); $TOTAL = sprint($inv['total']); /* --- End Some calculations --- */ /* - Start Hooks - */ //$vatacc = gethook("accnum", "salesacc", "name", "VAT"); /* - End Hooks - */ # todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); db_conn("cubit"); if (isset($bankid)) { $bankid += 0; db_conn("cubit"); $sql = "SELECT * FROM bankacct WHERE bankid = '{$inv['accid']}'"; $deptRslt = db_exec($sql) or errDie("Unable to view customers"); if (pg_numrows($deptRslt) < 1) { $error = "<li class=err> Bank not Found."; $confirm .= "{$error}<p><input type=button onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } else { $deptd = pg_fetch_array($deptRslt); } db_conn('core'); $Sl = "SELECT * FROM bankacc WHERE accid='{$bankid}'"; $rd = db_exec($Sl) or errDie("Unable to get data."); $data = pg_fetch_array($rd); $BA = $data['accnum']; } $tot_post = 0; # bank % cust if ($ctyp == 's') { # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$cus['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { $dept['deptname'] = "<li class=err>Department not Found."; } else { $dept = pg_fetch_array($deptRslt); } $tpp = 0; //$sql = "SELECT * FROM nons_inv_items WHERE invid = '$invid' AND div = '".USER_DIV."'"; //$stkdRslt = db_exec($sql); // # Put in product // while($stk = pg_fetch_array($stkdRslt)){ // $wamt=$stk['amt']; // // $tot_post+=$wamt; // writetrans($dept['debtacc'], $stk['account'], $td, $refnum, $wamt, "Non-Stock Sales on invoice No.$real_invid customer $cus[surname]."); // } # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { # Debit Customer and Credit stock $tot_post += $wamt; writetrans($dept['debtacc'], $stkacc, $td, $refnum, $wamt, "Non-Stock Sales on invoice No.{$real_invid} customer {$inv['cusname']}."); } # Debit bank and credit the account involved if ($VAT != 0) { $tot_post += $VAT; writetrans($dept['debtacc'], $vatacc, $td, $refnum, $VAT, "Non-Stock Sales VAT received on invoice No.{$real_invid} customer {$inv['cusname']}."); } $sdate = date("Y-m-d"); } else { if (!isset($accountc)) { $accountc = 0; } if (!isset($dept['pca'])) { $accountc += 0; $dept['pca'] = $accountc; $dept['debtacc'] = $accountc; } if (isset($bankid)) { $dept['pca'] = $BA; } if ($ctyp == "ac") { $dept['pca'] = $inv['tval']; } $tpp = 0; # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { if (!isset($cust['surname'])) { $cust['surname'] = $inv['cusname']; $cust['addr1'] = $inv['cusaddr']; } # Debit Customer and Credit stock $tot_post += $wamt; writetrans($dept['pca'], $stkacc, $td, $refnum, $wamt, "Non-Stock Sales on invoice No.{$real_invid} customer {$inv['cusname']}."); } if (isset($bankid)) { db_connect(); $bankid += 0; $sql = "INSERT INTO cashbook(bankid, trantype, date, name, descript, cheqnum, amount, vat, chrgvat, banked, accinv, div) VALUES ('{$bankid}', 'deposit', '{$td}', '{$inv['cusname']}', 'Non-Stock Sales on invoice No.{$real_invid} customer {$inv['cusname']}', '0', '{$TOTAL}', '{$VAT}', '{$inv['chrgvat']}', 'no', '{$stkacc}', '" . USER_DIV . "')"; $Rslt = db_exec($sql) or errDie("Unable to add bank payment to database.", SELF); $sql = "UPDATE nons_invoices SET jobid='{$bankid}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); } # Debit bank and credit the account involved if ($VAT != 0) { $tot_post += $VAT; writetrans($dept['pca'], $vatacc, $td, $refnum, $VAT, "Non-Stock Sales VAT received on invoice No.{$real_invid} customer {$inv['cusname']}."); } $sdate = date("Y-m-d"); } $tot_post = sprint($tot_post); db_connect(); if ($ctyp == 's') { $sql = "UPDATE nons_invoices SET balance = total, cusid = '{$cusnum}', ctyp = '{$ctyp}', cusaddr = '{$cus['addr1']}', cusvatno = '{$cus['vatnum']}', done = 'y', invnum = '{$real_invid}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); # Record the payment on the statement $sql = "\n\t\t\t\tINSERT INTO stmnt \n\t\t\t\t\t(cusnum, invid, docref, amount, date, type, div, allocation_date) \n\t\t\t\tVALUES \n\t\t\t\t\t('{$cusnum}', '{$real_invid}', '{$inv['docref']}', '{$TOTAL}','{$inv['odate']}', 'Non-Stock Invoice', '" . USER_DIV . "', '{$inv['odate']}')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # Record the payment on the statement $sql = "INSERT INTO open_stmnt(cusnum, invid, docref, amount, balance, date, type, div) VALUES('{$cusnum}', '{$real_invid}', '{$inv['docref']}', '{$TOTAL}', '{$TOTAL}','{$inv['sdate']}', 'Non-Stock Invoice', '" . USER_DIV . "')"; $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 + '{$TOTAL}'::numeric(13,2)) WHERE cusnum = '{$cusnum}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Make ledge record custledger($cusnum, $stkacc, $td, $real_invid, "Non Stock Invoice No. {$real_invid}", $TOTAL, "d"); custDT($TOTAL, $cusnum, $td, $invid, "nons"); //print $tot_post;exit; $tot_dif = sprint($tot_post - $TOTAL); if ($tot_dif > 0) { writetrans($varacc, $dept['debtacc'], $td, $refnum, $tot_dif, "Sales Variance on invoice {$real_invid}"); } elseif ($tot_dif < 0) { $tot_dif = $tot_dif * -1; writetrans($dept['debtacc'], $varacc, $td, $refnum, $tot_dif, "Sales Variance on invoice {$real_invid}"); } } else { $date = date("Y-m-d"); $sql = "UPDATE nons_invoices SET balance=total, accid = '{$dept['pca']}', ctyp = '{$ctyp}', done = 'y', invnum = '{$real_invid}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); $tot_dif = sprint($tot_post - $TOTAL); if ($tot_dif > 0) { writetrans($varacc, $dept['pca'], $td, $refnum, $tot_dif, "Sales Variance on invoice {$real_invid}"); } elseif ($tot_dif < 0) { $tot_dif = $tot_dif * -1; writetrans($dept['pca'], $varacc, $td, $refnum, $tot_dif, "Sales Variance on invoice {$real_invid}"); } if ($ctyp == "c") { $cusnum = "0"; } elseif ($ctyp == "ac") { $cusnum = "0"; $na = ""; } } db_connect(); $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\n\t\tVALUES('{$inv['sdate']}', '{$invid}', '{$real_invid}', '{$dept['debtacc']}', '{$VAT}', '{$TOTAL}', 'non', '" . USER_DIV . "')"; $recRslt = db_exec($sql); db_conn('cubit'); $Sl = "INSERT INTO sj(cid,name,des,date,exl,vat,inc,div) VALUES\n\t\t('{$cusnum}','{$na}','Non-stock Invoice {$real_invid}','{$inv['sdate']}','" . sprint($TOTAL - $VAT) . "','{$VAT}','" . sprint($TOTAL) . "','" . USER_DIV . "')"; $Ri = db_exec($Sl); $ecost = sprint($TOTAL - $VAT); db_conn('cubit'); $inv['jobid'] += 0; $Sl = "SELECT * FROM ninvc WHERE inv='{$inv['jobid']}'"; $Ri = db_exec($Sl); if (CC_USE == "use") { if (pg_num_rows($Ri) > 0) { while ($data = pg_fetch_array($Ri)) { db_conn('cubit'); $sql = "SELECT * FROM costcenters WHERE ccid = '{$data['cid']}'"; $ccRslt = db_exec($sql) or errDie("Unable to retrieve Cost centers from database."); $cc = pg_fetch_array($ccRslt); $amount = sprint($ecost * $data['amount'] / 100); db_conn(PRD_DB); $sql = "INSERT INTO cctran(ccid, trantype, typename, edate, description, amount, username, div)\n\t\t\t\t\tVALUES('{$cc['ccid']}', 'dt', 'Invoice', '{$inv['sdate']}', 'Invoice No.{$real_invid}', '{$amount}', '" . USER_NAME . "', '" . USER_DIV . "')"; $insRslt = db_exec($sql) or errDie("Unable to retrieve insert Cost center amounts into database."); } } } $i++; } pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); // Retrieve template settings db_conn("cubit"); $sql = "SELECT filename FROM template_settings WHERE template='invoices' AND div='" . USER_DIV . "'"; $tsRslt = db_exec($sql) or errDie("Unable to retrieve template settings from Cubit."); $template = pg_fetch_result($tsRslt, 0); if ($template == "invoice-print.php") { pdf($_POST); } else { templatePdf($_POST); } // Final Laytout $write = "\n\t<table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>\n\t\t<tr><th>{$i} Invoices Proccesed</th></tr>\n\t\t<tr class='bg-even'><td>Invoices have been successfully printed.</td></tr>\n\t</table>\n\t<p>\n\t<table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>\n\t<tr><th>Quick Links</th></tr>\n\t<tr class='bg-odd'><td><a href='invoice-view.php'>View Invoices</a></td></tr>\n\t<script>document.write(getQuicklinkSpecial());</script>\n\t</table>"; return $write; }
function details($_GET) { # get vars foreach ($_GET as $key => $value) { ${$key} = $value; } # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid invoice number."); # display errors, if any if ($v->isError()) { $err = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class=err>" . $e["msg"]; } $confirm .= "<p><input type=button onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } db_connect(); # Get invoice info $sql = "SELECT * FROM nons_invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class=err>Not Found</i>"; } $inv = pg_fetch_array($invRslt); /* --- Start some checks --- */ # check if stock was selected(yes = put done button) /* --- End some checks --- */ /* --- Start Products Display --- */ # Products layout $products = ""; $disc = 0; # get selected stock in this invoice db_connect(); $sql = "SELECT * FROM nons_inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); # Put in product while ($stk = pg_fetch_array($stkdRslt)) { $products .= "<tr valign=top><td>{$stk['description']}</td><td>{$stk['qty']}</td><td>{$stk['unitcost']}</td><td>" . CUR . " {$stk['amt']}</td></tr>"; } /* --- Start Some calculations --- */ # Subtotal $SUBTOT = sprint("%0.2f", $inv['subtot']); $VAT = sprint("%0.2f", $inv['vat']); $TOTAL = sprint("%0.2f", $inv['total']); /* --- End Some calculations --- */ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT"); /* - End Hooks - */ # todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); $refnum = getrefnum(); /*refnum*/ /* --- Updates ---- */ db_connect(); # Begin updates pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $real_invid = divlastid('inv', USER_DIV); $sql = "UPDATE nons_invoices SET done = 'y', invnum = '{$real_invid}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); # get selected stock in this invoice $sql = "SELECT * FROM nons_inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); /* -- Format the remarks boxlet -- */ $inv["remarks"] = "<table border=1><tr><td>Remarks:<br>{$inv['remarks']}</td></tr></table>"; /* -- Final Layout -- */ $details = "<center><h2>Tax Invoice</h2>\r\n\t<table cellpadding='0' cellspacing='4' border=0 width=750>\r\n\t<tr><td valign=top width=30%>\r\n\t\t<table cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "' border=0>\r\n\t\t\t<tr><td>{$inv['cusname']}</td></tr>\r\n\t\t\t<tr><td>" . nl2br($inv['cusaddr']) . "</td></tr>\r\n\t\t\t<tr><td>(Vat No. {$inv['cusvatno']})</td></tr>\r\n\t\t</table>\r\n\t</td><td valign=top width=30%>\r\n\t\t" . COMP_NAME . "<br>\r\n\t\t" . COMP_ADDRESS . "<br>\r\n\t\t" . COMP_TEL . "<br>\r\n\t\t" . COMP_FAX . "<br>\r\n\t</td><td width=20%>\r\n\t\t<img src='compinfo/getimg.php' width=230 height=47>\r\n\t</td><td valign=bottom align=right width=20%>\r\n\t\t<table cellpadding='2' cellspacing='0' border=1 bordercolor='#000000'>\r\n\t\t\t<tr><td><b>Invoice No.</b></td><td valign=center>{$inv['invnum']}</td></tr>\r\n\t\t\t<tr><td><b>Invoice Date</b></td><td valign=center>{$inv['sdate']}</td></tr>\r\n\t\t</table>\r\n\t</td></tr>\r\n\t<tr><td><br></td></tr>\r\n\t<tr><td colspan=4>\r\n\t<table cellpadding='5' cellspacing='0' border=1 width=100% bordercolor='#000000'>\r\n\t\t<tr>\r\n\t\t\t<th width='5%'>#</th>\r\n\t\t\t<th width='65%'>DESCRIPTION</th>\r\n\t\t\t<th width='10%'>QTY</th>\r\n\t\t\t<th width='10%'>UNIT PRICE</th>\r\n\t\t\t<th width='10%'>AMOUNT</th>\r\n\t\t<tr>\r\n\t\t{$products}\r\n\t</table>\r\n\t</td></tr>\r\n\t<tr><td>\r\n\t{$inv['remarks']}\r\n\t</td><td align=right colspan=3>\r\n\t\t<table cellpadding='5' cellspacing='0' border=1 width=50% bordercolor='#000000'>\r\n\t\t\t<tr><td><b>SUBTOTAL</b></td><td align=right>" . CUR . " {$SUBTOT}</td></tr>\r\n\t\t\t<tr><td><b>VAT @ \$" . TAX_VAT . "%</b></td><td align=right>" . CUR . " {$VAT}</td></tr>\r\n\t\t\t<tr><th><b>GRAND TOTAL<b></th><td align=right>" . CUR . " {$TOTAL}</td></tr>\r\n\t\t</table>\r\n\t</td></tr>\r\n\t<tr><td><br></td></tr>\r\n\t<tr><td>\r\n\t\t<table cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "' border=1>\r\n \t<tr><th>VAT No.</th><td align=center>" . COMP_VATNO . "</td></tr>\r\n </table>\r\n\t</td><td><br></td></tr>\r\n\t</table></center>"; $OUTPUT = $details; require "tmpl-print.php"; }
function confirm($_POST) { extract($_POST); if (isset($back)) { return method($cusid); } // $date = "$date_day-$date_month-$date_year"; $amt = sprint(array_sum($paidamt)); $setamt = sprint(array_sum($stock_setamt)); if (!isset($print_recpt)) { $print_recpt = ""; } if (!isset($descript) or strlen($descript) < 1) { $descript = $reference; } if (!isset($out1)) { $out1 = ''; } if (!isset($out2)) { $out2 = ''; } if (!isset($out3)) { $out3 = ''; } if (!isset($out4)) { $out4 = ''; } if (!isset($out5)) { $out5 = ''; } $date = "{$date_year}-{$date_month}-{$date_day}"; require_lib("validate"); $v = new validate(); $v->isOk($all, "num", 1, 1, "Invalid allocation."); $v->isOk($bankid, "num", 1, 30, "Invalid Bank Account."); $v->isOk($date, "date", 1, 14, "Invalid Date."); $v->isOk($descript, "string", 1, 255, "Invalid Description."); $v->isOk($reference, "string", 1, 50, "Invalid Reference Name/Number."); $v->isOk($cheqnum, "num", 0, 30, "Invalid Cheque number."); $v->isOk($amt, "float", 1, 40, "Invalid amount."); $v->isOk($setamt, "float", 1, 40, "Invalid Settlement Amount."); $v->isOk($setvat, "string", 1, 10, "Invalid Settlement VAT Option."); $v->isOk($setvatcode, "string", 1, 40, "Invalid Settlement VAT code"); // $v->isOk($out, "float", 1, 40, "Invalid out amount."); $v->isOk($out1, "float", 0, 40, "Invalid paid amount(currant)."); $v->isOk($out2, "float", 0, 40, "Invalid paid amount(30)."); $v->isOk($out3, "float", 0, 40, "Invalid paid amount(60)."); $v->isOk($out4, "float", 0, 40, "Invalid paid amount(90)."); $v->isOk($out5, "float", 0, 40, "Invalid paid amount(120)."); $v->isOk($cusid, "num", 1, 10, "Invalid customer number."); $v->isOk($overpay, "float", 1, 40, "Invalid Unallocated Amount."); $v->isOk($print_recpt, "string", 0, 10, "Invalid Print Receipt Setting."); if ($amt + $overpay <= 0) { $v->addError(0, "Invalid Amount Allocated To Receipt."); } if (isset($invids)) { foreach ($invids as $key => $value) { if ($paidamt[$key] < 0.01) { continue; } if (!isset($stock_setamt[$key]) or strlen($stock_setamt[$key]) < 1) { $stock_setamt[$key] = 0; } $v->isOk($invids[$key], "num", 1, 50, "Invalid Invoice No. [{$key}]"); $v->isOk($paidamt[$key], "float", 1, 40, "Invalid amount to be paid. [{$key}]"); $v->isOk($stock_setamt[$key], "float", 1, 40, "Invalid Settlement Discount Amount"); } } if ($v->isError()) { $confirm = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $confirm .= "<li class='err'>" . $e["msg"] . "</li>"; } $_POST['OUT1'] = $out1 + 0; $_POST['OUT2'] = $out2 + 0; $_POST['OUT3'] = $out3 + 0; $_POST['OUT4'] = $out4 + 0; $_POST['OUT5'] = $out5 + 0; return $confirm . alloc($_POST); } $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 "<li class='err'>Period Range Is Blocked. Only an administrator can process entries within this period.</li>"; } $out += 0; $OUT1 = $out1 + 0; $OUT2 = $out2 + 0; $OUT3 = $out3 + 0; $OUT4 = $out4 + 0; $OUT5 = $out5 + 0; $tot = 0; if (isset($invids)) { foreach ($invids as $key => $value) { if ($paidamt[$key] < 0.01) { continue; } $tot += $paidamt[$key]; } } if (isset($open_amount)) { $tot += array_sum($open_amount); } $tot = sprint($tot); $amt = sprint($amt); $out = sprint($out); if (sprint($tot + $out + $out1 + $out2 + $out3 + $out4 + $out5 - $amt) > sprint(0)) { $_POST['OUT1'] = $OUT1; $_POST['OUT2'] = $OUT2; $_POST['OUT3'] = $OUT3; $_POST['OUT4'] = $OUT4; $_POST['OUT5'] = $OUT5; return "<li class='err'>The total amount for invoices is greater than the amount received.\n\t\t\tPlease check the details.</li>" . alloc($_POST); } if (sprint($setamt) > 0) { if (array_sum($stock_setamt) != $setamt) { return "<li class='err'>The total settlement amount for invoices is not equal to the amount received.\n\t\t\tPlease check the details.</li>" . alloc($_POST); } } if (isset($bout)) { $out = $bout; } if (!isset($overpay)) { $overpay = 0; } $overpay = sprint($overpay); #generate a receipt number $receiptnumber = divlastid("receipt"); $confirm = "\n\t\t<h3>New Bank Receipt</h3>\n\t\t<h4>Confirm entry (Please check the details)</h4>\n\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t<input type='hidden' name='key' value='write'>\n\t\t\t<input type='hidden' name='bankid' value='{$bankid}'>\n\t\t\t<input type='hidden' name='date' value='{$date}'>\n\t\t\t<input type='hidden' name='cusid' value='{$cusid}'>\n\t\t\t<input type='hidden' name='descript' value='{$descript}'>\n\t\t\t<input type='hidden' name='reference' value='{$reference}'>\n\t\t\t<input type='hidden' name='cheqnum' value='{$cheqnum}'>\n\t\t\t<input type='hidden' name='all' value='{$all}'>\n\t\t\t<input type='hidden' name='out' value='{$out}'>\n\t\t\t<input type='hidden' name='date_day' value='{$date_day}'>\n\t\t\t<input type='hidden' name='date_month' value='{$date_month}'>\n\t\t\t<input type='hidden' name='date_year' value='{$date_year}'>\n\t\t\t<input type='hidden' name='overpay' value='{$overpay}'>\n\t\t\t<input type='hidden' name='OUT1' value='{$OUT1}'>\n\t\t\t<input type='hidden' name='OUT2' value='{$OUT2}'>\n\t\t\t<input type='hidden' name='OUT3' value='{$OUT3}'>\n\t\t\t<input type='hidden' name='OUT4' value='{$OUT4}'>\n\t\t\t<input type='hidden' name='OUT5' value='{$OUT5}'>\n\t\t\t<input type='hidden' name='amt' value='{$amt}'>\n\t\t\t<input type='hidden' name='setamt' value='{$setamt}'>\n\t\t\t<input type='hidden' name='setvat' value='{$setvat}'>\n\t\t\t<input type='hidden' name='setvatcode' value='{$setvatcode}'>\n\t\t\t<input type='hidden' name='print_recpt' value='{$print_recpt}'>\n\t\t<table " . TMPL_tblDflts . ">"; /* bank account name */ if ($bankid == "0" or ($bank = qryBankAcct($bankid, "accname, bankname")) === false) { $bank['accname'] = "Cash"; $bank['bankname'] = ""; } /* customer name */ $cus = qryCustomer($cusid, "accno, cusname, surname"); if ($setvat == "inc") { $showsetvat = "VAT Inclusive"; } else { $showsetvat = "No VAT"; } // $overpay = sprint ($amt - array_sum($paidamt)); $overpay = sprint($overpay); if ($overpay < 0) { $overpay = 0.0; } if ($print_recpt == "yes") { $show_print_recpt = "Yes"; } else { $show_print_recpt = "No"; } $confirm .= "\n\t\t<tr>\n\t\t\t<th>Field</th>\n\t\t\t<th>Value</th>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Account</td>\n\t\t\t<td>{$bank['accname']} - {$bank['bankname']}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Payment Date</td>\n\t\t\t<td valign='center'>{$date}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Received from</td>\n\t\t\t<td valign='center'>{$cus['accno']} - {$cus['cusname']} {$cus['surname']}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Description</td>\n\t\t\t<td valign='center'>{$descript}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Reference</td>\n\t\t\t<td valign='center'>{$reference}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Cheque Number</td>\n\t\t\t<td valign='center'>{$cheqnum}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Amount</td>\n\t\t\t<td valign='center'>" . CUR . " {$amt}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Settlement Discount</td>\n\t\t\t<td valign='center'>" . CUR . " {$setamt} {$showsetvat}</td>\n\t\t</tr>\n\t\t" . TBL_BR . "\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Print Receipt</td>\n\t\t\t<td>{$show_print_recpt}</td>\n\t\t</tr>\n\t\t" . TBL_BR . "\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td colspan='5'><b>A general transaction will credit the client's account with " . CUR . " {$overpay} </b></td>\n\t\t</tr>"; if (sprint($setamt) > 0) { $doset = TRUE; } else { $doset = FALSE; } /* OPTION 3 : ALLOCATE TO EACH INVOICE (confirm) */ if ($all == 2) { if ($doset) { $showsethead = "<th>Settlement</th>"; } else { $showsethead = ""; } // Layout $confirm .= "\n\t\t\t" . TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'><h3>Invoices</h3></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th>Invoice Number</th>\n\t\t\t\t<th>Outstanding amount</th>\n\t\t\t\t<th>Terms</th>\n\t\t\t\t<th>Date</th>\n\t\t\t\t<th>Amount</th>\n\t\t\t\t{$showsethead}\n\t\t\t</tr>"; $i = 0; foreach ($invids as $key => $value) { if ($paidamt[$key] < 0.01) { continue; } $paidamt[$key] = sprint($paidamt[$key]); $ii = $invids[$key]; if (!isset($itype[$key]) && !isset($ptype[$key])) { /* STOCK INVOICE ! */ db_connect(); $sql = "SELECT invnum,invid,balance,terms,odate FROM invoices\n\t\t\t\t\t\tWHERE invid = '{$invids[$key]}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to access database."); if (pg_numrows($invRslt) < 1) { return "<li class='err'> -S- Invalid ord number {$invids[$key]}.</li>"; } $inv = pg_fetch_array($invRslt); $invid = $inv['invid']; #handle warnings ... if ($paidamt[$invid] + $stock_setamt[$invid] < sprint($inv['balance'])) { $warning = "<td><li class='err'>Paying Less Than Total Amount.</li></td>"; } elseif ($paidamt[$invid] + $stock_setamt[$invid] > sprint($inv['balance'])) { $warning = "<td><li class='err'>Paying More Than Total Amount Outstanding.</li></td>"; } else { $warning = ""; } if ($doset) { if (!isset($stock_setamt[$invid])) { $stock_setamt[$invid] = ""; } $showset = "<td>" . CUR . " " . sprint($stock_setamt[$invid]) . "</td>"; } else { $showset = "<td></td>"; } $confirm .= "\n\t\t\t\t\t<input type='hidden' name='paidamt[{$key}]' size='7' value='{$paidamt[$invid]}'>\n\t\t\t\t\t<input type='hidden' name='stock_setamt[{$key}]' value='{$stock_setamt[$invid]}'>\n\t\t\t\t\t<input type='hidden' size='20' name='invids[{$key}]' value='{$inv['invid']}'>\n\t\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t\t<td>{$inv['invnum']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t<td>{$inv['terms']} days</td>\n\t\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$paidamt[$key]}</td>\n\t\t\t\t\t\t{$showset}\n\t\t\t\t\t\t{$warning}\n\t\t\t\t\t</tr>"; } else { if (!isset($ptype[$key])) { /* NON STOCK INVOICE ! */ db_connect(); $sql = "SELECT invnum,invid,balance,sdate as odate FROM nons_invoices\n\t\t\t\t\t\tWHERE invid = '{$invids[$key]}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to access database."); if (pg_numrows($invRslt) < 1) { return "<li class='err'> -N- Invalid ord number {$invids[$key]}.</li>"; } $inv = pg_fetch_array($invRslt); $invid = "i" . $inv['invid']; #handle warnings ... if ($paidamt[$invid] + $stock_setamt[$invid] < sprint($inv['balance'])) { $warning = "<td><li class='err'>Paying Less Than Total Amount.</li></td>"; } elseif ($paidamt[$invid] + $stock_setamt[$invid] > sprint($inv['balance'])) { $warning = "<td><li class='err'>Paying More Than Total Amount Outstanding.</li></td>"; } else { $warning = ""; } if ($doset) { if (!isset($stock_setamt[$invid])) { $stock_setamt[$invid] = ""; } $showset = "<td>" . CUR . " " . sprint($stock_setamt[$invid]) . "</td>"; } else { $showset = "<td></td>"; } $confirm .= "\n\t\t\t\t\t<input type='hidden' size='20' name='invids[{$key}]' value='{$inv['invid']}'>\n\t\t\t\t\t<input type='hidden' name='paidamt[{$key}]' size='7' value='" . $paidamt[$key] . "'>\n\t\t\t\t\t<input type='hidden' name='stock_setamt[{$key}]' value='{$stock_setamt[$key]}'>\n\t\t\t\t\t<input type='hidden' name='itype[{$key}]' value='PcP'>\n\t\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t\t<td>{$inv['invnum']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t\t<td>" . CUR . " " . $paidamt[$key] . "</td>\n\t\t\t\t\t\t{$showset}\n\t\t\t\t\t\t{$warning}\n\t\t\t\t\t</tr>"; } else { /* POS INVOICE ! */ $sqls = array(); for ($i = 1; $i <= 12; ++$i) { $sqls[] = "SELECT invnum,invid,balance,odate FROM \"{$i}\".pinvoices WHERE invid = '{$invids[$key]}' AND div = '" . USER_DIV . "'"; } $sql = implode(" UNION ", $sqls); // (1jun07) only checks the current prd ?????? // db_conn(PRD_DB); // $sql = "SELECT invnum,invid,balance,odate FROM pinvoices // WHERE invid = '$invids[$key]' AND div = '".USER_DIV."'"; $invRslt = db_exec($sql) or errDie("Unable to access database."); if (pg_numrows($invRslt) < 1) { return "<li class='err'> -P- Invalid ord number {$invids[$key]}.</li>"; } $inv = pg_fetch_array($invRslt); $invid = "p" . $inv['invid']; #handle warnings ... if ($paidamt[$invid] + $stock_setamt[$invid] < sprint($inv['balance'])) { $warning = "<td><li class='err'>Paying Less Than Total Amount.</li></td>"; } elseif ($paidamt[$invid] + $stock_setamt[$invid] > sprint($inv['balance'])) { $warning = "<td><li class='err'>Paying More Than Total Amount Outstanding.</li></td>"; } else { $warning = ""; } if ($doset) { if (!isset($stock_setamt[$invid])) { $stock_setamt[$invid] = ""; } $showset = "<td>" . CUR . " " . sprint($stock_setamt[$invid]) . "</td>"; } else { $showset = "<td></td>"; } $confirm .= "\n\t\t\t\t\t<input type='hidden' size='20' name='invids[{$key}]' value='{$inv['invid']}'>\n\t\t\t\t\t<input type='hidden' name='paidamt[{$key}]' size='7' value='" . $paidamt[$key] . "'>\n\t\t\t\t\t<input type='hidden' name='stock_setamt[{$key}]' value='{$stock_setamt[$key]}'>\n\t\t\t\t\t<input type='hidden' name='ptype[{$key}]' value='PcP'>\n\t\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t\t<td>{$inv['invnum']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t\t<td>" . CUR . " " . $paidamt[$key] . "</td>\n\t\t\t\t\t\t{$showset}\n\t\t\t\t\t\t{$warning}\n\t\t\t\t\t</tr>"; } } } if (open()) { db_conn('cubit'); $Sl = "SELECT * FROM open_stmnt WHERE balance>0 AND cusnum='{$cusid}' ORDER BY date"; $Ri = db_exec($Sl) or errDie("Unable to get open items."); //$open_out=$out; $ox = ""; $i = 0; while ($od = pg_fetch_array($Ri)) { $oid = $od['id']; if (!isset($open_amount[$oid]) || $open_amount[$oid] == 0) { continue; } $ox .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' size='20' name='open[{$oid}]' value='{$oid}'>{$od['type']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$od['balance']}</td>\n\t\t\t\t\t\t<td>{$od['date']}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='open_amount[{$oid}]' value='{$open_amount[$oid]}'>" . CUR . " {$open_amount[$oid]}</td>\n\t\t\t\t\t</tr>"; $i++; } $confirm .= "\n\t\t\t\t<tr><td colspan='2'><br></td></tr>\n\t\t\t\t<tr><td colspan='2'>\n\t\t\t\t\t<h3>Outstanding Transactions</h3></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Description</th>\n\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t<th>Amount</th>\n\t\t\t\t</tr>\n\t\t\t\t{$ox}"; } } vsprint($out); vsprint($out1); vsprint($out2); vsprint($out3); vsprint($out4); vsprint($out5); /* <tr> <td colspan='5' align='right'><input type='submit' name='batch' value='Add To Batch'></td> </tr> */ $confirm .= "\n\t\t<input type='hidden' name='out1' value='{$out1}'>\n\t\t<input type='hidden' name='out2' value='{$out2}'>\n\t\t<input type='hidden' name='out3' value='{$out3}'>\n\t\t<input type='hidden' name='out4' value='{$out4}'>\n\t\t<input type='hidden' name='out5' value='{$out5}'>\n\t\t" . TBL_BR . "\n\t\t<tr>\n\t\t\t<td><input type='submit' name='back' value='« Correction'></td>\n\t\t\t<td align='right' colspan='4'><input type='submit' value='Write »'></td>\n\t\t</tr>\n\t\t</table>\n\t\t</form>" . mkQuickLinks(ql("../core/trans-new.php", "Journal Transactions"), ql("../customers-view.php", "View Customers")); return $confirm; }
function create_dummy($deptid) { db_connect(); # Dummy Vars $supid = 0; $remarks = ""; $supname = ""; $supaddr = ""; $supno = ""; $terms = "0"; $total = 0; $subtot = 0; $pdate = date("Y-m-d"); $ddate = date("Y-m-d"); $shipchrg = "0.00"; if (getSetting("PURCH_APPRV") == 'napprv') { $apprv = 'y'; } else { $apprv = 'n'; } $purnum = divlastid('pur', USER_DIV); # Insert purchase to DB $sql = "INSERT INTO purchases(deptid, supid, supname, supaddr, supno, terms, pdate, ddate, shipchrg, subtot, total, balance, vatinc, vat, remarks, received, done, prd, cash, div, purnum, apprv)"; $sql .= " VALUES('{$deptid}', '{$supid}', '{$supname}', '{$supaddr}', '{$supno}', '{$terms}', '{$pdate}', '{$ddate}', '{$shipchrg}', '{$subtot}', '{$total}', '{$total}', 'yes', '0', '{$remarks}', 'n', 'n', '" . PRD_DB . "', 'y', '" . USER_DIV . "', '{$purnum}', '{$apprv}')"; $rslt = db_exec($sql) or errDie("Unable to insert Purchase to Cubit.", SELF); # Get next ordnum //$purid = pglib_lastid ("purchases", "purid"); $purid = lastpurid(); return $purid; }
function details($_GET) { $showvat = TRUE; # get vars extract($_GET); # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid invoice number."); # display errors, if any if ($v->isError()) { $err = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class='err'>" . $e["msg"] . "</li>"; } $confirm .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } db_connect(); # Get invoice info $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); $td = $inv['odate']; # CHECK IF THIS DATE IS IN THE BLOCKED RANGE $blocked_date_from = getCSetting("BLOCKED_FROM"); $blocked_date_to = getCSetting("BLOCKED_TO"); if (strtotime($td) >= strtotime($blocked_date_from) and strtotime($td) <= 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>"; } $sql = "SELECT stkid FROM inv_items WHERE invid = '{$inv['invid']}' AND div = '" . USER_DIV . "'"; $crslt = db_exec($sql); if (pg_numrows($crslt) < 1) { $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has no items.</li>"; $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $error; } # check if invoice has been printed if ($inv['printed'] == "y") { $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has already been printed.</li>"; $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $error; } # check if invoice has been serialised if ($inv['serd'] == "n") { $error = "<li class='err'> Error : You must select serial numbers for some Items on Invoice No. <b>T {$invid}</b> before you can print it.</li>"; $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $error; } cus_xrate_update($inv['fcid'], $inv['xrate']); # Begin Updates pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $invnum = divlastid('inv', USER_DIV); $Sl = "INSERT INTO ncsrec (oldnum, newnum, div) VALUES ('{$invid}', '{$invnum}', '" . USER_DIV . "')"; $Rs = db_exec($Sl) or errDie("Unable to insert into db"); # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$inv['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); } /* --- Start Products Display --- */ # Products layout $commision = 0; $products = ""; $disc = 0; # get selected stock in this invoice db_connect(); $sql = "SELECT * FROM inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $taxex = 0; while ($stkd = pg_fetch_array($stkdRslt)) { # get warehouse name db_conn("exten"); $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); # get selected stock in this warehouse db_connect(); $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'"; $stkRslt = db_exec($sql); $stk = pg_fetch_array($stkRslt); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please select the vatcode for all your stock."; } $vd = pg_fetch_array($Ri); $sp = ""; # Check Tax Excempt if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $taxex += $stkd['amt']; $ex = "#"; } else { $ex = ""; } # all must be excempted if ($inv['chrgvat'] == 'nov') { $ex = "#"; } # Keep track of discounts $disc += $stkd['disc'] * $stkd['qty']; # Insert stock record $sdate = date("Y-m-d"); $csprice = sprint($stk['csprice'] * $stkd['qty']); # Get amount exluding vat if including and not exempted $VATP = TAX_VAT; $amtexvat = sprint($stkd['famt']); if ($inv['chrgvat'] == "inc" && $stk['exvat'] != 'yes') { $amtexvat = sprint($stkd['famt'] * 100 / (100 + $VATP)); } db_connect(); $sql = "\n\t\t\tINSERT INTO stockrec (\n\t\t\t\tedate, stkid, stkcod, stkdes, trantype, qty, csprice, csamt, \n\t\t\t\tdetails, div\n\t\t\t) VALUES (\n\t\t\t\t'{$td}', '{$stkd['stkid']}', '{$stk['stkcod']}', '{$stk['stkdes']}', 'invoice', '{$stkd['qty']}', '{$amtexvat}', '{$csprice}', \n\t\t\t\t'Stock sold - Invoice No. {$invnum}', '" . USER_DIV . "'\n\t\t\t)"; $recRslt = db_exec($sql); # Sales rep commission $commision = $commision + coms($inv['salespn'], $stkd['amt'], $stk['com']); # Put in product $products .= "\n\t\t\t<tr valign='top'>\n\t\t\t\t<td>{$stk['stkcod']}</td>\n\t\t\t\t<td>{$ex} {$sp} {$stk['stkdes']}</td>\n\t\t\t\t<td>" . sprint3($stkd['qty']) . "</td>\n\t\t\t\t<td>{$inv['currency']} " . sprint($stkd['unitcost']) . "</td>\n\t\t\t\t<td>{$inv['currency']} {$stkd['disc']}</td>\n\t\t\t\t<td>{$inv['currency']} {$stkd['amt']}</td>\n\t\t\t</tr>"; } /* --- Start Some calculations --- */ # Subtotal $SUBTOT = sprint($inv['subtot']); # Calculate subtotal $VATP = TAX_VAT; $SUBTOTAL = sprint($inv['subtot']); $VAT = sprint($inv['vat']); $TOTAL = sprint($inv['total']); $inv['delchrg'] = sprint($inv['delchrg']); $FSUBTOT = sprint($inv['subtot'] * $inv['xrate']); $FVAT = sprint($inv['vat'] * $inv['xrate']); $FTOTAL = sprint($inv['total'] * $inv['xrate']); $fdelchrg = sprint($inv['delchrg'] * $inv['xrate']); $ftraddiscm = sprint($inv['discount'] * $inv['xrate']); com_invoice($inv['salespn'], $FTOTAL, $commision * $inv['xrate'], $invnum, $td); /* --- End Some calculations --- */ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "int"); /* - End Hooks - */ # Todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); $refnum = getrefnum(); /*$refnum*/ /* --- Updates ---- */ db_connect(); $Sql = "UPDATE invoices SET printed ='y', done ='y', invnum='{$invnum}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($Sql) or errDie("Unable to update invoice information"); # Record the payment on the statement $sql = "\n\t\tINSERT INTO stmnt (\n\t\t\tcusnum, invid, amount, date, type, div, allocation_date\n\t\t) VALUES (\n\t\t\t'{$inv['cusnum']}','{$invnum}', '{$TOTAL}', '{$inv['odate']}', 'Invoice', '" . USER_DIV . "', '{$inv['odate']}'\n\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # Record the payment on the statement $sql = "\n\t\tINSERT INTO open_stmnt (\n\t\t\tcusnum, invid, amount, balance, date, type, div\n\t\t) VALUES (\n\t\t\t'{$inv['cusnum']}', '{$invnum}', '{$TOTAL}', '{$TOTAL}', '{$inv['odate']}', 'Invoice', '" . USER_DIV . "'\n\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # Save invoice discount $sql = "\n\t\tINSERT INTO inv_discs (\n\t\t\tcusnum, invid, traddisc, itemdisc, inv_date, delchrg, div, \n\t\t\ttotal\n\t\t) VALUES (\n\t\t\t'{$inv['cusnum']}', '{$invnum}', '{$ftraddiscm}', '{$disc}', '{$inv['odate']}', '{$fdelchrg}', '" . USER_DIV . "', \n\t\t\t({$FSUBTOT}+{$fdelchrg})\n\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 + '{$FTOTAL}'), fbalance = (fbalance + '{$TOTAL}') WHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Make ledge record custledger($inv['cusnum'], $dept['incacc'], $td, $invnum, "Invoice No. {$invnum}", $FTOTAL, "d"); db_connect(); # get selected stock in this invoice $sql = "SELECT * FROM inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $tcosamt = 0; while ($stkd = pg_fetch_array($stkdRslt)) { db_connect(); # get selamt from selected stock $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'"; $stkRslt = db_exec($sql); $stk = pg_fetch_array($stkRslt); # cost amount $cosamt = round($stkd['qty'] * $stk['csprice'], 2); # update stock(alloc - qty) $sql = "UPDATE stock SET csamt = (csamt - '{$cosamt}'),units = (units - '{$stkd['qty']}'),alloc = (alloc - '{$stkd['qty']}') WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); ###################VAT CALCS####################### $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") { $showvat = FALSE; } $vr = vatcalc($stkd['amt'], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; $iamount = $iamount * $inv['xrate']; $ivat = $ivat * $inv['xrate']; vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}", $iamount, $ivat); #################################################### if ($stk['serd'] == 'yes') { ext_invSer($stkd['serno'], $stkd['stkid'], "{$inv['cusname']} {$inv['surname']}", $invnum); } # stkid, stkcod, stkdes, trantype, edate, qty, csamt, details $sdate = date("Y-m-d"); stockrec($stk['stkid'], $stk['stkcod'], $stk['stkdes'], 'ct', $td, $stkd['qty'], $cosamt, "Sold to Customer : {$inv['surname']} - Invoice No. {$invnum}"); # get accounts db_conn("exten"); $sql = "SELECT stkacc,cosacc FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $stockacc = $wh['stkacc']; $cosacc = $wh['cosacc']; # dt(cos) ct(stock) writetrans($cosacc, $stockacc, $td, $refnum, $cosamt, "Cost Of Sales for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}"); $tcosamt += $cosamt; } ###################VAT CALCS####################### $inv['delvat'] += 0; db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$inv['delvat']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { $Sl = "SELECT * FROM vatcodes"; $Ri = db_exec($Sl); } $vd = pg_fetch_array($Ri); if ($vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($inv['delchrg'], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; $iamount = $iamount * $inv['xrate']; $ivat = $ivat * $inv['xrate']; vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}", $iamount, $ivat); #################################################### /* - Start Transactoins - */ # dt(debtors) ct(income/sales) writetrans($dept['debtacc'], $dept['incacc'], $td, $refnum, $FTOTAL - $FVAT, "Debtors Control for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}"); # dt(debtors) ct(vat account) writetrans($dept['debtacc'], $vatacc, $td, $refnum, $FVAT, "VAT Received on Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}"); db_connect(); $sql = "\n\t\tINSERT INTO salesrec (\n\t\t\tedate, invid, invnum, debtacc, vat, total, typ, div\n\t\t) VALUES (\n\t\t\t'{$inv['odate']}', '{$invid}', '{$invnum}', '{$dept['debtacc']}', '{$FVAT}', '{$FTOTAL}', 'stk', '" . USER_DIV . "'\n\t\t)"; $recRslt = db_exec($sql); db_conn('cubit'); $Sl = "\n\t\tINSERT INTO sj (\n\t\t\tcid, name, des, date, exl, vat, inc, div\n\t\t) VALUES (\n\t\t\t'{$inv['cusnum']}', '{$inv['surname']}', 'International Invoice {$invnum}', '{$inv['odate']}', '" . sprint($FTOTAL - $FVAT) . "', \n\t\t\t'{$FVAT}', '" . sprint($FTOTAL) . "', '" . USER_DIV . "'\n\t\t)"; $Ri = db_exec($Sl); # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); /* - End Transactoins - */ # vat explanation if ($inv['chrgvat'] == 'nov') { $expl = "VAT Exempt indicator"; } else { $expl = "0% VAT indicator"; $expl = "VAT Exempt indicator"; } # Avoid little box, <table border=1> <-- ehhhemm !! if (strlen($inv['comm']) > 0) { $inv['comm'] = "\n\t\t\t<table border='1' cellspacing='0' bordercolor='#000000'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>" . nl2br($inv['comm']) . "</td>\n\t\t\t\t</tr>\n\t\t\t</table>"; } if ($inv['chrgvat'] == "inc") { $inv['chrgvat'] = "Inclusive"; } elseif ($inv['chrgvat'] == "exc") { $inv['chrgvat'] = "Exclusive"; } else { $inv['chrgvat'] = "No vat"; } if (!isset($showvat)) { $showvat = TRUE; } if ($showvat == TRUE) { $vat14 = AT14; } else { $vat14 = ""; } $cc = "<script> sCostCenter('dt', 'Sales', '{$inv['odate']}', 'Invoice No.{$invnum} for Customer {$inv['cusname']} {$inv['surname']}', '" . ($FTOTAL - $FVAT) . "', 'Cost Of Sales for Invoice No.{$invnum}', '{$tcosamt}', ''); </script>"; /* -- Final Layout -- */ $details = "\n\t\t<center>\n\t\t{$cc}\n\t\t<h2>Tax Invoice</h2>\n\t\t<table cellpadding='0' cellspacing='4' border='0' width='750'>\n\t\t\t<tr>\n\t\t\t\t<td valign='top' width='30%'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td>{$inv['surname']}</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>" . nl2br($inv['cusaddr']) . "</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>(VAT No. {$inv['cusvatno']})</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td valign='top' width='30%'>\n\t\t\t\t\t" . COMP_NAME . "<br>\n\t\t\t\t\t" . COMP_ADDRESS . "<br>\n\t\t\t\t\t" . COMP_PADDR . "<br>\n\t\t\t\t\t" . COMP_TEL . "<br>\n\t\t\t\t\t" . COMP_FAX . "<br>\n\t\t\t\t\tReg No. " . COMP_REGNO . "<br>\n\t\t\t\t\tVAT No. " . COMP_VATNO . "<br>\n\t\t\t\t</td>\n\t\t\t\t<td width='20%'>\n\t\t\t\t\t<img src='compinfo/getimg.php' width='230' height='47'>\n\t\t\t\t</td>\n\t\t\t\t<td valign='bottom' align='right' width='20%'>\n\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1' bordercolor='#000000'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>Invoice No.</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$invnum}</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><b>Proforma Inv No.</b></td>\n\t\t\t\t\t\t\t<td>{$inv['docref']}</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><b>Order No.</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['ordno']}</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><b>Terms</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['terms']} Days</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><b>Invoice Date</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['odate']}</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><b>VAT</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['chrgvat']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'>\n\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width='100%' bordercolor='#000000'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>ITEM NUMBER</b></td>\n\t\t\t\t\t\t\t<td width='45%'><b>DESCRIPTION</b></td>\n\t\t\t\t\t\t\t<td><b>QTY</b></td>\n\t\t\t\t\t\t\t<td><b>UNIT PRICE</b></td>\n\t\t\t\t\t\t\t<td><b>DISCOUNT</b></td>\n\t\t\t\t\t\t\t<td><b>AMOUNT</b></td>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t{$products}\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>{$inv['comm']}</td>\n\t\t\t\t<td>" . BNK_BANKDET . "</td>\n\t\t\t\t<td align='right' colspan='2'>\n\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width='50%' bordercolor='#000000'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>SUBTOTAL</b></td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$SUBTOT}</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><b>Trade Discount</b></td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$inv['discount']}</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><b>Delivery Charge</b></td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$inv['delivery']}</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><b>VAT {$vat14}</b></td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$VAT}</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><b>GRAND TOTAL<b></td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$TOTAL}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td colspan='2'>{$expl} = #</td>\n\t\t\t\t\t\t</tr>\n\t\t\t </table>\n\t\t\t\t</td>\n\t\t\t\t<td><br></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</center>"; $OUTPUT = $details; require "tmpl-print.php"; }
function write($_POST) { # get vars extract($_POST); $rounding += 0; $pcredit += 0; $vatamount = 0; # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid invoice number."); $v->isOk($prd, "num", 1, 20, "Invalid period number."); $v->isOk($comm, "string", 0, 255, "Invalid Comments."); $v->isOk($terms, "num", 1, 20, "Invalid terms."); $v->isOk($odate, "date", 1, 14, "Invalid Invoice note date."); $v->isOk($traddisc, "float", 0, 20, "Invalid Trade Discount."); $v->isOk($delchrg, "float", 0, 20, "Invalid Delivery Charge."); $v->isOk($SUBTOT, "float", 0, 20, "Invalid Delivery Charge."); # Used to generate errors $error = "asa@"; # Check quantities if (isset($qtys)) { foreach ($qtys as $keys => $qty) { $v->isOk($qty, "float", 1, 15, "Invalid Returned Quantity."); $v->isOk($disc[$keys], "float", 0, 20, "Invalid Discount."); $v->isOk($discp[$keys], "float", 0, 20, "Invalid Discount Percentage."); } } else { $v->isOk($error, "num", 0, 1, "Invalid Returned Quantity."); } # Check stkids[] if (isset($stkids)) { foreach ($stkids as $keys => $stkid) { $v->isOk($stkid, "num", 1, 10, "Invalid Stock number, please enter all details.{$stkid}"); } } else { $v->isOk($error, "num", 0, 1, "Invalid Stock number, please enter all details."); } # Check amt[] if (isset($amt)) { foreach ($amt as $keys => $amount) { $v->isOk($amount, "float", 1, 20, "Invalid Amount, please enter all details."); } } else { $v->isOk($error, "num", 0, 1, "Invalid Amount, 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 error($_POST, $err); } pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); /* -------------------------------- */ # Get invoice info db_conn($prd); $sql = "SELECT * FROM pinvoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); if ($rounding > 0) { db_conn('core'); $Sl = "SELECT * FROM salesacc WHERE name='rounding'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please set the rounding account, under sales settings."; } $ad = pg_fetch_array($Ri); $rac = $ad['accnum']; } $notenum = divlastid('note', USER_DIV); /* --- Start Products Display --- */ # Products layout $products = ""; $taxex = 0; foreach ($qtys as $keys => $value) { db_connect(); # 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 in this invoice db_conn($prd); $sql = "SELECT * FROM pinv_items WHERE id = '{$sids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); #check serial number if (strlen($stkd['ss']) > 0) { $me = $stkd['ss']; } else { $me = $stkd['serno']; } #determine which table to connect to switch (substr($me, strlen($me) - 1, 1)) { case "0": $tab = "ss0"; break; case "1": $tab = "ss1"; break; case "2": $tab = "ss2"; break; case "3": $tab = "ss3"; break; case "4": $tab = "ss4"; break; case "5": $tab = "ss5"; break; case "6": $tab = "ss6"; break; case "7": $tab = "ss7"; break; case "8": $tab = "ss8"; break; case "9": $tab = "ss9"; break; default: $tab = "ss0"; } db_connect(); $upd = "UPDATE {$tab} SET active = 'yes' WHERE code = '{$stkd['ss']}' OR code = '{$stkd['serno']}'"; $run_upd = db_exec($upd) or errDie("Unable to update stock serial numbers"); # get warehouse name db_conn("exten"); $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); # Calculate the Discount discount if ($disc[$keys] < 1) { if ($discp[$keys] > 0) { $disc[$keys] = $discp[$keys] / 100 * $stkd['unitcost']; } } else { $discp[$keys] = $disc[$keys] * 100 / $stkd['unitcost']; } # Calculate amount $amt[$keys] = $qtys[$keys] * ($stkd['unitcost'] - $disc[$keys]); db_connect(); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; $vatamount += $ivat; # Check Tax Excempt if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $taxex += $amt[$keys]; } if ($stkd['account'] != 0) { # put in product $products .= "\n\t\t\t<input type='hidden' name='vatcode[]' value='{$stkd['vatcode']}' />\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'><input type='hidden' name='stkids[]' value='{$stk['stkid']}'>{$stkd['description']}</td>\n\t\t\t\t<td><input type='hidden' size='5' name='qtys[]' value='{$qtys[$keys]}'>{$qtys[$keys]}</td>\n\t\t\t\t<td nowrap>" . CUR . " {$stkd['unitcost']}</td>\n\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$amt[$keys]}'>" . CUR . " {$amt[$keys]}</td>\n\t\t\t</tr>"; } else { # put in product $products .= "\n\t\t\t<input type='hidden' name='vatcode[]' value='{$stkd['vatcode']}' />\n\t\t\t<tr>\n\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stk['stkid']}'>{$stk['stkcod']}</td>\n\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t<td><input type='hidden' size='5' name='qtys[]' value='{$qtys[$keys]}'>{$qtys[$keys]}</td>\n\t\t\t\t<td nowrap>" . CUR . " {$stkd['unitcost']}</td>\n\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$amt[$keys]}'>" . CUR . " {$amt[$keys]}</td>\n\t\t\t</tr>"; } } # get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$inv['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); } /* calculate delivery charge vat */ db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$inv['delvat']}'"; $Ri = db_exec($Sl); $vd = pg_fetch_array($Ri); $vr = vatcalc($delchrg, $inv['chrgvat'], $vd['zero'] == "Yes" ? "y" : "", $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $vatamount += $ivat; /* --- ----------- Clac --------------------- # calculate subtot $SUBTOT = 0.00; if(isset($amt)) $SUBTOT = array_sum($amt); $SUBTOT -= $taxex; # duplicate $SUBTOTAL = $SUBTOT; $VATP = TAX_VAT; if($inv['chrgvat'] == "exc"){ $SUBTOTAL = $SUBTOTAL; $delexvat= ($delchrg); }elseif($inv['chrgvat'] == "inc"){ $SUBTOTAL = sprint(($SUBTOTAL * 100)/(100 + $VATP)); $delexvat = sprint(($delchrg * 100)/($VATP + 100)); }else{ $SUBTOTAL = ($SUBTOTAL); $delexvat = ($delchrg); } $SUBTOT = $SUBTOTAL; $EXVATTOT = $SUBTOT; $EXVATTOT += $delexvat; # Minus trade discount from taxex if($traddisc > 0){ $traddiscmtt = (($traddisc/100) * $taxex); }else{ $traddiscmtt = 0; } $taxext = ($taxex - $traddiscmtt); if($traddisc > 0) { $traddiscmt = ($EXVATTOT * ($traddisc/100)); }else{ $traddiscmt = 0; } $EXVATTOT -= $traddiscmt; // $EXVATTOT -= $taxex; $traddiscmt = sprint($traddiscmt + $traddiscmtt); $traddiscm = $traddiscmt; if($inv['chrgvat'] != "nov"){ $VAT = sprint($EXVATTOT * ($VATP/100)); }else{ $VAT = 0; } $TOTAL = sprint($EXVATTOT + $VAT + $taxext); $SUBTOT += $taxex; /* --- ----------- Clac --------------------- */ /* --- ----------- Clac --------------------- */ ##----------------------NEW---------------------- $chrgvat = $inv['chrgvat']; $sub = 0.0; if (isset($amt)) { $sub = sprint(array_sum($amt)); } $VATP = TAX_VAT; if ($chrgvat == "exc") { $taxex = sprint($taxex - $taxex * $traddisc / 100); $subtotal = sprint($sub + $delchrg); $traddiscmt = sprint($subtotal * $traddisc / 100); $subtotal = sprint($subtotal - $traddiscmt); //$VAT=sprint(($subtotal-$taxex)*$VATP/100); $VAT = sprint($vatamount); $SUBTOT = $sub; $TOTAL = sprint($subtotal + $VAT); $delexvat = sprint($delchrg); } elseif ($chrgvat == "inc") { $ot = $taxex; $taxex = sprint($taxex - $taxex * $traddisc / 100); $subtotal = sprint($sub + $delchrg); $traddiscmt = sprint($subtotal * $traddisc / 100); $subtotal = sprint($subtotal - $traddiscmt); //$VAT=sprint(($subtotal-$taxex)*$VATP/(100+$VATP)); $VAT = sprint($vatamount); $SUBTOT = sprint($sub); $TOTAL = sprint($subtotal); $delexvat = sprint($delchrg); $traddiscmt = sprint($traddiscmt); } else { $subtotal = sprint($sub + $delchrg); $traddiscmt = sprint($subtotal * $traddisc / 100); $subtotal = sprint($subtotal - $traddiscmt); $VAT = sprint(0); $SUBTOT = $sub; $TOTAL = $subtotal; $delexvat = sprint($delchrg); } /* --- ----------- Clac --------------------- */ ##----------------------END---------------------- # Get invoice info db_conn($prd); $sql = "SELECT * FROM pinvoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<li class='err'>Invoice Not Found</li>"; } $inv = pg_fetch_array($invRslt); if ($inv['balance'] >= $TOTAL) { $invpay = $TOTAL; $examt = 0; } else { $invpay = $inv['balance']; $examt = $TOTAL - $invpay; } /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "VAT"); /* - End Hooks - */ # todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); $refnum = getrefnum(); /*refnum*/ # insert invoice to period DB if ($inv['cusnum'] != "0") { #then get the actual customer db_connect(); $get_cus = "SELECT * FROM customers WHERE cusnum = '{$inv['cusnum']}' LIMIT 1"; $run_cus = db_exec($get_cus) or errDie("Unable to get customer information"); if (pg_numrows($run_cus) < 1) { #do nothing } else { $carr = pg_fetch_array($run_cus); $inv['cusname'] = "{$carr['cusname']}"; $inv['surname'] = "{$carr['surname']}"; } } db_conn($prd); # Format date $odate = explode("-", $odate); $rodate = $odate[2] . "-" . $odate[1] . "-" . $odate[0]; $td = $rodate; # Insert invoice credit note to DB $sql = "INSERT INTO inv_notes(deptid, notenum, invnum, invid, cusnum, cordno, ordno,\n\t\t\t\tchrgvat, terms, traddisc, salespn, odate, delchrg, subtot, vat, total, comm,\n\t\t\t\tusername, div, surname, cusaddr, cusvatno, telno, deptname, prd)"; $sql .= " VALUES('{$inv['deptid']}', '{$notenum}', '{$inv['invnum']}', '{$inv['invid']}',\n\t\t\t\t'{$inv['cusnum']}', '{$inv['cordno']}', '{$inv['ordno']}', '{$inv['chrgvat']}',\n\t\t\t\t'{$terms}', '{$traddiscmt}', '{$inv['salespn']}', '{$rodate}', '{$delexvat}',\n\t\t\t\t'{$SUBTOT}', '{$VAT}' , '{$TOTAL}', '{$comm}', '" . USER_NAME . "', '" . USER_DIV . "',\n\t\t\t\t'{$inv['cusname']} {$inv['surname']}', '{$inv['cusaddr']}', '{$inv['cusvatno']}', '{$inv['telno']}',\n\t\t\t\t'{$inv['deptname']}', {$inv['prd']})"; $rslt = db_exec($sql) or errDie("Unable to insert invoice to Cubit.", SELF); $invnum = $inv['invnum']; # Get next ordnum $noteid = pglib_lastid("inv_notes", "noteid"); db_conn($prd); # Begin updating $nbal = $inv['nbal'] + $TOTAL; # Update the invoice (make balance less) $sql = "UPDATE pinvoices SET nbal = '{$nbal}', rdelchrg = (rdelchrg + '{$delchrg}'), balance = balance - '{$invpay}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); $av = $VAT; $at = $TOTAL - $VAT; /* $inv['pcash']=$pcash; $inv['pcheque']=$pcheque; $inv['pcc']=$pcc; $inv['pcredit']=$pcredit;*/ $sd = date("Y-m-d"); db_conn('cubit'); $Sl = "SELECT * FROM payrec WHERE inv='{$invnum}'"; $Ri = db_exec($Sl); $data = pg_fetch_array($Ri); $user = $data['by']; $ro = $rounding; $ro += 0; $nsp = 0; # Commit updating $inv['pcash'] = $pcash; $inv['pcheque'] = $pcheque; $inv['pcc'] = $pcc; $inv['pcredit'] = $pcredit; $pcreditback = $pcredit; # Make ledge record //custledger($inv['cusnum'], $dept['incacc'], $td, $notenum, "Credit Note No. $notenum for invoice No. $inv[invnum]", $TOTAL, "c"); $commision = 0; if ($examt > 0) { # Make record for age analisys //custCTP($examt, $inv['cusnum'],$td); } $discs = 0; $salesp = qrySalesPersonN($inv["salespn"]); foreach ($qtys as $keys => $value) { db_connect(); # 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 in this invoice db_conn($prd); $sql = "SELECT * FROM pinv_items WHERE id = '{$sids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; //print $sql; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); $stkd['account'] += 0; if ($stkd['account'] == 0) { # Keep track of discounts $discs += $stkd['disc'] * $stkd['qty']; db_connect(); $Sl = "SELECT * FROM scr WHERE inv='{$inv['invnum']}' AND stkid='{$stkd['stkid']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) > 0) { $cd = pg_fetch_array($Ri); $stk['csprice'] = $cd['amount']; } else { $stk["csprice"] = 0; } # cost amount if ($stk['csprice'] == "0.00") { $cosamt = round($qtys[$keys] * $stk['lcsprice'], 2); } else { $cosamt = round($qtys[$keys] * $stk['csprice'], 2); } db_connect(); # Update stock(onhand + qty) $sql = "UPDATE stock SET csamt = (csamt + '{$cosamt}'), units = (units + '{$qtys[$keys]}') WHERE stkid = '{$stkids[$keys]}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); # fix stock cost amount $Sl = "UPDATE stock set csprice=csamt/units WHERE stkid = '{$stkids[$keys]}' AND units>0"; $Ri = db_exec($Sl) or errDie("Unable to update stock cost price in Cubit.", SELF); if ($stk['serd'] == 'yes') { ext_InSer($stkd['serno'], $stkd['stkid'], "{$inv['cusname']} {$inv['surname']}", $notenum, 'note', $td); } # negetive values to minus profit $nqty = $qtys[$keys] * 1; $namt = $amt[$keys] * -1; $ncsprice = $cosamt * -1; $noted = $stkd['noted'] + $qtys[$keys]; # stkid, stkcod, stkdes, trantype, edate, qty, csamt, details stockrec($stkd['stkid'], $stk['stkcod'], $stk['stkdes'], 'dt', $td, $nqty, $cosamt, "Credit note for Customer : {$inv['surname']} - Credit note No. {$notenum}"); db_connect(); # Get amount exluding vat if including and not exempted $VATP = TAX_VAT; $amtexvat = $amt[$keys]; ###################VAT CALCS####################### $Sl = "SELECT * FROM cubit.vatcodes WHERE id='{$stk['vatcode']}'"; $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 ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd["vat_amount"]); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "VAT for Credit note: {$notenum} Customer : {$inv['surname']}", -$iamount, -$ivat); #################################################### $sql = "INSERT INTO stockrec(edate, stkid, stkcod, stkdes, trantype, qty, csprice, csamt, details, div)\n\t\t\t\tVALUES('{$td}', '{$stk['stkid']}', '{$stk['stkcod']}', '{$stk['stkdes']}', 'note', '{$qtys[$keys]}', '{$amtexvat}', '{$cosamt}', 'Credit note for Customer : {$inv['surname']} - Credit note No. {$notenum}', '" . USER_DIV . "')"; $recRslt = db_exec($sql); if ($salesp["com"] > 0) { $itemcommission = $salesp['com']; } else { $itemcommission = $stk["com"]; } $commision = $commision + coms($inv['salespn'], $amt[$keys], $itemcommission); # Get selected stock in this invoice db_conn($prd); $sql = "UPDATE pinv_items SET noted = '{$noted}' WHERE id = '{$sids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdsRslt = db_exec($sql); # get accounts db_conn("exten"); $sql = "SELECT stkacc,cosacc FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $stockacc = $wh['stkacc']; $cosacc = $wh['cosacc']; # dt(stock) ct(cos) writetrans($stockacc, $cosacc, $td, $refnum, $cosamt, "Cost Of Sales for Credit note No. {$notenum}."); db_conn($prd); # insert invoice items $sql = "INSERT INTO inv_note_items(noteid, whid, stkid, qty, amt, div, vatcode) \n\t\t\t\t\tVALUES('{$noteid}', '{$stkd['whid']}', '{$stkids[$keys]}', '{$qtys[$keys]}', \n\t\t\t\t\t\t'{$amt[$keys]}', '" . USER_DIV . "', '{$vatcode[$keys]}')"; $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF); db_connect(); $date = date("Y-m-d"); $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\n\t\t\tVALUES('{$rodate}', '{$noteid}', '{$notenum}', '{$dept['debtacc']}', '{$ivat}', '{$iamount}', 'nstk', '" . USER_DIV . "')"; $recRslt = db_exec($sql); } else { db_connect(); ###################VAT CALCS####################### $noted = $stkd['noted'] + $qtys[$keys]; db_conn($prd); $sql = "UPDATE pinv_items SET noted = '{$noted}' WHERE id = '{$sids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdsRslt = db_exec($sql); db_conn($prd); # insert invoice items $sql = "INSERT INTO inv_note_items(noteid, whid, stkid, qty, amt, div,description, vatcode) \n\t\t\t\t\tVALUES('{$noteid}', '{$stkd['vatcode']}', '{$stkids[$keys]}', '{$qtys[$keys]}', '{$amt[$keys]}', '" . USER_DIV . "', '{$stkd['description']}', '{$vatcode[$keys]}')"; $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF); db_connect(); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd["vat_amount"]); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; $av -= $ivat; $at -= $iamount; vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Credit note No. {$notenum} for Customer : {$inv['cusname']} {$inv['surname']}", -$iamount, -$ivat); #################################################### $amtexvat = sprint($stkd['amt']); db_connect(); $sdate = date("Y-m-d"); $nsp += sprint($iamount - $ivat); if ($salesp["com"] > 0) { $itemcommission = $salesp['com']; } else { $itemcommission = 0; } $commision = $commision + coms($inv['salespn'], $amt[$keys], $itemcommission); // //writetrans($cosacc, $stockacc,$inv['odate'] , $refnum, $cosamt, "Cost Of Sales for Invoice No.$invnum for Customer : $inv[cusname] $inv[surname]"); // writetrans($dept['debtacc'], $stkd['account'],$inv['odate'], $refnum, ($iamount-$ivat), "Debtors Control for Invoice No.$invnum for Customer : $inv[cusname] $inv[surname]"); db_connect(); $date = date("Y-m-d"); $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\n\t\t\tVALUES('{$rodate}', '{$noteid}', '{$notenum}', '{$dept['debtacc']}', '{$ivat}', '{$iamount}', 'nnon', '" . USER_DIV . "')"; $recRslt = db_exec($sql); if ($inv['pcash'] > 0) { $min = $ro; $inv['pcash'] += $ro; $ro = 0; //$amount=$inv['pcash']; if ($inv['pcash'] >= $ivat) { writetrans($vatacc, $dept['pca'], $td, $refnum, $ivat, "VAT Returned for Credit note No. {$notenum}"); $inv['pcash'] = sprint($inv['pcash'] - $ivat); $ivat = 0; if ($inv['pcash'] > 0) { if ($inv['pcash'] >= $iamount) { writetrans($stkd['account'], $dept['pca'], $td, $refnum, $iamount, "Sales for Credit note No. {$notenum}"); $inv['pcash'] = sprint($inv['pcash'] - $iamount); $iamount = 0; } elseif ($inv['pcash'] < $iamount) { writetrans($stkd['account'], $dept['pca'], $td, $refnum, $inv['pcash'], "Sales for Credit note No. {$notenum}"); $iamount = sprint($iamount - $inv['pcash']); $inv['pcash'] = 0; } } } else { writetrans($vatacc, $dept['pca'], $td, $refnum, $inv['pcash'], "VAT Returned for Credit note No. {$notenum}"); $ivat = sprint($ivat - $inv['pcash']); $inv['pcash'] = 0; } // db_conn('cubit'); // // $inv['pcash']-=$min; // // $Sl="INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('$sd','".USER_NAME."','$invnum','$inv[pcash]','Cash','".PRD_DB."','0')"; // $Ri=db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['pcheque'] > 0) { $min = $ro; $inv['pcheque'] += $ro; $ro = 0; //$amount=$inv['pcash']; if ($inv['pcheque'] >= $ivat) { writetrans($vatacc, $dept['pca'], $td, $refnum, $ivat, "VAT Returned for Credit note No. {$notenum}"); $inv['pcheque'] = sprint($inv['pcheque'] - $ivat); $ivat = 0; if ($inv['pcheque'] > 0) { if ($inv['pcheque'] >= $iamount) { writetrans($stkd['account'], $dept['pca'], $td, $refnum, $iamount, "Sales for Credit note No. {$notenum}"); $inv['pcheque'] = sprint($inv['pcheque'] - $iamount); $iamount = 0; } elseif ($inv['pcheque'] < $iamount) { writetrans($stkd['account'], $dept['pca'], $td, $refnum, $inv['pcheque'], "Sales for Credit note No. {$notenum}"); $iamount = sprint($iamount - $inv['pcheque']); $inv['pcheque'] = 0; } } } else { writetrans($vatacc, $dept['pca'], $td, $refnum, $inv['pcheque'], "VAT Returned for Credit note No. {$notenum}"); $ivat = sprint($ivat - $inv['pcheque']); $inv['pcheque'] = 0; } db_conn('cubit'); $inv['pcash'] -= $min; $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$sd}','" . USER_NAME . "','{$invnum}','-{$inv['pcash']}','Cash','" . PRD_DB . "','{$noteid}')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['pcc'] > 0) { db_conn('core'); $Sl = "SELECT * FROM salacc WHERE name='cc'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please set a link for the POS credit card control account"; } $cd = pg_fetch_array($Ri); $cc = $cd['accnum']; $min = $ro; $inv['pcc'] += $ro; $ro = 0; //$amount=$inv['pcash']; if ($inv['pcc'] >= $ivat) { writetrans($vatacc, $cc, $td, $refnum, $ivat, "VAT Returned for Credit note No. {$notenum}"); $inv['pcc'] = sprint($inv['pcc'] - $ivat); $ivat = 0; if ($inv['pcc'] > 0) { if ($inv['pcc'] >= $iamount) { writetrans($stkd['account'], $cc, $td, $refnum, $iamount, "Sales for Credit note No. {$notenum}"); $inv['pcc'] = sprint($inv['pcc'] - $iamount); $iamount = 0; } elseif ($inv['pcc'] < $iamount) { writetrans($stkd['account'], $cc, $td, $refnum, $inv['pcc'], "Sales for Credit note No. {$notenum}"); $iamount = sprint($iamount - $inv['pcc']); $inv['pcc'] = 0; } } } else { writetrans($vatacc, $cc, $td, $refnum, $inv['pcc'], "VAT Returned for Credit note No. {$notenum}"); $ivat = sprint($ivat - $inv['pcc']); $inv['pcc'] = 0; } db_conn('cubit'); $inv['pcash'] -= $min; $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$sd}','" . USER_NAME . "','{$invnum}','-{$inv['pcash']}','Cash','" . PRD_DB . "','{$noteid}')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['pcredit'] > 0) { db_conn('core'); $min = $ro; $inv['pcredit'] += $ro; $ro = 0; //$amount=$inv['pcash']; if ($inv['pcredit'] >= $ivat) { writetrans($vatacc, $dept['debtacc'], $td, $refnum, $ivat, "VAT Returned for Credit note No. {$notenum}"); $inv['pcredit'] = sprint($inv['pcredit'] - $ivat); $ivat = 0; if ($inv['pcredit'] > 0) { if ($inv['pcredit'] >= $iamount) { writetrans($stkd['account'], $dept['debtacc'], $td, $refnum, $iamount, "Sales for Credit note No. {$notenum}"); $inv['pcredit'] = sprint($inv['pcredit'] - $iamount); $iamount = 0; } elseif ($inv['pcredit'] < $iamount) { writetrans($stkd['account'], $dept['debtacc'], $td, $refnum, $inv['pcredit'], "Sales for Credit note No. {$notenum}"); $iamount = sprint($iamount - $inv['pcredit']); $inv['pcredit'] = 0; } } } else { writetrans($vatacc, $dept['debtacc'], $td, $refnum, $inv['pcredit'], "VAT Returned for Credit note No. {$notenum}"); $ivat = sprint($ivat - $inv['pcredit']); $inv['pcredit'] = 0; } db_conn('cubit'); $inv['pcash'] -= $min; $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$sd}','" . USER_NAME . "','{$invnum}','-{$inv['pcash']}','Cash','" . PRD_DB . "','{$noteid}')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } } } db_connect(); # save invoice discount $sql = "INSERT INTO inv_discs(cusnum, invid, traddisc, itemdisc, inv_date, delchrg, div) VALUES('{$inv['cusnum']}', '{$invid}', '0', '-{$discs}', '{$inv['odate']}', '0', '" . USER_DIV . "')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); /* - Start Transactoins - */ ###################VAT CALCS####################### db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE del='Yes'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { $Sl = "SELECT * FROM vatcodes"; $Ri = db_exec($Sl); } $vd = pg_fetch_array($Ri); $excluding = ""; $vr = vatcalc($delexvat, $inv['chrgvat'], $excluding, $inv['traddisc'], $vd["vat_amount"]); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "VAT for Credit note No. {$notenum}, Customer : {$inv['cusname']} {$inv['surname']}", -$iamount, -$ivat); #################################################### /* # dt(income) ct(debtors) writetrans($dept['pia'], $dept['pca'], $td, $refnum, ($TOTAL-$VAT), "Debtors Control for Credit note No. $notenum for Customer : $inv[cusname] $inv[surname]"); # dt(vat) ct(debtors) writetrans($vatacc, $dept['pca'], $td, $refnum, $VAT, "VAT Return for Credit note No. $notenum for Customer : $inv[cusname] $inv[surname]"); */ // db_connect(); // $date = date("Y-m-d"); // $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div) // VALUES('$rodate', '$noteid', '$notenum', '$dept[debtacc]', '$VAT', '$TOTAL', 'nstk', '".USER_DIV."')"; // $recRslt = db_exec($sql); $Sl = "INSERT INTO sj(cid,name,des,date,exl,vat,inc,div) VALUES\n\t('{$inv['cusnum']}','{$inv['surname']}','Credit Note:{$notenum}, POS Invoice {$inv['invnum']}','{$rodate}','" . -sprint($TOTAL - $VAT) . "','-{$VAT}','" . -sprint($TOTAL) . "','" . USER_DIV . "')"; $Ri = db_exec($Sl); // $av=$VAT; // $at=$TOTAL-$VAT; // // $inv['pcash']=$pcash; // $inv['pcheque']=$pcheque; // $inv['pcc']=$pcc; // $inv['pcredit']=$pcredit; // // $sd=date("Y-m-d"); // // db_conn('cubit'); // $Sl="SELECT * FROM payrec WHERE inv='$invnum'"; // $Ri=db_exec($Sl); // // $data=pg_fetch_array($Ri); // // $user=$data['by']; // // $ro=$rounding; // $ro+=0; if ($inv['pcash'] > 0) { $min = $ro; $inv['pcash'] += $ro; $ro = 0; $amount = $inv['pcash']; if ($amount >= $av) { writetrans($vatacc, $dept['pca'], $td, $refnum, $av, "VAT Returned for POS Credit note: {$notenum}."); $amount = sprint($amount - $av); $av = 0; if ($amount > 0) { writetrans($dept['pia'], $dept['pca'], $td, $refnum, $amount, "Sales for POS Credit note: {$notenum}."); $at = $at - $amount; } } else { writetrans($vatacc, $dept['pca'], $td, $refnum, $amount, "VAT Returned for POS Credit note: {$notenum}."); $av = $av - $amount; $amount = 0; } db_conn('cubit'); $inv['pcash'] -= $min; $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','{$user}','{$invnum}','-{$inv['pcash']}','Cash','" . PRD_DB . "','{$noteid}')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['pcheque'] > 0) { $min = $ro; $inv['pcheque'] += $ro; $ro = 0; $amount = $inv['pcheque']; if ($amount >= $av) { writetrans($vatacc, $dept['pca'], $td, $refnum, $av, "VAT Returned for POS Credit note: {$notenum}."); $amount = sprint($amount - $av); $av = 0; if ($amount > 0) { writetrans($dept['pia'], $dept['pca'], $td, $refnum, $amount, "Sales for POS Credit note: {$notenum}."); $at = $at - $amount; } } else { writetrans($vatacc, $dept['pca'], $td, $refnum, $amount, "VAT Returned for POS Credit note: {$notenum}."); $av = $av - $amount; $amount = 0; } db_conn('cubit'); $inv['pcheque'] -= $min; $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','{$user}','{$invnum}','-{$inv['pcheque']}','Cheque','" . PRD_DB . "','{$noteid}')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['pcc'] > 0) { db_conn('core'); $Sl = "SELECT * FROM salacc WHERE name='cc'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please set a link for the POS credit card control account"; } $cd = pg_fetch_array($Ri); $cc = $cd['accnum']; $min = $ro; $inv['pcc'] += $ro; $ro = 0; $amount = $inv['pcc']; if ($amount >= $av) { writetrans($vatacc, $cc, $td, $refnum, $av, "VAT Returned for POS Credit note: {$notenum}."); $amount = sprint($amount - $av); $av = 0; if ($amount > 0) { writetrans($dept['pia'], $cc, $td, $refnum, $amount, "Sales for POS Credit note: {$notenum}."); $at = $at - $amount; } } else { writetrans($vatacc, $cc, $td, $refnum, $amount, "VAT Returned for POS Credit note: {$notenum}."); $av = $av - $amount; $amount = 0; } db_conn('cubit'); $inv['pcc'] -= $min; $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','" . USER_NAME . "','{$invnum}','-{$inv['pcc']}','Credit Card','" . PRD_DB . "','{$noteid}')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['pcredit'] > 0) { db_conn('core'); $cc = $dept['debtacc']; $min = $ro; $inv['pcredit'] += $ro; $ro = 0; $amount = $inv['pcredit']; if ($amount >= $av) { writetrans($vatacc, $cc, $td, $refnum, $av, "VAT Returned for POS Credit note: {$notenum}."); $amount = sprint($amount - $av); $av = 0; if ($amount > 0) { writetrans($dept['pia'], $cc, $td, $refnum, $amount, "Sales for POS Credit note: {$notenum}."); $at = $at - $amount; } } else { writetrans($vatacc, $cc, $td, $refnum, $amount, "VAT Returned for POS Credit note: {$notenum}."); $av = $av - $amount; $amount = 0; } db_conn('cubit'); $inv['pcc'] -= $min; $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','" . USER_NAME . "','{$invnum}','-{$inv['pcredit']}','Credit','" . PRD_DB . "','{$noteid}')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['rounding'] > 0) { if ($inv['pcash'] > 0) { writetrans($dept['pca'], $rac, $td, $refnum, $inv['rounding'], "Rounding on Credit note: {$notenum}."); } elseif ($inv['pcheque'] > 0) { writetrans($dept['pca'], $rac, $td, $refnum, $inv['rounding'], "Rounding on Credit note: {$notenum}."); } elseif ($inv['pcc'] > 0) { writetrans($cc, $rac, $td, $refnum, $inv['rounding'], "Rounding on Credit note: {$notenum}."); } elseif ($inv['pcredit'] > 0) { writetrans($dept['debtacc'], $rac, $td, $refnum, $inv['rounding'], "Rounding on Credit note: {$notenum}."); } } com_invoice($inv['salespn'], -($TOTAL - $VAT), -$commision, $invnum, $td); db_conn('cubit'); $Sl = "INSERT INTO pr(userid,username,amount,pdate,inv,cust,t) VALUES ('" . USER_ID . "','" . USER_NAME . "','-{$TOTAL}','{$td}','{$invnum}','{$inv['cusname']}','{$inv['terms']}')"; $Ry = db_exec($Sl) or errDie("Unable to insert pos record."); if ($rounding > 0) { $Sl = "INSERT INTO pcnc (note,amount) VALUES ('{$notenum}','{$rounding}')"; $Ri = db_exec($Sl); } $inv['pcredit'] = $pcreditback; if ($inv['cusnum'] > 0 && $inv['pcredit'] > 0) { $nt = $inv['pcredit']; # Record the payment on the statement $sql = "\n\t\t\tINSERT INTO stmnt \n\t\t\t\t(cusnum, invid, docref, amount, date, type, div, allocation_date) \n\t\t\tVALUES \n\t\t\t\t('{$inv['cusnum']}', '{$invnum}', '0', '-{$nt}', '{$inv['odate']}', 'Credit Note {$notenum}', '" . USER_DIV . "', '{$inv['odate']}')"; $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 - '{$nt}') WHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Update the invoice (make balance less) $sql = "UPDATE open_stmnt SET balance = balance-'{$pcreditback}' WHERE invid = '{$inv['invnum']}'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); custledger($inv['cusnum'], $dept['incacc'], $inv['odate'], $invnum, "Credit note {$notenum}", $nt, "c"); //print $nt;exit; recordCT($nt, $inv['cusnum'], $inv['odate']); } pglib_transaction("COMMIT"); //die("<br /><br />NOTE: TRANSACTION ROLLBACK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); /* - End Transactoins - */ /* -- Final Layout -- */ $details = "\n\t\t\t\t\t<center>\n\t\t\t\t\t<h2>Credit Note</h2>\n\t\t\t\t\t<table cellpadding='0' cellspacing='4' border=0 width='750'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td valign='top' width='30%'>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>{$inv['surname']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td valign='top' width='25%'>\n\t\t\t\t\t\t\t\t" . COMP_NAME . "<br>\n\t\t\t\t\t\t\t\t" . COMP_ADDRESS . "<br>\n\t\t\t\t\t\t\t\t" . COMP_TEL . "<br>\n\t\t\t\t\t\t\t\t" . COMP_FAX . "<br>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td width='20%'>\n\t\t\t\t\t\t\t\t<img src='compinfo/getimg.php' width='230' height='47'>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td valign='bottom' align='right' width='25%'>\n\t\t\t\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1' bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Credit Note No.</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$notenum}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Invoice No.</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['invnum']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Order No.</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['ordno']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Terms</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$terms} Days</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Credit note Date</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$rodate}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</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 colspan='4'>\n\t\t\t\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width='100%' bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t\t\t\t\t\t\t<th width='45%'>DESCRIPTION</th>\n\t\t\t\t\t\t\t\t\t\t<th>QTY RETURNED</th>\n\t\t\t\t\t\t\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t\t\t\t\t\t\t<th>AMOUNT</th>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t{$products}\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</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>\n\t\t\t\t\t\t\t\t<table border='1' cellspacing='0' bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>" . nl2br($comm) . "</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td align='right' colspan='3'>\n\t\t\t\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width='50%' bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>SUBTOTAL</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$SUBTOT}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Trade Discount</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$traddiscmt}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Delivery Charge</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$delexvat}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>VAT @ {$VATP}%</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$VAT}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th><b>GRAND TOTAL<b></th>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$TOTAL}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</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>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . " border='1'>\n\t\t\t\t\t\t \t<tr>\n\t\t\t\t\t\t \t\t<th>VAT No.</th>\n\t\t\t\t\t\t \t\t<td align='center'>" . COMP_VATNO . "</td>\n\t\t\t\t\t\t \t</tr>\n\t\t\t\t\t\t </table>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td><br></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t\t</center>"; $OUTPUT = "<script>printer2('pos-note-slip.php?noteid={$noteid}&prd={$prd}&cccc=true');move('main.php');</script>"; require "template.php"; }
function write($_POST) { # Set max execution time to 12 hours ini_set("max_execution_time", 43200); # Get vars extract($_POST); # validate input require_lib("validate"); $v = new validate(); foreach ($invids as $key => $invid) { $v->isOk($invid, "num", 1, 20, "Invalid recuring invoice number."); } # display errors, if any $err = ""; if ($v->isError()) { $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class='err'>" . $e["msg"] . "</li>"; } return $err; } $i = 0; foreach ($invids as $key => $invid) { # Get recuring invoice info db_connect(); $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get recuring invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); # check if invoice has been printed if ($inv['printed'] == "y") { $error = "<li class='err'> Error : Invoice number <b>{$inv['invnum']}</b> has already been printed."; $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $error; } # check if invoice has been serialised if ($inv['serd'] == "n") { $error = "<li class='err'> Error : You must select serial numbers for some Items on Invoice No. <b>T {$invid}</b> before you can print it."; $error .= "<p><input type=button onClick='JavaScript:history.back();' value='« Correct submission'>"; return $error; } # Begin Updates pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $invnum = divlastid('inv', USER_DIV); $Sl = "INSERT INTO ncsrec (oldnum, newnum, div) VALUES ('{$invid}', '{$invnum}', '" . USER_DIV . "')"; $Rs = db_exec($Sl) or errDie("Unable to insert into db"); # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$inv['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); } /* --- Start Products Display --- */ # Products layout $commision = 0; $products = ""; $disc = 0; # get selected stock in this invoice db_connect(); $sql = "SELECT * FROM inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); if (pg_numrows($stkdRslt) < 1) { $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has no items.</li>"; if (($r2sid = r2sListCheck("invoice_stk_view")) !== false) { $error .= "<p><input type='button' onClick='document.location.href=\"r2srestore.php?r2sid={$r2sid}\";' value='List Invoices'>"; } else { $error .= "<p><input type='button' onClick='document.location.href=\"invoice-view.php\";' value='List Invoices'>"; } $OUTPUT = $error; pglib_transaction("ROLLBACK"); require "template.php"; } $taxex = 0; while ($stkd = pg_fetch_array($stkdRslt)) { # get warehouse name db_conn("exten"); $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); # get selected stock in this warehouse db_connect(); $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'"; $stkRslt = db_exec($sql); $stk = pg_fetch_array($stkRslt); $sp = " "; # Check Tax Excempt if ($stk['exvat'] == 'yes') { $taxex += $stkd['amt']; } # Keep track of discounts $disc += $stkd['disc'] * $stkd['qty']; # Insert stock record $sdate = date("Y-m-d"); $csprice = sprint($stk['csprice'] * $stkd['qty']); # Get amount exluding vat if including and not exempted // $VATP = TAX_VAT; #get the actual vat perc of this item $get_vat = "SELECT vat_amount FROM vatcodes WHERE id = '{$stkd['vatcode']}' LIMIT 1"; $run_vat = db_exec($get_vat) or errDie("Unable to get vat percentage information"); if (pg_numrows($run_vat) < 1) { $VATP = 0; } else { $varr = pg_fetch_array($run_vat); $VATP = $varr['vat_amount']; } $amtexvat = sprint($stkd['amt']); if ($inv['chrgvat'] == "inc" && $stk['exvat'] != 'yes') { $amtexvat = sprint($stkd['amt'] * 100 / (100 + $VATP)); } if ($stkd['account'] == 0) { db_connect(); $sql = "\n\t\t\t\t\tINSERT INTO stockrec (\n\t\t\t\t\t\tedate, stkid, stkcod, stkdes, trantype, qty, \n\t\t\t\t\t\tcsprice, csamt, details, div\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$sdate}', '{$stkd['stkid']}', '{$stk['stkcod']}', '{$stk['stkdes']}', 'invoice', '{$stkd['qty']}', \n\t\t\t\t\t\t'{$amtexvat}', '{$csprice}', 'Stock sold - Invoice No. {$invnum}', '" . USER_DIV . "'\n\t\t\t\t\t)"; $recRslt = db_exec($sql); # Sales rep commission // $commision = $commision + coms($inv['salespn'], $stkd['amt'], $stk['com']); $commision = $commision + coms($inv['salespn'], $amtexvat, $stk['com']); } } /* --- Start Some calculations --- */ # Subtotal $SUBTOT = sprint($inv['subtot']); # Calculate tradediscm if (strlen($inv['traddisc']) > 0) { $traddiscm = sprint($inv['traddisc'] / 100 * $SUBTOT); } else { $traddiscm = "0.00"; } # Calculate subtotal $VATP = TAX_VAT; $SUBTOTAL = sprint($inv['subtot']); $VAT = sprint($inv['vat']); $TOTAL = sprint($inv['total']); $inv['delchrg'] = sprint($inv['delchrg']); com_invoice($inv['salespn'], $TOTAL - $VAT, $commision, $invnum, $inv["odate"]); /* --- End Some calculations --- */ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "out"); /* - End Hooks - */ # Todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); $refnum = getrefnum(); /* --- Updates ---- */ db_connect(); $Sql = "UPDATE invoices SET printed ='y', done ='y', invnum='{$invnum}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($Sql) or errDie("Unable to update invoice information"); # Record the payment on the statement $sql = "\n\t\t\t\tINSERT INTO stmnt \n\t\t\t\t\t(cusnum, invid, docref, amount, date, type, div, allocation_date) \n\t\t\t\tVALUES \n\t\t\t\t\t('{$inv['cusnum']}', '{$invnum}', '{$inv['docref']}', '{$inv['total']}', '{$inv['odate']}', 'Invoice', '" . USER_DIV . "', '{$inv['odate']}')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # Record the payment on the statement $sql = "INSERT INTO open_stmnt(cusnum, invid, docref, amount, balance, date, type, div) VALUES('{$inv['cusnum']}', '{$invnum}', '{$inv['docref']}', '{$inv['total']}','{$inv['total']}', '{$inv['odate']}', 'Invoice', '" . USER_DIV . "')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # Save invoice discount $sql = "INSERT INTO inv_discs(cusnum, invid, traddisc, itemdisc, inv_date, delchrg, div,total) VALUES('{$inv['cusnum']}', '{$invnum}', '{$traddiscm}', '{$disc}', '{$inv['odate']}', '{$inv['delchrg']}', '" . USER_DIV . "', ({$SUBTOT}+{$inv['delchrg']}))"; $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 + '{$inv['total']}') WHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Make ledge record custledger($inv['cusnum'], $dept['incacc'], $inv["odate"], $invnum, "Invoice No. {$invnum}", $inv['total'], "d"); $nsp = 0; db_connect(); # get selected stock in this invoice $sql = "SELECT * FROM inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $tcosamt = 0; while ($stkd = pg_fetch_array($stkdRslt)) { $stkd['account'] += 0; if ($stkd['account'] == 0) { db_connect(); # get selamt from selected stock $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'"; $stkRslt = db_exec($sql); $stk = pg_fetch_array($stkRslt); if ($stk['units'] - $stkd['qty'] < 0) { if ($stk['units'] <= 0) { $cosamt = 0; } else { $cosamt = round($stk['units'] * $stk['csprice'], 2); } } else { $cosamt = round($stkd['qty'] * $stk['csprice'], 2); } $uc = sprint($cosamt / $stkd['qty']); if ($stk['csprice'] > 0) { $Sl = "INSERT INTO scr(inv,stkid,amount) VALUES ('{$invnum}','{$stkd['stkid']}','{$uc}')"; $Rg = db_exec($Sl); } # update stock(alloc - qty) $sql = "UPDATE stock SET csamt = (csamt - '{$cosamt}'),units = (units - '{$stkd['qty']}'),alloc = (alloc - '{$stkd['qty']}') WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); if ($stk['serd'] == 'yes') { ext_invSer($stkd['serno'], $stkd['stkid'], "{$inv['cusname']} {$inv['surname']}", $invnum); } # stkid, stkcod, stkdes, trantype, edate, qty, csamt, details $sdate = date("Y-m-d"); if ($stkd['account'] == 0) { stockrec($stk['stkid'], $stk['stkcod'], $stk['stkdes'], 'ct', $sdate, $stkd['qty'], $cosamt, "Sold to Customer : {$inv['surname']} - Invoice No. {$invnum}"); } } ###################VAT CALCS####################### db_connect(); $stkd['vatcode'] += 0; $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($stkd['amt'], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}", $iamount, $ivat); #################################################### if ($stkd['account'] == 0) { # get accounts db_conn("exten"); $sql = "SELECT stkacc,cosacc FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $stockacc = $wh['stkacc']; $cosacc = $wh['cosacc']; if ($cosamt > 0) { # dt(cos) ct(stock) // writetrans($cosacc, $stockacc, $date, $refnum, $cosamt, "Cost Of Sales for Invoice No.$invnum for Customer : $inv[cusname] $inv[surname]"); writetrans($cosacc, $stockacc, $inv['odate'], $refnum, $cosamt, "Cost Of Sales for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}"); } $tcosamt += $cosamt; db_connect(); $date = date("Y-m-d"); $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\n\t\t\t\t\tVALUES('{$inv['odate']}', '{$invid}', '{$invnum}', '{$dept['debtacc']}', '{$ivat}', '{$iamount}', 'stk', '" . USER_DIV . "')"; $recRslt = db_exec($sql); } else { $amtexvat = sprint($stkd['amt']); db_connect(); $sdate = date("Y-m-d"); $nsp += sprint($iamount - $ivat); //writetrans($cosacc, $stockacc,$inv['odate'] , $refnum, $cosamt, "Cost Of Sales for Invoice No.$invnum for Customer : $inv[cusname] $inv[surname]"); writetrans($dept['debtacc'], $stkd['account'], $inv['odate'], $refnum, $iamount - $ivat, "Debtors Control for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}"); db_connect(); $date = date("Y-m-d"); $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\n\t\t\t\t\tVALUES('{$inv['odate']}', '{$invid}', '{$invnum}', '{$dept['debtacc']}', '{$ivat}', '{$iamount}', 'non', '" . USER_DIV . "')"; $recRslt = db_exec($sql); } } /* - Start Transactoins - */ # dt(debtors) ct(income/sales) // writetrans($dept['debtacc'], $dept['incacc'], $date, $refnum, sprint($TOTAL-$VAT-$nsp), "Debtors Control for Invoice No.$invnum for Customer : $inv[cusname] $inv[surname]"); writetrans($dept['debtacc'], $dept['incacc'], $inv['odate'], $refnum, sprint($TOTAL - $VAT - $nsp), "Debtors Control for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}"); # dt(debtors) ct(vat account) writetrans($dept['debtacc'], $vatacc, $inv['odate'], $refnum, $VAT, "VAT Received on Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}"); db_conn('cubit'); $Sl = "INSERT INTO sj(cid,name,des,date,exl,vat,inc,div) VALUES\n\t\t\t('{$inv['cusnum']}','{$inv['surname']}','Invoice {$invnum}','{$inv['odate']}','" . sprint($TOTAL - $VAT) . "','{$VAT}','" . sprint($TOTAL) . "','" . USER_DIV . "')"; $Ri = db_exec($Sl); $ecost = sprint($TOTAL - $VAT); db_conn('cubit'); $inv['jobid'] += 0; $Sl = "SELECT * FROM invc WHERE inv='{$inv['jobid']}'"; $Ri = db_exec($Sl); if (CC_USE == "use") { if (pg_num_rows($Ri) > 0) { while ($data = pg_fetch_array($Ri)) { db_conn('cubit'); $sql = "SELECT * FROM costcenters WHERE ccid = '{$data['cid']}'"; $ccRslt = db_exec($sql) or errDie("Unable to retrieve Cost centers from database."); $cc = pg_fetch_array($ccRslt); $amount = sprint($ecost * $data['amount'] / 100); db_conn(PRD_DB); $sql = "INSERT INTO cctran(ccid, trantype, typename, edate, description, amount, username, div)\n\t\t\t\t\t\tVALUES('{$cc['ccid']}', 'dt', 'Invoice', '{$inv['odate']}', 'Invoice No.{$invnum}', '{$amount}', '" . USER_NAME . "', '" . USER_DIV . "')"; $insRslt = db_exec($sql) or errDie("Unable to retrieve insert Cost center amounts into database."); } } } ####/*###*/############VAT CALCS####################### $inv['delvat'] += 0; db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$inv['delvat']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { $Sl = "SELECT * FROM vatcodes"; $Ri = db_exec($Sl); } $vd = pg_fetch_array($Ri); if ($vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($inv['delchrg'], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}", $iamount, $ivat); #################################################### # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); $i++; } // Retrieve template settings db_conn("cubit"); $sql = "SELECT filename FROM template_settings WHERE template='invoices'"; $tsRslt = db_exec($sql) or errDie("Unable to retrieve template settings from Cubit."); $template = pg_fetch_result($tsRslt, 0); if ($template == "invoice-print.php") { pdf($_POST); } else { templatePdf($_POST); } // Final Laytout $write = "\n\t<table " . TMPL_tblDflts . ">\n\t\t<tr>\n\t\t\t<th>{$i} Invoices Proccesed</th>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Invoices has been successfully printed.</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='invoice-view.php'>View Invoices</a></td>\n\t\t</tr>\n\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t</table>"; return $write; }
function details($_GET) { # get vars extract($_GET); # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid invoice number."); # display errors, if any if ($v->isError()) { $err = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class='err'>" . $e["msg"] . "</li>"; } $confirm .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } # Get invoice info db_connect(); $sql = "SELECT * FROM pinvoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); # CHECK IF THIS DATE IS IN THE BLOCKED RANGE $blocked_date_from = getCSetting("BLOCKED_FROM"); $blocked_date_to = getCSetting("BLOCKED_TO"); if (strtotime($inv['odate']) >= strtotime($blocked_date_from) and strtotime($inv['odate']) <= 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>"; } if ($inv['rounding'] > 0) { db_conn('core'); $Sl = "SELECT * FROM salesacc WHERE name='rounding'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please set the rounding account, under sales settings."; } $ad = pg_fetch_array($Ri); $rac = $ad['accnum']; } if ($inv['cusnum'] != "0") { #then get the actual customer db_connect(); $get_cus = "SELECT * FROM customers WHERE cusnum = '{$inv['cusnum']}' LIMIT 1"; $run_cus = db_exec($get_cus) or errDie("Unable to get customer information"); if (pg_numrows($run_cus) < 1) { #do nothing } else { $carr = pg_fetch_array($run_cus); $inv['cusname'] = "{$carr['cusname']}"; $inv['surname'] = "{$carr['surname']}"; } } $td = $inv['odate']; # check if invoice has been printed if ($inv['printed'] == "y") { $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has already been printed."; $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $error; } db_conn('cubit'); $sql = "SELECT stkid FROM pinv_items WHERE invid = '{$inv['invid']}' AND div = '" . USER_DIV . "'"; $crslt = db_exec($sql); if (pg_numrows($crslt) < 1) { $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has no items.</li>"; $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $error; } if ($inv['terms'] == 1) { db_conn('core'); $Sl = "SELECT * FROM salacc WHERE name='cc'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please set a link for the POS credit card control account"; } $cd = pg_fetch_array($Ri); $cc = $cd['accnum']; } $change = sprint(sprint($inv['pcash'] + $inv['pcheque'] + $inv['pcc'] + $inv['pcredit']) - sprint($inv['total'] - $inv['rounding'])); $inv['pcash'] = sprint($inv['pcash'] - $change); if ($inv['pcash'] < 0) { $inv['pcash'] = 0; } if (sprint($inv['pcash'] + $inv['pcheque'] + $inv['pcc'] + $inv['pcredit']) != sprint($inv['total'] - $inv['rounding'])) { return "<li class='err'>The total of all the payments is not equal to the invoice total.<br>\n\t\tPlease edit the invoice and try again(You can only overpay with cash)</li>"; } db_connect(); # Begin updates # //lock(2); $invnum = divlastid('inv', USER_DIV); $Sl = "INSERT INTO ncsrec (oldnum,newnum, div) VALUES ('{$invid}','{$invnum}', '" . USER_DIV . "')"; $Rs = db_exec($Sl) or errDie("Unable to insert into db"); //unlock(2); pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); # get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$inv['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); } /* --- Start Products Display --- */ # Products layout $products = ""; $disc = 0; # get selected stock in this invoice db_connect(); $sql = "SELECT * FROM pinv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $taxex = 0; $commision = 0; $salesp = qrySalesPersonN($inv["salespn"]); while ($stkd = pg_fetch_array($stkdRslt)) { $stkd['account'] += 0; if ($stkd['account'] == 0) { # get warehouse name db_conn("exten"); $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); # get selected stock in this warehouse db_connect(); $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'"; $stkRslt = db_exec($sql); $stk = pg_fetch_array($stkRslt); db_connect(); //this was set to the stock vatcode ??? must be the pur_item code ... $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "<li class='err'>Please select the vatcode for all your stock.</li>"; } $vd = pg_fetch_array($Ri); $sp = " "; # Check Tax Excempt if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $taxex += $stkd['amt']; $ex = "#"; } else { $ex = " "; } # Keep track of discounts $disc += $stkd['disc'] * $stkd['qty']; # Insert stock record $sdate = date("Y-m-d"); $csprice = sprint($stk['csprice'] * $stkd['qty']); # put in product $products .= "\n\t\t\t\t<tr valign='top'>\n\t\t\t\t\t<td>{$stk['stkcod']}</td>\n\t\t\t\t\t<td>{$ex} {$sp} {$stk['stkdes']}</td>\n\t\t\t\t\t<td>{$stkd['qty']}</td>\n\t\t\t\t\t<td>" . sprint($stk["selamt"]) . "</td>\n\t\t\t\t\t<td>" . CUR . sprint($stkd["amt"]) . "</td>\n\t\t\t\t</tr>"; # Get amount exluding vat if including and not exempted $VATP = TAX_VAT; $amtexvat = sprint($stkd['amt']); if ($inv['chrgvat'] == "inc" && $stk['exvat'] != 'yes') { $amtexvat = sprint($stkd['amt'] * 100 / (100 + $VATP)); } $sql = "\n\t\t\t\t\tINSERT INTO stockrec (\n\t\t\t\t\t\tedate, stkid, stkcod, stkdes, trantype, qty, csprice, \n\t\t\t\t\t\tcsamt, details, div\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$td}', '{$stkd['stkid']}', '{$stk['stkcod']}', '{$stk['stkdes']}', 'invoice', '{$stkd['qty']}', '{$stkd['amt']}', \n\t\t\t\t\t\t'{$csprice}', 'Stock sold - Invoice No. {$invnum}', '" . USER_DIV . "'\n\t\t\t\t\t)"; $recRslt = db_exec($sql); if ($salesp["com"] > 0) { $itemcommission = $salesp['com']; } else { $itemcommission = $stk["com"]; } $commision = $commision + coms($inv['salespn'], $amtexvat, $itemcommission); } else { db_conn('core'); $Sl = "SELECT * FROM accounts WHERE accid='{$stkd['account']}'"; $Ri = db_exec($Sl) or errDie("Unable to get account data."); $ad = pg_fetch_array($Ri); db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please select the vatcode for all your stock."; } $vd = pg_fetch_array($Ri); $sp = ""; # Check Tax Excempt if ($vd['zero'] == "Yes") { $taxex += $stkd['amt']; $ex = "#"; } else { $ex = ""; } # all must be excempted if ($inv['chrgvat'] == 'nov') { $ex = "#"; } $VATP = TAX_VAT; $amtexvat = sprint($stkd['amt']); if ($inv['chrgvat'] == "inc") { $amtexvat = sprint($stkd['amt'] * 100 / (100 + $VATP)); } if ($salesp["com"] > 0) { $itemcommission = $salesp['com']; } else { $itemcommission = 0; } $commision = $commision + coms($inv['salespn'], $amtexvat, $itemcommission); # Put in product $products .= "\n\t\t\t\t<tr valign='top'>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td>{$ex} {$sp} {$stkd['description']}</td>\n\t\t\t\t\t<td>{$stkd['qty']}</td>\n\t\t\t\t\t<td>" . sprint($stkd["unitcost"]) . "</td>\n\t\t\t\t\t<td>{$stkd['disc']}</td>\n\t\t\t\t\t<td>" . CUR . sprint($stkd["amt"]) . "</td>\n\t\t\t\t</tr>"; } } /* --- Start Some calculations --- */ # subtotal $SUBTOT = sprint($inv['subtot']); # Calculate subtotal $VATP = TAX_VAT; $SUBTOTAL = sprint($inv['subtot']); $VAT = sprint($inv['vat']); $TOTAL = sprint($inv['total']); $av = $VAT; $at = $TOTAL - $VAT; $nt = sprint($inv['pcredit']); $sd = date("Y-m-d"); $ro = $inv['rounding']; $ro += 0; com_invoice($inv['salespn'], $TOTAL - $VAT, $commision, $invnum, $td, true); /* --- End Some calculations --- */ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "novat"); /* - End Hooks - */ $nsp = 0; # todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); db_conn('cubit'); if ($inv['cusnum'] > 0 && $nt > 0) { # Record the payment on the statement $sql = "\n\t\t\t\tINSERT INTO stmnt \n\t\t\t\t\t(cusnum, invid, docref, amount, date, type, div, allocation_date) \n\t\t\t\tVALUES \n\t\t\t\t\t('{$inv['cusnum']}', '{$invnum}', '0', '{$nt}', '{$inv['odate']}', 'Invoice', '" . USER_DIV . "', '{$inv['odate']}')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # Record the payment on the statement $sql = "INSERT INTO open_stmnt(cusnum, invid, docref, amount, balance, date, type, div) VALUES('{$inv['cusnum']}', '{$invnum}', '0', '{$nt}', '{$nt}', '{$inv['odate']}', 'Invoice', '" . USER_DIV . "')"; $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 + '{$nt}') WHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); custledger($inv['cusnum'], $dept['incacc'], $inv['odate'], $invnum, "Invoice No. {$invnum}", $nt, "d"); recordDT($nt, $inv['cusnum'], $inv['odate']); db_conn('cubit'); $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','" . USER_NAME . "','{$invnum}','{$nt}','Credit','" . PRD_DB . "','0')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } db_conn('cubit'); if ($inv['terms'] == 1) { $Sl = "INSERT INTO crec(userid,username,amount,pdate,inv) VALUES ('" . USER_ID . "','" . USER_NAME . "','{$TOTAL}','{$td}','{$invnum}')"; $Ry = db_exec($Sl) or errDie("Unable to insert pos record."); } else { $Sl = "INSERT INTO posrec(userid,username,amount,pdate,inv) VALUES ('" . USER_ID . "','" . USER_NAME . "','{$TOTAL}','{$td}','{$invnum}')"; $Ry = db_exec($Sl) or errDie("Unable to insert pos record."); } if (!isset($inv['cusname']) or strlen($inv['cusname']) < 1) { $custname = $inv['surname']; } else { $custname = $inv['cusname']; } $Sl = "INSERT INTO pr(userid,username,amount,pdate,inv,cust,t) VALUES ('" . USER_ID . "','" . USER_NAME . "','{$TOTAL}','{$td}','{$invnum}','{$custname}','{$inv['terms']}')"; $Ry = db_exec($Sl) or errDie("Unable to insert pos record."); $refnum = getrefnum(); /*refnum*/ $fcash = $inv['pcash']; $fccp = $inv['pcc']; $fcheque = $inv['pcheque']; $fcredit = $inv['pcredit']; /* --- Updates ---- */ db_connect(); $Sql = "UPDATE pinvoices SET pchange='{$change}',printed ='y', done ='y',invnum='{$invnum}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($Sql) or errDie("Unable to update invoice information"); # save invoice discount $sql = "INSERT INTO inv_discs(cusnum, invid, traddisc, itemdisc, inv_date, delchrg, div,total) VALUES('0','{$invnum}','{$inv['delivery']}','{$disc}', '{$inv['odate']}', '{$inv['delivery']}', '" . USER_DIV . "',({$SUBTOT}+{$inv['delivery']}))"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # get selected stock in this invoice $sql = "SELECT * FROM pinv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $tcosamt = 0; while ($stkd = pg_fetch_array($stkdRslt)) { $stkd['account'] += 0; if ($stkd['account'] == 0) { db_connect(); # get selamt from selected stock $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'"; $stkRslt = db_exec($sql); $stk = pg_fetch_array($stkRslt); if ($stk['units'] - $stkd['qty'] < 0) { if ($stk['units'] < 0) { $stk['units'] = 0; } $cosamt = round($stk['units'] * $stk['csprice'], 2); } else { $cosamt = round($stkd['qty'] * $stk['csprice'], 2); } # cost amount //$cosamt = round(($stkd['qty'] * $stk['csprice']), 2); if ($stk['csprice'] > 0) { $Sl = "INSERT INTO scr(inv,stkid,amount) VALUES ('{$invnum}','{$stkd['stkid']}',' {$stk['csprice']}')"; $Rg = db_exec($Sl); } # update stock(alloc - qty) $sql = "UPDATE stock SET csamt = (csamt - '{$cosamt}'),units = (units - '{$stkd['qty']}'),alloc = (alloc - '{$stkd['qty']}') WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please select the vat code for all your stock."; } $VATP = TAX_VAT; $amtexvat = sprint($stkd['amt']); ###################VAT CALCS####################### $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($stkd['amt'], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}", $iamount, $ivat); #################################################### if ($stk['serd'] == 'yes') { ext_invSer($stkd['serno'], $stkd['stkid'], "POS Cash", $invnum); } # stkid, stkcod, stkdes, trantype, edate, qty, csamt, details $sdate = date("Y-m-d"); stockrec($stk['stkid'], $stk['stkcod'], $stk['stkdes'], 'ct', $td, $stkd['qty'], $cosamt, "POS Sales - Invoice No. {$invnum}"); # get accounts db_conn("exten"); $sql = "SELECT stkacc,cosacc FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $stockacc = $wh['stkacc']; $cosacc = $wh['cosacc']; # dt(cos) ct(stock) writetrans($cosacc, $stockacc, $td, $refnum, $cosamt, "Cost Of Sales POS Cash on POS Invoice No.{$invnum}."); $tcosamt += $cosamt; db_connect(); $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\n\t\t\t\tVALUES('{$inv['odate']}', '{$invid}', '{$invnum}', '{$dept['debtacc']}', '{$ivat}', '{$iamount}', 'stk', '" . USER_DIV . "')"; $recRslt = db_exec($sql); } else { db_connect(); ###################VAT CALCS####################### $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($stkd['amt'], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; $av -= $ivat; $at -= $iamount; vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}", $iamount, $ivat); db_connect(); $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\n\t\t\t\tVALUES('{$inv['odate']}', '{$invid}', '{$invnum}', '{$dept['debtacc']}', '{$ivat}', '{$iamount}', 'non', '" . USER_DIV . "')"; $recRslt = db_exec($sql); #################################################### $amtexvat = sprint($stkd['amt']); db_connect(); $sdate = date("Y-m-d"); $nsp += sprint($iamount - $ivat); // //writetrans($cosacc, $stockacc,$inv['odate'] , $refnum, $cosamt, "Cost Of Sales for Invoice No.$invnum for Customer : $inv[cusname] $inv[surname]"); // writetrans($dept['debtacc'], $stkd['account'],$inv['odate'], $refnum, ($iamount-$ivat), "Debtors Control for Invoice No.$invnum for Customer : $inv[cusname] $inv[surname]"); if ($inv['pcash'] > 0) { $min = $ro; $inv['pcash'] += $ro; $ro = 0; //$amount=$inv['pcash']; if ($inv['pcash'] >= $ivat) { writetrans($dept['pca'], $vatacc, $td, $refnum, $ivat, "VAT Received for POS Invoice No.{$invnum}."); $inv['pcash'] = sprint($inv['pcash'] - $ivat); $ivat = 0; if ($inv['pcash'] > 0) { if ($inv['pcash'] >= $iamount) { writetrans($dept['pca'], $stkd['account'], $td, $refnum, $iamount, "Sales for POS Invoice No.{$invnum}."); $inv['pcash'] = sprint($inv['pcash'] - $iamount); $iamount = 0; } elseif ($inv['pcash'] < $iamount) { writetrans($dept['pca'], $stkd['account'], $td, $refnum, $inv['pcash'], "Sales for POS Invoice No.{$invnum}."); $iamount = sprint($iamount - $inv['pcash']); $inv['pcash'] = 0; } } } else { writetrans($dept['pca'], $vatacc, $td, $refnum, $inv['pcash'], "VAT Received for POS Invoice No.{$invnum}."); $ivat = sprint($ivat - $inv['pcash']); $inv['pcash'] = 0; } // db_conn('cubit'); // // $inv['pcash']-=$min; // // $Sl="INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('$sd','".USER_NAME."','$invnum','$inv[pcash]','Cash','".PRD_DB."','0')"; // $Ri=db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['pcheque'] > 0) { $min = $ro; $inv['pcheque'] += $ro; $ro = 0; //$amount=$inv['pcash']; if ($inv['pcheque'] >= $ivat) { writetrans($dept['pca'], $vatacc, $td, $refnum, $ivat, "VAT Received for POS Invoice No.{$invnum}."); $inv['pcheque'] = sprint($inv['pcheque'] - $ivat); $ivat = 0; if ($inv['pcheque'] > 0) { if ($inv['pcheque'] >= $iamount) { writetrans($dept['pca'], $stkd['account'], $td, $refnum, $iamount, "Sales for POS Invoice No.{$invnum}."); $inv['pcheque'] = sprint($inv['pcheque'] - $iamount); $iamount = 0; } elseif ($inv['pcheque'] < $iamount) { writetrans($dept['pca'], $stkd['account'], $td, $refnum, $inv['pcheque'], "Sales for POS Invoice No.{$invnum}."); $iamount = sprint($iamount - $inv['pcheque']); $inv['pcheque'] = 0; } } } else { writetrans($dept['pca'], $vatacc, $td, $refnum, $inv['pcheque'], "VAT Received for POS Invoice No.{$invnum}."); $ivat = sprint($ivat - $inv['pcheque']); $inv['pcheque'] = 0; } // db_conn('cubit'); // // $inv['pcash']-=$min; // // $Sl="INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('$sd','".USER_NAME."','$invnum','$inv[pcash]','Cash','".PRD_DB."','0')"; // $Ri=db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['pcc'] > 0) { db_conn('core'); $Sl = "SELECT * FROM salacc WHERE name='cc'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please set a link for the POS credit card control account"; } $cd = pg_fetch_array($Ri); $cc = $cd['accnum']; $min = $ro; $inv['pcc'] += $ro; $ro = 0; //$amount=$inv['pcash']; if ($inv['pcc'] >= $ivat) { writetrans($cc, $vatacc, $td, $refnum, $ivat, "VAT Received for POS Invoice No.{$invnum}."); $inv['pcc'] = sprint($inv['pcc'] - $ivat); $ivat = 0; if ($inv['pcc'] > 0) { if ($inv['pcc'] >= $iamount) { writetrans($cc, $stkd['account'], $td, $refnum, $iamount, "Sales for POS Invoice No.{$invnum}."); $inv['pcc'] = sprint($inv['pcc'] - $iamount); $iamount = 0; } elseif ($inv['pcc'] < $iamount) { writetrans($cc, $stkd['account'], $td, $refnum, $inv['pcc'], "Sales for POS Invoice No.{$invnum}."); $iamount = sprint($iamount - $inv['pcc']); $inv['pcc'] = 0; } } } else { writetrans($cc, $vatacc, $td, $refnum, $inv['pcc'], "VAT Received for POS Invoice No.{$invnum}."); $ivat = sprint($ivat - $inv['pcc']); $inv['pcc'] = 0; } // db_conn('cubit'); // // $inv['pcash']-=$min; // // $Sl="INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('$sd','".USER_NAME."','$invnum','$inv[pcash]','Cash','".PRD_DB."','0')"; // $Ri=db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['pcredit'] > 0) { db_conn('core'); $min = $ro; $inv['pcredit'] += $ro; $ro = 0; //$amount=$inv['pcash']; if ($inv['pcredit'] >= $ivat) { writetrans($dept['debtacc'], $vatacc, $td, $refnum, $ivat, "VAT Received for POS Invoice No.{$invnum}."); $inv['pcredit'] = sprint($inv['pcredit'] - $ivat); $ivat = 0; if ($inv['pcredit'] > 0) { if ($inv['pcredit'] >= $iamount) { writetrans($dept['debtacc'], $stkd['account'], $td, $refnum, $iamount, "Sales for POS Invoice No.{$invnum}."); $inv['pcredit'] = sprint($inv['pcredit'] - $iamount); $iamount = 0; } elseif ($inv['pcredit'] < $iamount) { writetrans($dept['debtacc'], $stkd['account'], $td, $refnum, $inv['pcredit'], "Sales for POS Invoice No.{$invnum}."); $iamount = sprint($iamount - $inv['pcredit']); $inv['pcredit'] = 0; } } } else { writetrans($dept['debtacc'], $vatacc, $td, $refnum, $inv['pcredit'], "VAT Received for POS Invoice No.{$invnum}."); $ivat = sprint($ivat - $inv['pcredit']); $inv['pcredit'] = 0; } // db_conn('cubit'); // // $inv['pcash']-=$min; // // $Sl="INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('$sd','".USER_NAME."','$invnum','$inv[pcash]','Cash','".PRD_DB."','0')"; // $Ri=db_exec($Sl) or errDie("Unable to insert data."); } } } /* - Start Transactoins - */ ###################VAT CALCS####################### db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE del='Yes'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { $Sl = "SELECT * FROM vatcodes"; $Ri = db_exec($Sl); } $vd = pg_fetch_array($Ri); $excluding = ""; $vr = vatcalc($inv['delchrg'], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}", $iamount, $ivat); #################################################### //print $inv['pcash'];exit; if ($inv['pcash'] > 0) { $min = $ro; $inv['pcash'] += $ro; $ro = 0; $amount = $inv['pcash']; if ($amount >= $av) { writetrans($dept['pca'], $vatacc, $td, $refnum, $av, "VAT Received for POS Invoice No.{$invnum}."); // PROBLEM HERE? $amount = sprint($amount - $av); $av = 0; if ($amount > 0) { writetrans($dept['pca'], $dept['pia'], $td, $refnum, $amount, "Sales for POS Invoice No.{$invnum}."); $at = $at - $amount; } } else { writetrans($dept['pca'], $vatacc, $td, $refnum, $amount, "VAT Received for POS Invoice No.{$invnum}."); $av = $av - $amount; $amount = 0; } db_conn('cubit'); $inv['pcash'] -= $min; $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','" . USER_NAME . "','{$invnum}','{$fcash}','Cash','" . PRD_DB . "','0')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); $fcash = 0; } db_conn('cubit'); if ($fcash > 0) { $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','" . USER_NAME . "','{$invnum}','{$fcash}','Cash','" . PRD_DB . "','0')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['pcheque'] > 0) { $min = $ro; $inv['pcheque'] += $ro; $ro = 0; $amount = $inv['pcheque']; if ($amount >= $av) { writetrans($dept['pca'], $vatacc, $td, $refnum, $av, "VAT Received for POS Invoice No.{$invnum}."); $amount = sprint($amount - $av); $av = 0; if ($amount > 0) { writetrans($dept['pca'], $dept['pia'], $td, $refnum, $amount, "Sales for POS Invoice No.{$invnum}."); $at = $at - $amount; } } else { writetrans($dept['pca'], $vatacc, $td, $refnum, $amount, "VAT Received for POS Invoice No.{$invnum}."); $av = $av - $amount; $amount = 0; } db_conn('cubit'); $inv['pcheque'] -= $min; $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','" . USER_NAME . "','{$invnum}','{$fcheque}','Cheque','" . PRD_DB . "','0')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); $fcheque = 0; } db_conn('cubit'); if ($fcheque > 0) { $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','" . USER_NAME . "','{$invnum}','{$fcheque}','Cheque','" . PRD_DB . "','0')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['pcc'] > 0) { db_conn('core'); $Sl = "SELECT * FROM salacc WHERE name='cc'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please set a link for the POS credit card control account"; } $cd = pg_fetch_array($Ri); $cc = $cd['accnum']; $min = $ro; $inv['pcc'] += $ro; $ro = 0; $amount = $inv['pcc']; if ($amount >= $av) { writetrans($cc, $vatacc, $td, $refnum, $av, "VAT Received for POS Invoice No.{$invnum}."); $amount = sprint($amount - $av); $av = 0; if ($amount > 0) { writetrans($cc, $dept['pia'], $td, $refnum, $amount, "Sales for POS Invoice No.{$invnum}."); $at = $at - $amount; } } else { writetrans($cc, $vatacc, $td, $refnum, $amount, "VAT Received for POS Invoice No.{$invnum}."); $av = $av - $amount; $amount = 0; } db_conn('cubit'); $inv['pcc'] -= $min; $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','" . USER_NAME . "','{$invnum}','{$fccp}','Credit Card','" . PRD_DB . "','0')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); $fccp = 0; } db_conn('cubit'); if ($fccp > 0) { $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','" . USER_NAME . "','{$invnum}','{$fccp}','Credit Card','" . PRD_DB . "','0')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['pcredit'] > 0) { db_conn('core'); $min = $ro; $inv['pcredit'] += $ro; $ro = 0; $amount = $inv['pcredit']; if ($amount >= $av) { writetrans($dept['debtacc'], $vatacc, $td, $refnum, $av, "VAT Received for POS Invoice No.{$invnum}."); $amount = sprint($amount - $av); $av = 0; if ($amount > 0) { writetrans($dept['debtacc'], $dept['pia'], $td, $refnum, $amount, "Sales for POS Invoice No.{$invnum}."); $at = $at - $amount; } } else { writetrans($dept['debtacc'], $vatacc, $td, $refnum, $amount, "VAT Received for POS Invoice No.{$invnum}."); $av = $av - $amount; $amount = 0; } db_conn('cubit'); $inv['pcc'] -= $min; $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','" . USER_NAME . "','{$invnum}','{$fcredit}','Credit','" . PRD_DB . "','0')"; //$Ri=db_exec($Sl) or errDie("Unable to insert data."); $fcredit = 0; } db_conn('cubit'); if ($fcredit > 0) { $Sl = "INSERT INTO payrec(date,by,inv,amount,method,prd,note) VALUES ('{$td}','" . USER_NAME . "','{$invnum}','{$fcredit}','Credit','" . PRD_DB . "','0')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } if ($inv['rounding'] > 0) { if ($inv['pcash'] > 0) { writetrans($rac, $dept['pca'], $td, $refnum, $inv['rounding'], "Rounding on Invoice No.{$invnum}."); } elseif ($inv['pcheque'] > 0) { writetrans($rac, $dept['pca'], $td, $refnum, $inv['rounding'], "Rounding on Invoice No.{$invnum}."); } elseif ($inv['pcc'] > 0) { writetrans($rac, $cc, $td, $refnum, $inv['rounding'], "Rounding on Invoice No.{$invnum}."); } elseif ($inv['pcredit'] > 0) { writetrans($rac, $dept['debtacc'], $td, $refnum, $inv['rounding'], "Rounding on Invoice No.{$invnum}."); } } // if($inv['terms']==1) { // $dept['pca']=$cc; // } // // # dt(debtors) ct(income/sales) // writetrans($dept['pca'], $dept['pia'], $td, $refnum, ($TOTAL-$VAT), "Sales for POS Invoice No.$invnum."); // // # dt(debtors) ct(vat account) // writetrans($dept['pca'], $vatacc, $td, $refnum, $VAT, "VAT Received for POS Invoice No.$invnum."); // db_connect(); // $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div) // VALUES('$inv[odate]', '$invid', '$invnum', '$dept[debtacc]', '$VAT', '$TOTAL', 'stk', '".USER_DIV."')"; // $recRslt = db_exec($sql); db_conn('cubit'); if ($inv['cusnum'] > 0) { db_conn('cubit'); $Sl = "SELECT * FROM customers WHERE cusnum='{$inv['cusnum']}'"; $Ri = db_exec($Sl) or errDie("Unable to get data."); $cd = pg_fetch_array($Ri); $inv['cusname'] = $cd['surname']; } $Sl = "INSERT INTO sj(cid,name,des,date,exl,vat,inc,div) VALUES\n\t('{$inv['cusnum']}','{$inv['cusname']}','POS Invoice {$invnum}','{$inv['odate']}','" . sprint($TOTAL - $VAT) . "','{$VAT}','" . sprint($TOTAL) . "','" . USER_DIV . "')"; $Ri = db_exec($Sl); if ($change > 0) { $Sl = "INSERT INTO pc(date,by,inv,amount) VALUES ('{$sd}','" . USER_NAME . "','{$invnum}','{$change}')"; $Ri = db_exec($Sl) or errDie("Unable to insert data."); } db_conn('cubit'); if ($inv['rounding'] > 0) { $Sl = "INSERT INTO varrec(inv,date,amount) VALUES('{$invnum}','" . date("Y-m-d") . "','{$inv['rounding']}')"; $Ri = db_exec($Sl); } # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); if (strlen($inv['comm']) > 0) { $Com = "<table><tr><td>" . nl2br($inv['comm']) . "</td></tr></table>"; } else { $Com = ""; } $cc = "<script> sCostCenter('dt', 'Sales', '{$inv['odate']}', 'POS Invoice No.{$invnum}', '" . ($TOTAL - $VAT) . "', 'Cost Of Sales for Invoice No.{$invnum}', '{$tcosamt}', ''); </script>"; if ($inv['chrgvat'] == "inc") { $inv['chrgvat'] = "Inclusive"; } elseif ($inv['chrgvat'] == "exc") { $inv['chrgvat'] = "Exclusive"; } else { $inv['chrgvat'] = "No vat"; } /* - End Transactoins - */ /* -- Final Layout -- */ $details = "\n\t\t\t\t\t<center>\n\t\t\t\t\t{$cc}\n\t\t\t\t\t<h2>Tax Invoice</h2>\n\t\t\t\t\t<table cellpadding='0' cellspacing='1' border=0 width=750>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td valign='top' width='40%'>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t\t\t<tr><td>{$inv['surname']}</td></tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td valign='top' width='35%'>\n\t\t\t\t\t\t\t\t" . COMP_NAME . "<br>\n\t\t\t\t\t\t\t\t" . COMP_ADDRESS . "<br>\n\t\t\t\t\t\t\t\t" . COMP_TEL . "<br>\n\t\t\t\t\t\t\t\t" . COMP_FAX . "<br>\n\t\t\t\t\t\t\t\tReg No. " . COMP_REGNO . "<br>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td valign='bottom' align='right' width='25%'>\n\t\t\t\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1' bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Invoice No.</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$invnum}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Order No.</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['ordno']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Terms</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>Cash</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Invoice Date</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['odate']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>VAT</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['chrgvat']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</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 colspan='3'>\n\t\t\t\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width=100% bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t\t\t\t\t\t\t<th width='45%'>DESCRIPTION</th>\n\t\t\t\t\t\t\t\t\t\t<th>QTY</th>\n\t\t\t\t\t\t\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t\t\t\t\t\t\t<th>AMOUNT</th>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t{$products}\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</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>{$Com}</td>\n\t\t\t\t\t\t\t<td align='right' colspan='2'>\n\t\t\t\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width='50%' bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>SUBTOTAL</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$SUBTOT}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Trade Discount</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$inv['discount']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Delivery Charge</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$inv['delivery']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>VAT @ {$VATP}%</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$VAT}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th><b>GRAND TOTAL<b></th>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$TOTAL}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</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>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . " border='1'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td colspan='2'>VAT Exempt indicator = #</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th>VAT No.</th>\n\t\t\t\t\t\t\t\t\t\t<td align='center'>" . COMP_VATNO . "</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t </table>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td><br></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t\t</center>"; /* Start moving invoices */ db_connect(); # Move invoices that are fully paid $sql = "SELECT * FROM pinvoices WHERE printed = 'y' AND done = 'y' AND div = '" . USER_DIV . "'"; $invbRslt = db_exec($sql) or errDie("Unable to update Invoice information in Cubit.", SELF); while ($invb = pg_fetch_array($invbRslt)) { db_conn($invb['prd']); $invb['invnum'] += 0; # Insert invoice to period DB $sql = "INSERT INTO pinvoices(invid,invnum, deptid, cusnum, deptname, cusacc, cusname, telno,\n\t\t\t\t\tsurname, cusaddr, cusvatno, cordno, ordno, chrgvat, terms, traddisc, salespn,\n\t\t\t\t\todate, delchrg, subtot, vat, total, balance, comm, printed, done, div, username,\n\t\t\t\t\trounding,delvat,vatnum,pcash,pcheque,pcc,pcredit, pslip_sordid)\n\t\t\t\tVALUES('{$invb['invid']}','{$invb['invnum']}', '{$invb['deptid']}', '{$invb['cusnum']}',\n\t\t\t\t\t'{$invb['deptname']}', '{$invb['cusacc']}', '{$invb['cusname']}', '{$invb['telno']}', '{$invb['surname']}',\n\t\t\t\t\t'{$invb['cusaddr']}', '{$invb['cusvatno']}', '{$invb['cordno']}', '{$invb['ordno']}',\n\t\t\t\t\t'{$invb['chrgvat']}', '{$invb['terms']}', '{$invb['traddisc']}', '{$invb['salespn']}',\n\t\t\t\t\t'{$invb['odate']}', '{$invb['delchrg']}', '{$invb['subtot']}', '{$invb['vat']}' ,\n\t\t\t\t\t'{$invb['total']}', '{$invb['balance']}', '{$invb['comm']}', 'y', 'y', '" . USER_DIV . "',\n\t\t\t\t\t'" . USER_NAME . "','{$invb['rounding']}','{$invb['delvat']}','{$invb['vatnum']}',\n\t\t\t\t\t'{$invb['pcash']}','{$invb['pcheque']}','{$invb['pcc']}','{$invb['pcredit']}', '{$invb['pslip_sordid']}')"; $rslt = db_exec($sql) or errDie("Unable to insert invoice to the period database.", SELF); db_connect(); $sql = "INSERT INTO movinv(invtype, invnum, prd, docref, div) VALUES('pos', '{$invb['invnum']}', '{$invb['prd']}', '', '" . USER_DIV . "')"; $rslt = db_exec($sql) or errDie("Unable to insert invoice to the period database.", SELF); # get selected stock in this invoice db_connect(); $sql = "SELECT * FROM pinv_items WHERE invid = '{$invb['invid']}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); while ($stkd = pg_fetch_array($stkdRslt)) { db_conn($invb['prd']); # insert invoice items $stkd['vatcode'] += 0; $stkd['account'] += 0; $sql = "INSERT INTO pinv_items(invid, whid, stkid, qty, unitcost, amt, disc, discp, serno, div,vatcode,account,description) VALUES('{$invb['invid']}', '{$stkd['whid']}', '{$stkd['stkid']}', '{$stkd['qty']}', '{$stkd['unitcost']}', '{$stkd['amt']}', '{$stkd['disc']}', '{$stkd['discp']}', '{$stkd['serno']}', '" . USER_DIV . "','{$stkd['vatcode']}','{$stkd['account']}','{$stkd['description']}')"; $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF); } db_connect(); # Remove those invoices from running DB $sql = "DELETE FROM pinvoices WHERE invid = '{$invb['invid']}' AND div = '" . USER_DIV . "'"; $delRslt = db_exec($sql) or errDie("Unable to update Invoice information in Cubit.", SELF); # Remove those invoice items from running DB $sql = "DELETE FROM pinv_items WHERE invid = '{$invb['invid']}' AND div = '" . USER_DIV . "'"; $delRslt = db_exec($sql) or errDie("Unable to update Invoice information in Cubit.", SELF); } /* end moving invoices */ /* OLD $OUTPUT = $details; require("tmpl-print.php");*/ header("Location: pos-slip.php?invid={$inv['invid']}&prd={$inv['prd']}&cccc=yes"); exit; }
function write($_POST) { # get vars extract($_POST); # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid invoice number."); $v->isOk($comm, "string", 0, 255, "Invalid Comments."); $v->isOk($terms, "num", 1, 20, "Invalid terms."); $v->isOk($odate, "date", 1, 14, "Invalid Invoice note date."); $v->isOk($traddisc, "float", 0, 20, "Invalid Trade Discount."); $v->isOk($delchrg, "float", 0, 20, "Invalid Delivery Charge."); $v->isOk($SUBTOT, "float", 0, 20, "Invalid Delivery Charge."); # used to generate errors $error = "asa@"; # check quantities if (isset($qtys)) { foreach ($qtys as $keys => $qty) { $v->isOk($qty, "float", 1, 15, "Invalid Returned Quantity."); $v->isOk($disc[$keys], "float", 0, 20, "Invalid Discount."); $v->isOk($discp[$keys], "float", 0, 20, "Invalid Discount Percentage."); } } else { $v->isOk($error, "num", 0, 1, "Invalid Returned Quantity."); } # check stkids[] if (isset($stkids)) { foreach ($stkids as $keys => $stkid) { $v->isOk($stkid, "num", 1, 10, "Invalid Stock number, please enter all details."); } } else { $v->isOk($error, "num", 0, 1, "Invalid Stock number, please enter all details."); } # check amt[] if (isset($amt)) { foreach ($amt as $keys => $amount) { $v->isOk($amount, "float", 1, 20, "Invalid Amount, please enter all details."); } } else { $v->isOk($error, "num", 0, 1, "Invalid Amount, 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 error($_POST, $err); } /* -------------------------------- */ # Get invoice info db_connect(); $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class=err>Not Found</i>"; } $inv = pg_fetch_array($invRslt); cus_xrate_update($inv['fcid'], $inv['xrate']); $notenum = divlastid('note', USER_DIV); /* --- Start Products Display --- */ # Products layout $products = ""; $taxex = 0; foreach ($qtys as $keys => $value) { db_connect(); # 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 in this invoice $sql = "SELECT * FROM inv_items WHERE stkid = '{$stkids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); # get warehouse name db_conn("exten"); $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); # Calculate the Discount discount if ($disc[$keys] < 1) { if ($discp[$keys] > 0) { $disc[$keys] = $discp[$keys] / 100 * $stkd['unitcost']; } } else { $discp[$keys] = $disc[$keys] * 100 / $stkd['unitcost']; } # Calculate amount $amt[$keys] = $qtys[$keys] * ($stkd['unitcost'] - $disc[$keys]); db_connect(); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please select the vatcode for all your stock."; } $vd = pg_fetch_array($Ri); # Check Tax Excempt if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $taxex += $amt[$keys]; } # put in product $products .= "\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stk['stkid']}'>{$stk['stkcod']}</td>\n\t\t\t\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t\t\t\t<td><input type='hidden' size='5' name='qtys[]' value='{$qtys[$keys]}'>{$qtys[$keys]}</td>\n\t\t\t\t\t\t\t<td>{$stkd['unitcost']}</td>\n\t\t\t\t\t\t\t<td><input type='hidden' name='amt[]' value='{$amt[$keys]}'>{$inv['currency']} {$amt[$keys]}</td>\n\t\t\t\t\t\t</tr>"; } # get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$inv['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); } /* --- ----------- Clac --------------------- */ ##----------------------NEW---------------------- $sub = 0.0; if (isset($amt)) { $sub = sprint(array_sum($amt)); } $VATP = TAX_VAT; if ($inv['chrgvat'] == "exc") { $taxex = sprint($taxex - $taxex * $traddisc / 100); $subtotal = sprint($sub + $delchrg); $traddiscmt = sprint($subtotal * $traddisc / 100); $subtotal = sprint($subtotal - $traddiscmt); $VAT = sprint(($subtotal - $taxex) * $VATP / 100); $SUBTOT = $sub; $TOTAL = sprint($subtotal + $VAT); $delexvat = sprint($delchrg); } elseif ($inv['chrgvat'] == "inc") { $ot = $taxex; $taxex = sprint($taxex - $taxex * $traddisc / 100); $subtotal = sprint($sub + $delchrg); $traddiscmt = sprint($subtotal * $traddisc / 100); $subtotal = sprint($subtotal - $traddiscmt); $VAT = sprint(($subtotal - $taxex) * $VATP / (100 + $VATP)); $SUBTOT = sprint($sub); $TOTAL = sprint($subtotal); $delexvat = sprint($delchrg); $traddiscmt = sprint($traddiscmt); } else { $subtotal = sprint($sub + $delchrg); $traddiscmt = sprint($subtotal * $traddisc / 100); $subtotal = sprint($subtotal - $traddiscmt); $VAT = sprint(0); $SUBTOT = $sub; $TOTAL = $subtotal; $delexvat = sprint($delchrg); } $SUBTOTAL = sprint($SUBTOT); $traddiscm = $traddiscmt; /* --- ----------- Clac --------------------- */ ##----------------------END---------------------- /* --- ----------- Clac --------------------- # calculate subtot $SUBTOT = 0.00; if(isset($amt)) $SUBTOT = sprint(array_sum($amt)); $SUBTOT -= $taxex; # duplicate $SUBTOTAL = sprint($SUBTOT); $VATP = TAX_VAT; if($inv['chrgvat'] == "exc"){ $SUBTOTAL = $SUBTOTAL; $delexvat= ($delchrg); }elseif($inv['chrgvat'] == "inc"){ $SUBTOTAL = sprint(($SUBTOTAL * 100)/(100 + $VATP)); $delexvat = sprint(($delchrg * 100)/($VATP + 100)); }else{ $SUBTOTAL = ($SUBTOTAL); $delexvat = ($delchrg); } $SUBTOT = $SUBTOTAL; $EXVATTOT = $SUBTOT; $EXVATTOT += $delexvat; # Minus trade discount from taxex if($traddisc > 0){ $traddiscmtt = (($traddisc/100) * $taxex); }else{ $traddiscmtt = 0; } $taxext = ($taxex - $traddiscmtt); if($traddisc > 0) { $traddiscmt = ($EXVATTOT * ($traddisc/100)); }else{ $traddiscmt = 0; } $EXVATTOT -= $traddiscmt; // $EXVATTOT -= $taxex; $traddiscmt = sprint($traddiscmt + $traddiscmtt); $traddiscm = $traddiscmt; if($inv['chrgvat'] != "nov"){ $VAT = sprint($EXVATTOT * ($VATP/100)); }else{ $VAT = 0; } $TOTAL = sprint($EXVATTOT + $VAT + $taxext); $SUBTOT += $taxex; /* --- ----------- Clac --------------------- */ $FSUBTOT = sprint($SUBTOT * $inv['xrate']); $FSUBTOTAL = sprint($SUBTOTAL * $inv['xrate']); $FVAT = sprint($VAT * $inv['xrate']); $FTOTAL = sprint($TOTAL * $inv['xrate']); $fdelchrg = sprint($delchrg * $inv['xrate']); $ftraddiscm = sprint($traddiscm * $inv['xrate']); /* --- ----------- Clac --------------------- */ # Get invoice info db_connect(); $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<li class=err>Invoice Not Found</li>"; } $inv = pg_fetch_array($invRslt); /* A quick fix by jupiter $allnoted = true; foreach($qtys as $keys => $value){ # get selected stock in this invoice $sql = "SELECT * FROM inv_items WHERE id = '$ids[$keys]' AND invid ='$invid' AND div = '".USER_DIV."'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); if($stkd['qty'] != $qtys[$keys]){ $allnoted = false; } } if($allnoted){ $SUBTOT = sprint($inv['subtot']); $VAT = sprint($inv['vat']); $TOTAL = sprint($inv['total']); $delchrg = sprint($inv['delivery']); $traddiscm = sprint($inv['discount']); $SUBTOTAL = sprint($TOTAL - $VAT); $FSUBTOT = sprint($SUBTOT * $inv['xrate']); $FSUBTOTAL = sprint($SUBTOTAL * $inv['xrate']); $FVAT = sprint($VAT * $inv['xrate']); $FTOTAL = sprint($TOTAL * $inv['xrate']); $fdelchrg = sprint($delchrg * $inv['xrate']); $ftraddiscm = sprint($traddiscm * $inv['xrate']); } /*End A quick fix by jupiter */ $invpay = $TOTAL; /*if($inv['fbalance'] >= $TOTAL) { $invpay = $TOTAL; $examt = 0; } else { $invpay = $inv['fbalance']; $examt = ($TOTAL-$invpay); } # Make it local $examt = ($examt * $inv['xrate']);*/ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT"); /* - End Hooks - */ # Todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); $refnum = getrefnum(); /*refnum*/ # Insert invoice to period DB db_conn($inv['prd']); # Format date $odate = explode("-", $odate); $rodate = $odate[2] . "-" . $odate[1] . "-" . $odate[0]; $td = $rodate; # Insert invoice credit note to DB $sql = "INSERT INTO inv_notes(deptid, notenum, invnum, invid, cusnum, cordno, ordno, chrgvat, fcid, currency, xrate, terms, traddisc, salespn, odate, delchrg, subtot, vat, total, comm, username, div, surname, cusaddr, cusvatno, deptname, location, prd)"; $sql .= " VALUES('{$inv['deptid']}', '{$notenum}', '{$inv['invnum']}', '{$inv['invid']}', '{$inv['cusnum']}', '{$inv['cordno']}', '{$inv['ordno']}', '{$inv['chrgvat']}', '{$inv['fcid']}', '{$inv['currency']}', '{$inv['xrate']}', '{$terms}', '{$traddiscm}', '{$inv['salespn']}', '{$rodate}', '{$delexvat}', '{$SUBTOT}', '{$VAT}' , '{$TOTAL}', '{$comm}', '" . USER_NAME . "', '" . USER_DIV . "', '{$inv['surname']}', '{$inv['cusaddr']}', '{$inv['cusvatno']}', '{$inv['deptname']}', '{$inv['location']}', {$inv['prd']})"; $rslt = db_exec($sql) or errDie("Unable to insert invoice to Cubit.", SELF); # Get next ordnum $noteid = pglib_lastid("inv_notes", "noteid"); db_connect(); # Begin updating pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $nbal = $inv['nbal'] + $TOTAL; # Update the invoice (make balance less) $sql = "UPDATE invoices SET nbal = '{$nbal}', rdelchrg = (rdelchrg + '{$delchrg}'), fbalance = fbalance - '{$invpay}', balance = balance - '{$FTOTAL}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Update the customer (make balance less) $sql = "UPDATE customers SET balance = (balance - '{$FTOTAL}'), fbalance = (fbalance - '{$TOTAL}') WHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Update invoice's discounts # $sql = "UPDATE inv_discs SET traddisc = (traddisc - '$traddiscm'), itemdisc = (itemdisc - '$discs') WHERE cusnum = '$inv[cusnum]' AND invid = '$invid'"; # $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.",SELF); # Record the payment on the statement $sql = "\n\t\t\tINSERT INTO stmnt \n\t\t\t\t(cusnum, invid, amount, date, type, div, allocation_date) \n\t\t\tVALUES \n\t\t\t\t('{$inv['cusnum']}','{$inv['invnum']}','" . ($TOTAL - $TOTAL * 2) . "', '{$rodate}', 'Credit Note for invoice No. {$inv['invnum']}', '" . USER_DIV . "', '{$rodate}')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); $disc = 0; # Commit updating pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); # Make ledge record custledger($inv['cusnum'], $dept['incacc'], $td, $notenum, "Credit Note No. {$notenum} for invoice No. {$inv['invnum']}", $FTOTAL, "c"); /* if($examt > 0) { # Make record for age analisys custCTP($examt, $inv['cusnum']); } */ foreach ($qtys as $keys => $value) { $famt[$keys] = sprint($amt[$keys] * $inv['xrate']); db_connect(); # 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 in this invoice $sql = "SELECT * FROM inv_items WHERE id = '{$ids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); # Keep track of discounts $disc += $stkd['disc'] * $stkd['qty'] * $inv['xrate']; # cost amount $cosamt = round($qtys[$keys] * $stk['csprice'], 2); # Update stock(onhand + qty) $sql = "UPDATE stock SET csamt = (csamt + '{$cosamt}'), units = (units + '{$qtys[$keys]}') WHERE stkid = '{$stkids[$keys]}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); if ($stk['serd'] == 'yes') { ext_InSer($stkd['serno'], $stkd['stkid'], "{$inv['cusname']} {$inv['surname']}", $notenum, 'note', $td); } # negetive values to minus profit $nqty = $qtys[$keys] * 1; $namt = $amt[$keys] * -1; $ncsprice = $cosamt * -1; $noted = $stkd['noted'] + $qtys[$keys]; # stkid, stkcod, stkdes, trantype, edate, qty, csamt, details stockrec($stkd['stkid'], $stk['stkcod'], $stk['stkdes'], 'dt', $td, $nqty, $cosamt, "Credit note for Customer : {$inv['surname']} - Credit note No. {$notenum}"); db_connect(); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please select the vatcode for all your stock."; } $vd = pg_fetch_array($Ri); # Get amount exluding vat if including and not exempted $VATP = TAX_VAT; $amtexvat = $famt[$keys]; if ($inv['chrgvat'] == "inc" && $stk['exvat'] != 'yes' && $vd['zero'] != "Yes") { $amtexvat = sprint($famt[$keys] * 100 / (100 + $VATP)); } ###################VAT CALCS####################### $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; $iamount = $iamount * $inv['xrate']; $ivat = $ivat * $inv['xrate']; vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "VAT for Credit note: {$notenum} Customer : {$inv['cusname']} {$inv['surname']}", -$iamount, -$ivat); #################################################### $sql = "INSERT INTO stockrec(edate, stkid, stkcod, stkdes, trantype, qty, csprice, csamt, details, div)\n\t\t\tVALUES('{$td}', '{$stk['stkid']}', '{$stk['stkcod']}', '{$stk['stkdes']}', 'note', '{$qtys[$keys]}', '{$amtexvat}', '{$cosamt}', 'Credit note for Customer : {$inv['surname']} - Credit note No. {$notenum}', '" . USER_DIV . "')"; $recRslt = db_exec($sql); # Get selected stock in this invoice $sql = "UPDATE inv_items SET noted = '{$noted}' WHERE id = '{$ids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdsRslt = db_exec($sql); $stkds = pg_fetch_array($stkdsRslt); # get accounts db_conn("exten"); $sql = "SELECT stkacc,cosacc FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $stockacc = $wh['stkacc']; $cosacc = $wh['cosacc']; # sales rep commission # coms($inv['salespn'], $amt[$keys], $stk['com'], 'anything'); # dt(stock) ct(cos) writetrans($stockacc, $cosacc, $td, $refnum, $cosamt, "Cost Of Sales for Credit note No. {$notenum} for Customer : {$inv['cusname']} {$inv['surname']}"); db_conn($inv['prd']); # insert invoice items $sql = "INSERT INTO inv_note_items(noteid, whid, stkid, qty, amt, div,vatcode) VALUES('{$noteid}', '{$stkd['whid']}', '{$stkids[$keys]}', '{$qtys[$keys]}', '{$amt[$keys]}', '" . USER_DIV . "','{$stkd['vatcode']}')"; $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF); } db_connect(); # save invoice discount $sql = "INSERT INTO inv_discs(cusnum, invid, traddisc, itemdisc, inv_date, delchrg, div) VALUES('{$inv['cusnum']}', '{$invid}', '0', '-{$disc}', '{$inv['odate']}', '0', '" . USER_DIV . "')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); /* - Start Transactoins - */ # dt(income) ct(debtors) writetrans($dept['incacc'], $dept['debtacc'], $td, $refnum, $FTOTAL - $FVAT, "Debtors Control for Credit note No. {$notenum} for Customer : {$inv['cusname']} {$inv['surname']}"); # dt(vat) ct(debtors) writetrans($vatacc, $dept['debtacc'], $td, $refnum, $FVAT, "Vat Return for Credit note No. {$notenum} for Customer : {$inv['cusname']} {$inv['surname']}"); db_connect(); $date = date("Y-m-d"); $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\n\tVALUES('{$rodate}', '{$noteid}', '{$notenum}', '{$dept['debtacc']}', '{$FVAT}', '{$FTOTAL}', 'nstk', '" . USER_DIV . "')"; $recRslt = db_exec($sql); db_conn('cubit'); $Sl = "INSERT INTO sj(cid,name,des,date,exl,vat,inc,div) VALUES\n\t('{$inv['cusnum']}','{$inv['surname']}','Credit Note: {$notenum}, International Invoice {$inv['invnum']}','{$rodate}','" . -sprint($FTOTAL - $FVAT) . "','-{$FVAT}','" . -sprint($FTOTAL) . "','" . USER_DIV . "')"; $Ri = db_exec($Sl); /* - End Transactoins - */ /* -- Final Layout -- */ $details = "\n\t\t\t\t\t<center>\n\t\t\t\t\t<h2>Credit Note</h2>\n\t\t\t\t\t<table cellpadding='0' cellspacing='4' border=0 width=750>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td valign='top' width='30%'>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>{$inv['surname']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>" . nl2br($inv['cusaddr']) . "</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>(Vat No. {$inv['cusvatno']})</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td valign='top' width='25%'>\n\t\t\t\t\t\t\t\t" . COMP_NAME . "<br>\n\t\t\t\t\t\t\t\t" . COMP_ADDRESS . "<br>\n\t\t\t\t\t\t\t\t" . COMP_TEL . "<br>\n\t\t\t\t\t\t\t\t" . COMP_FAX . "<br>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td width='20%'><img src='compinfo/getimg.php' width=230 height=47></td>\n\t\t\t\t\t\t\t<td valign='bottom' align='right' width='25%'>\n\t\t\t\t\t\t\t\t<table cellpadding='2' cellspacing='0' border=1 bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Credit Note No.</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$notenum}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Invoice No.</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['invnum']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Order No.</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['ordno']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Terms</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$terms} Days</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Credit note Date</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$rodate}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</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 colspan='4'>\n\t\t\t\t\t\t\t\t<table cellpadding='5' cellspacing='0' border=1 width=100% bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t\t\t\t\t\t\t<th width='45%'>DESCRIPTION</th>\n\t\t\t\t\t\t\t\t\t\t<th>QTY RETURNED</th>\n\t\t\t\t\t\t\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t\t\t\t\t\t\t<th>AMOUNT</th>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t{$products}\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</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>\n\t\t\t\t\t\t\t\t<table border='1' cellspacing='0' bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr><td>" . nl2br($comm) . "</td></tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td align='right' colspan='3'>\n\t\t\t\t\t\t\t\t<table cellpadding='5' cellspacing='0' border=1 width=50% bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>SUBTOTAL</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$SUBTOT}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Trade Discount</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$traddiscmt}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Delivery Charge</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$delexvat}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>VAT @ {$VATP}%</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$VAT}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th><b>GRAND TOTAL<b></th>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$TOTAL}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</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>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . " border=1>\n\t\t\t\t\t\t \t<tr>\n\t\t\t\t\t\t \t\t<th>VAT No.</th>\n\t\t\t\t\t\t \t\t<td align='center'>" . COMP_VATNO . "</td>\n\t\t\t\t\t\t \t</tr>\n\t\t\t\t\t\t </table>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td><br></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t\t</center>"; $OUTPUT = "<script>printer('intinvoice-note-reprint.php?noteid={$noteid}&prd={$inv['prd']}&cccc=yes');move('main.php');</script>"; require "template.php"; }
function write($_POST) { $showvat = TRUE; # get vars extract($_POST); # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid invoice number."); $v->isOk($comm, "string", 0, 255, "Invalid Comments."); $v->isOk($terms, "num", 1, 20, "Invalid terms."); $v->isOk($odate, "date", 1, 14, "Invalid Invoice note date."); $v->isOk($traddisc, "float", 0, 20, "Invalid Trade Discount."); $v->isOk($delchrg, "float", 0, 20, "Invalid Delivery Charge."); $v->isOk($SUBTOT, "float", 0, 20, "Invalid Delivery Charge."); $v->isOk($prd, "num", 1, 2, "Invalid prd."); # used to generate errors $error = "asa@"; # check quantities if (isset($qtys)) { foreach ($qtys as $keys => $qty) { $v->isOk($qty, "float", 1, 15, "Invalid Returned Quantity."); $v->isOk($disc[$keys], "float", 0, 20, "Invalid Discount."); $v->isOk($discp[$keys], "float", 0, 20, "Invalid Discount Percentage."); } } else { $v->isOk($error, "num", 0, 1, "Invalid Returned Quantity."); } # check stkids[] if (isset($stkids)) { foreach ($stkids as $keys => $stkid) { $v->isOk($stkid, "num", 1, 10, "Invalid Stock number, please enter all details."); } } else { $v->isOk($error, "num", 0, 1, "Invalid Stock number, please enter all details."); } # check amt[] if (isset($amt)) { foreach ($amt as $keys => $amount) { $v->isOk($amount, "float", 1, 20, "Invalid Amount, please enter all details."); } } else { $v->isOk($error, "num", 0, 1, "Invalid Amount, 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 error($_POST, $err); } /* -------------------------------- */ # Get invoice info db_conn($prd); $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); # CHECK IF THIS DATE IS IN THE BLOCKED RANGE $blocked_date_from = getCSetting("BLOCKED_FROM"); $blocked_date_to = getCSetting("BLOCKED_TO"); if (strtotime($inv['odate']) >= strtotime($blocked_date_from) and strtotime($inv['odate']) <= 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>"; } pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $notenum = divlastid('note', USER_DIV); $vatamount = 0; /* --- Start Products Display --- */ # Products layout $products = ""; $taxex = 0; foreach ($qtys as $keys => $value) { db_connect(); # 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); db_conn($prd); # get selected stock in this invoice $sql = "SELECT * FROM inv_items WHERE id = '{$ids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); if ($stkd['account'] == 0) { # get warehouse name db_conn("exten"); $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); # Calculate the Discount discount if ($disc[$keys] < 1) { if ($discp[$keys] > 0) { $disc[$keys] = $discp[$keys] / 100 * $stkd['unitcost']; } } else { $discp[$keys] = $disc[$keys] * 100 / $stkd['unitcost']; } # Calculate amount $amt[$keys] = $qtys[$keys] * ($stkd['unitcost'] - $disc[$keys]); db_connect(); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") { $showvat = FALSE; } $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; $vatamount += $ivat; # Check Tax Excempt if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $taxex += $amt[$keys]; } # put in product $products .= "\n\t\t\t\t<tr>\n\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stk['stkid']}'>{$stk['stkcod']}</td>\n\t\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t\t<td><input type='hidden' size='5' name='qtys[]' value='{$qtys[$keys]}'>{$qtys[$keys]}</td>\n\t\t\t\t\t<td>{$stkd['unitcost']}</td>\n\t\t\t\t\t<td><input type='hidden' name='amt[]' value='{$amt[$keys]}'>" . CUR . " {$amt[$keys]}</td>\n\t\t\t\t</tr>"; } else { # get warehouse name db_conn("core"); $sql = "SELECT accname FROM accounts WHERE accid = '{$stkd['account']}'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $discp[$keys] = 0; # Calculate amount $amt[$keys] = $qtys[$keys] * ($stkd['unitcost'] - $disc[$keys]); db_connect(); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") { $showvat = FALSE; } $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; $vatamount += $ivat; # Check Tax Excempt if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $taxex += $amt[$keys]; } $wh['whname'] = ""; $stk['stkid'] = 0; $stk['stkcod'] = $wh['accname']; $stk['stkdes'] = $stkd['description']; # put in product $products .= "\n\t\t\t\t<tr>\n\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stk['stkid']}'>{$stk['stkcod']}</td>\n\t\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t\t<td><input type='hidden' size='5' name='qtys[]' value='{$qtys[$keys]}'>{$qtys[$keys]}</td>\n\t\t\t\t\t<td>{$stkd['unitcost']}</td>\n\t\t\t\t\t<td><input type='hidden' name='amt[]' value='{$amt[$keys]}'>" . CUR . " {$amt[$keys]}</td>\n\t\t\t\t</tr>"; } } # get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$inv['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); } /* --- ----------- Clac --------------------- */ ##----------------------NEW---------------------- $sub = 0.0; if (isset($amt)) { $sub = sprint(array_sum($amt)); } $VATP = TAX_VAT; if ($inv['chrgvat'] == "exc") { $taxex = sprint($taxex - $taxex * $traddisc / 100); $subtotal = sprint($sub + $delchrg); $traddiscmt = sprint($subtotal * $traddisc / 100); $subtotal = sprint($subtotal - $traddiscmt); // $VAT = sprint(($subtotal - $taxex) * $VATP / 100); $VAT = sprint($vatamount); $SUBTOT = $sub; $TOTAL = sprint($subtotal + $VAT); $delexvat = sprint($delchrg); } elseif ($inv['chrgvat'] == "inc") { $ot = $taxex; $taxex = sprint($taxex - $taxex * $traddisc / 100); $subtotal = sprint($sub + $delchrg); $traddiscmt = sprint($subtotal * $traddisc / 100); $subtotal = sprint($subtotal - $traddiscmt); // $VAT = sprint(($subtotal - $taxex) * $VATP / (100 + $VATP)); $VAT = sprint($vatamount); $SUBTOT = sprint($sub); $TOTAL = sprint($subtotal); $delexvat = sprint($delchrg); $traddiscmt = sprint($traddiscmt); } else { $subtotal = sprint($sub + $delchrg); $traddiscmt = sprint($subtotal * $traddisc / 100); $subtotal = sprint($subtotal - $traddiscmt); $VAT = sprint(0); $SUBTOT = $sub; $TOTAL = $subtotal; $delexvat = sprint($delchrg); } /* --- ----------- Clac --------------------- */ ##----------------------END---------------------- # Get invoice info db_conn($prd); $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<li class='err'>Invoice Not Found</li>"; } $inv = pg_fetch_array($invRslt); /* A quick fix by jupiter $allnoted = true; foreach($qtys as $keys => $value){ # get selected stock in this invoice $sql = "SELECT * FROM inv_items WHERE id = '$ids[$keys]' AND invid ='$invid' AND div = '".USER_DIV."'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); if($stkd['qty'] != $qtys[$keys]){ $allnoted = false; } } if($allnoted){ $SUBTOT = sprint($inv['subtot']); $VAT = sprint($inv['vat']); $TOTAL = sprint($inv['total']); $delchrg = sprint($inv['delivery']); $traddiscmt = sprint($inv['discount']); $SUBTOTAL = sprint($TOTAL - $VAT); } /* End A quick fix by jupiter */ if ($inv['balance'] >= $TOTAL) { $invpay = $TOTAL; $examt = 0; } else { $invpay = $inv['balance']; $examt = $TOTAL - $invpay; } /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "no"); /* - End Hooks - */ # Todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); $refnum = getrefnum(); /*refnum*/ # Insert invoice to period DB db_conn($inv['prd']); # Format date $odate = explode("-", $odate); $rodate = $odate[2] . "-" . $odate[1] . "-" . $odate[0]; $td = $rodate; # Insert invoice credit note to DB $sql = "\n\t\tINSERT INTO inv_notes (\n\t\t\tdeptid, notenum, invnum, invid, cusnum, cordno, ordno, \n\t\t\tchrgvat, terms, traddisc, salespn, odate, delchrg, subtot, vat, \n\t\t\ttotal, comm, username, div, surname, cusaddr, cusvatno, \n\t\t\tdeptname, prd\n\t\t) VALUES (\n\t\t\t'{$inv['deptid']}', '{$notenum}', '{$inv['invnum']}', '{$inv['invid']}', '{$inv['cusnum']}', '{$inv['cordno']}', '{$inv['ordno']}', \n\t\t\t'{$inv['chrgvat']}', '{$terms}', '{$traddiscmt}', '{$inv['salespn']}', '{$rodate}', '{$delexvat}', '{$SUBTOT}', '{$VAT}', \n\t\t\t'{$TOTAL}', '{$comm}', '" . USER_NAME . "', '" . USER_DIV . "', '{$inv['surname']}', '{$inv['cusaddr']}', '{$inv['cusvatno']}', \n\t\t\t'{$inv['deptname']}', {$inv['prd']}\n\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert invoice to Cubit.", SELF); # Get next ordnum $noteid = pglib_lastid("inv_notes", "noteid"); # Begin updating #pglib_transaction ("BEGIN") or errDie("Unable to start a database transaction.",SELF); $nbal = $inv['nbal'] + $TOTAL; db_conn($prd); # Update the invoice (make balance less) $sql = "\n\t\tUPDATE invoices \n\t\tSET nbal = '{$nbal}', rdelchrg = (rdelchrg + '{$delchrg}'), balance = balance - '{$invpay}' \n\t\tWHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); db_connect(); # Update the invoice (make balance less) $sql = "UPDATE open_stmnt SET balance = balance-'{$TOTAL}' WHERE invid = '{$inv['invnum']}'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Update the customer (make balance less) $sql = "UPDATE customers SET balance = (balance - '{$TOTAL}') WHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Update invoice's discounts # $sql = "UPDATE inv_discs SET traddisc = (traddisc - '$traddiscm'), itemdisc = (itemdisc - '$discs') WHERE cusnum = '$inv[cusnum]' AND invid = '$invid'"; # $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.",SELF); # record the payment on the statement $sql = "\n\t\t\tINSERT INTO stmnt (\n\t\t\t\tcusnum, invid, amount, date, \n\t\t\t\ttype, div, allocation_date\n\t\t\t) VALUES (\n\t\t\t\t'{$inv['cusnum']}', '{$notenum}', '" . ($TOTAL - $TOTAL * 2) . "', '{$rodate}', \n\t\t\t\t'Credit Note for invoice No. {$inv['invnum']}', '" . USER_DIV . "', '{$rodate}'\n\t\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); $disc = 0; # Commit updating #pglib_transaction ("COMMIT") or errDie("Unable to commit a database transaction.",SELF); $nsp = 0; # Make ledge record custledger($inv['cusnum'], $dept['incacc'], $sdate, $notenum, "Credit Note No. {$notenum} for invoice No. {$inv['invnum']}", $TOTAL, "c"); if ($examt > 0) { # Make record for age analisys custCTP($examt, $inv['cusnum']); } foreach ($qtys as $keys => $value) { db_connect(); # 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); db_conn($prd); # get selected stock in this invoice $sql = "SELECT * FROM inv_items WHERE id='{$ids[$keys]}' AND invid='{$invid}' AND div='" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); if ($stkd['account'] == 0) { # Keep track of discounts $disc += $stkd['disc'] * $stkd['qty']; db_connect(); $Sl = "SELECT * FROM scr WHERE inv='{$inv['invnum']}' AND stkid='{$stkd['stkid']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) > 0) { $cd = pg_fetch_array($Ri); $stk['csprice'] = $cd['amount']; } else { $stk['csprice'] = 0; } # cost amount $cosamt = round($qtys[$keys] * $stk['csprice'], 2); db_connect(); # Update stock(onhand + qty) $sql = "UPDATE stock SET csamt = (csamt + '{$cosamt}'), units = (units + '{$qtys[$keys]}') WHERE stkid = '{$stkids[$keys]}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); db_connect(); # fix stock cost amount $Sl = "UPDATE stock set csprice=csamt/units WHERE stkid = '{$stkids[$keys]}' AND units>0"; $Ri = db_exec($Sl) or errDie("Unable to update stock cost price in Cubit.", SELF); if ($stk['serd'] == 'yes') { ext_InSer($stkd['serno'], $stkd['stkid'], "{$inv['cusname']} {$inv['surname']}", $notenum, 'note', $rodate); } # negetive values to minus profit $nqty = $qtys[$keys] * 1; $namt = $amt[$keys] * -1; $ncsprice = $cosamt * -1; $noted = $stkd['noted'] + $qtys[$keys]; # stkid, stkcod, stkdes, trantype, edate, qty, csamt, details stockrec($stkd['stkid'], $stk['stkcod'], $stk['stkdes'], 'dt', $td, $nqty, $cosamt, "Credit note for Customer : {$inv['surname']} - Credit note No. {$notenum}"); # Get amount exluding vat if including and not exempted $VATP = TAX_VAT; $amtexvat = $amt[$keys]; ###################VAT CALCS####################### db_connect(); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "VAT for Credit note: {$notenum} Customer : {$inv['cusname']} {$inv['surname']}", -$iamount, -$ivat); #################################################### db_connect(); $sql = "\n\t\t\t\tINSERT INTO stockrec (\n\t\t\t\t\tedate, stkid, stkcod, stkdes, trantype, qty, csprice, \n\t\t\t\t\tcsamt, details, div\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$td}', '{$stk['stkid']}', '{$stk['stkcod']}', '{$stk['stkdes']}', 'note', '{$qtys[$keys]}', '{$amtexvat}', \n\t\t\t\t\t'{$cosamt}', 'Credit note for Customer : {$inv['surname']} - Credit note No. {$notenum}', '" . USER_DIV . "'\n\t\t\t\t)"; $recRslt = db_exec($sql); db_conn($inv['prd']); # Get selected stock in this invoice $sql = "UPDATE inv_items SET noted = '{$noted}' WHERE id = '{$ids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdsRslt = db_exec($sql); $stkds = pg_fetch_array($stkdsRslt); # get accounts db_conn("exten"); $sql = "SELECT stkacc,cosacc FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $stockacc = $wh['stkacc']; $cosacc = $wh['cosacc']; # sales rep commission # coms($inv['salespn'], $amt[$keys], $stk['com'], 'anything'); //$commision=$commision+coms($inv['salespn'], $stkd['amt'], $stk['com']); # dt(stock) ct(cos) writetrans($stockacc, $cosacc, $td, $refnum, $cosamt, "Cost Of Sales for Credit note No. {$notenum} for Customer : {$inv['cusname']} {$inv['surname']}"); db_conn($inv['prd']); # insert invoice items $sql = "\n\t\t\t\tINSERT INTO inv_note_items (\n\t\t\t\t\tnoteid, whid, stkid, qty, amt, div\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$noteid}', '{$stkd['whid']}', '{$stkids[$keys]}', '{$qtys[$keys]}', '{$amt[$keys]}', '" . USER_DIV . "'\n\t\t\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF); db_connect(); $sql = "\n\t\t\t\tINSERT INTO salesrec (\n\t\t\t\t\tedate, invid, invnum, debtacc, vat, total, typ, div\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$rodate}', '{$noteid}', '{$notenum}', '{$dept['debtacc']}', '{$ivat}', '{$iamount}', 'nstk', '" . USER_DIV . "'\n\t\t\t\t)"; $recRslt = db_exec($sql); } else { # Keep track of discounts //$disc += ($stkd['disc'] * $stkd['qty']); # negetive values to minus profit $nqty = $qtys[$keys] * 1; $namt = $amt[$keys] * -1; //$ncsprice = ($cosamt * (-1)); $noted = $stkd['noted'] + $qtys[$keys]; # Get amount exluding vat if including and not exempted $VATP = TAX_VAT; $amtexvat = $amt[$keys]; ###################VAT CALCS####################### db_connect(); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "VAT for Credit note: {$notenum} Customer : {$inv['cusname']} {$inv['surname']}", -$iamount, -$ivat); #################################################### db_conn($inv['prd']); # Get selected stock in this invoice $sql = "UPDATE inv_items SET noted = '{$noted}' WHERE id = '{$ids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdsRslt = db_exec($sql); $stkds = pg_fetch_array($stkdsRslt); $nsp += sprint($iamount - $ivat); //writetrans($cosacc, $stockacc,$inv['odate'] , $refnum, $cosamt, "Cost Of Sales for Invoice No.$invnum for Customer : $inv[cusname] $inv[surname]"); writetrans($stkd['account'], $dept['debtacc'], $td, $refnum, $iamount - $ivat, "Debtors control for Credit note: {$notenum}"); //# dt(stock) ct(cos) // writetrans($stockacc, $cosacc, $td, $refnum, $cosamt, "Cost Of Sales for Credit note No. $notenum for Customer : $inv[cusname] $inv[surname]"); db_conn($inv['prd']); # insert invoice items $sql = "\n\t\t\t\tINSERT INTO inv_note_items (\n\t\t\t\t\tnoteid, whid, stkid, qty, amt, div, description\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$noteid}', '{$stkd['account']}', '0', '{$qtys[$keys]}', '{$amt[$keys]}', '" . USER_DIV . "', '{$stkd['description']}'\n\t\t\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF); db_connect(); $sql = "\n\t\t\t\tINSERT INTO salesrec (\n\t\t\t\t\tedate, invid, invnum, debtacc, vat, total, typ, div\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$rodate}', '{$noteid}', '{$notenum}', '{$dept['debtacc']}', '{$ivat}', '{$iamount}', 'nnon', '" . USER_DIV . "'\n\t\t\t\t)"; $recRslt = db_exec($sql); } } db_connect(); # save invoice discount $sql = "\n\t\tINSERT INTO inv_discs (\n\t\t\tcusnum, invid, traddisc, itemdisc, inv_date, delchrg, div\n\t\t) VALUES (\n\t\t\t'{$inv['cusnum']}', '{$invid}', '0', '-{$disc}', '{$inv['odate']}', '0', '" . USER_DIV . "'\n\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); ###################VAT CALCS####################### db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE del='Yes'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { $Sl = "SELECT * FROM vatcodes"; $Ri = db_exec($Sl); } $vd = pg_fetch_array($Ri); $excluding = ""; $vr = vatcalc($delexvat, $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; vatr($vd['id'], $sdate, "OUTPUT", $vd['code'], $refnum, "Vat for Credit note No. {$notenum}, Customer : {$inv['cusname']} {$inv['surname']}", -$iamount, -$ivat); #################################################### /* - Start Transactoins - */ if ($TOTAL - $VAT - $nsp > 0) { # dt(income) ct(debtors) writetrans($dept['incacc'], $dept['debtacc'], $date, $refnum, $TOTAL - $VAT - $nsp, "Debtors Control for Credit note No. {$notenum} for Customer : {$inv['cusname']} {$inv['surname']}"); } # dt(vat) ct(debtors) writetrans($vatacc, $dept['debtacc'], $date, $refnum, $VAT, "Vat Return for Credit note No. {$notenum} for Customer : {$inv['cusname']} {$inv['surname']}"); db_connect(); // $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div) // VALUES('$rodate', '$noteid', '$notenum', '$dept[debtacc]', '$VAT', '$TOTAL', 'nstk', '".USER_DIV."')"; // $recRslt = db_exec($sql); $Sl = "\n\t\tINSERT INTO sj (\n\t\t\tcid, name, des, date, \n\t\t\texl, vat, inc, div\n\t\t) VALUES (\n\t\t\t'{$inv['cusnum']}', '{$inv['surname']}', 'Credit Note:{$notenum}, Invoice {$inv['invnum']}', '{$rodate}', \n\t\t\t'" . -sprint($TOTAL - $VAT) . "', '-{$VAT}', '" . sprint(-$TOTAL) . "', '" . USER_DIV . "'\n\t\t)"; $Ri = db_exec($Sl); pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); /* - End Transactoins - */ if (!isset($showvat)) { $showvat = TRUE; } if ($showvat == TRUE) { $vat14 = AT14; } else { $vat14 = ""; } /* -- Final Layout -- */ $details = "\n\t\t<center>\n\t\t<h2>Credit Note</h2>\n\t\t<table cellpadding='0' cellspacing='4' border='0' width='750'>\n\t\t\t<tr>\n\t\t\t\t<td valign='top' width='30%'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td>{$inv['surname']}</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>" . nl2br($inv['cusaddr']) . "</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>(Vat No. {$inv['cusvatno']})</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td valign='top' width='25%'>\n\t\t\t\t\t" . COMP_NAME . "<br>\n\t\t\t\t\t" . COMP_ADDRESS . "<br>\n\t\t\t\t\t" . COMP_TEL . "<br>\n\t\t\t\t\t" . COMP_FAX . "<br>\n\t\t\t\t</td>\n\t\t\t\t<td width='20%'><img src='compinfo/getimg.php' width='230' height='47'></td>\n\t\t\t\t<td valign='bottom' align='right' width='25%'>\n\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1' bordercolor='#000000'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>Credit Note No.</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$notenum}</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><b>Invoice No.</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['invnum']}</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><b>Order No.</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['ordno']}</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><b>Terms</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$terms} Days</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><b>Credit note Date</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$rodate}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'>\n\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width='100%' bordercolor='#000000'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t\t\t\t<th width='45%'>DESCRIPTION</th>\n\t\t\t\t\t\t\t<th>QTY RETURNED</th>\n\t\t\t\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t\t\t\t<th>AMOUNT</th>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t{$products}\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<table border='1' cellspacing='0' bordercolor='#000000'>\n\t\t\t\t\t\t<tr><td>" . nl2br($comm) . "</td></tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td align='right' colspan='3'>\n\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width=50% bordercolor='#000000'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>SUBTOTAL</b></td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$SUBTOT}</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><b>Trade Discount</b></td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$traddiscmt}</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><b>Delivery Charge</b></td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$delexvat}</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><b>VAT {$vat14}</b></td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$VAT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th><b>GRAND TOTAL<b></th>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$TOTAL}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<table " . TMPL_tblDflts . " border='1'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>VAT No.</th>\n\t\t\t\t\t\t\t<td align='center'>" . COMP_VATNO . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td><br></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</center>"; //$OUTPUT = "<script>printer('invoice-note-reprint.php?noteid=$noteid&prd=$inv[prd]&cccc=yes');move('index-sales.php');</script>"; header("Location: invoice-note-reprint.php?noteid={$noteid}&prd={$inv['prd']}&cccc=yes"); exit; require "tmpl-print.php"; }
function cwrite($_GET) { # get vars extract($_GET); # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid invoice number."); $v->isOk($cusnum, "num", 1, 20, "Invalid customer number."); if (isset($stkaccs)) { foreach ($stkaccs as $key => $accid) { $v->isOk($accid, "num", 1, 20, "Invalid Item Account number."); } } else { $v->isOk($invid, "num", 0, 0, "Invalid Item Account number."); } # display errors, if any if ($v->isError()) { $err = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class='err'>" . $e["msg"] . "</li>"; } $confirm .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } db_connect(); # Get invoice info $sql = "SELECT * FROM nons_invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "' and done='n'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); # CHECK IF THIS DATE IS IN THE BLOCKED RANGE $blocked_date_from = getCSetting("BLOCKED_FROM"); $blocked_date_to = getCSetting("BLOCKED_TO"); if (strtotime($inv['odate']) >= strtotime($blocked_date_from) and strtotime($inv['odate']) <= 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>"; } $td = $inv['sdate']; $currs = getSymbol($inv['fcid']); # Update xrate cus_xrate_update($inv['fcid'], $inv['xrate']); xrate_update($inv['fcid'], $inv['xrate'], "invoices", "invid"); xrate_update($inv['fcid'], $inv['xrate'], "custran", "id"); db_connect(); # cust $sql = "SELECT * FROM customers WHERE cusnum = '{$cusnum}' AND div = '" . USER_DIV . "'"; $custRslt = db_exec($sql) or errDie("Unable to view customer"); $cus = pg_fetch_array($custRslt); $details = "\n\t<tr><td>{$cus['surname']}</td></tr>\n\t<tr><td>" . nl2br($cus['addr1']) . "</td></tr>\n\t<tr><td>{$cus['vatnum']}</td></tr>"; $na = $cus['surname']; # Begin updates pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); /* --- Start Products Display --- */ # Products layout $products = ""; $disc = 0; # get selected stock in this invoice db_connect(); $sql = "SELECT * FROM nons_inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $refnum = getrefnum(); /*refnum*/ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "non"); /* - End Hooks - */ $real_invid = divlastid('inv', USER_DIV); db_connect(); # Put in product while ($stk = pg_fetch_array($stkdRslt)) { $stkacc = $stkaccs[$stk['id']]; # keep records for transactions // if(isset($totstkamt[$stkacc])){ // $totstkamt[$stkacc] += vats($stk['amt'], $inv['chrgvat']); // }else{ // $totstkamt[$stkacc] = vats($stk['amt'], $inv['chrgvat']); // } $Sl = "SELECT * FROM vatcodes WHERE id='{$stk['vatex']}'"; $Ri = db_exec($Sl) or errDie("Unable to get data."); $vd = pg_fetch_array($Ri); if ($vd['zero'] == "Yes") { $stk['vatex'] = "y"; } //print $inv['chrgvat'];exit; $t = $inv['chrgvat']; $VATP = $vd['vat_amount']; # keep records for transactions if (isset($totstkamt[$stkacc])) { if ($stk['vatex'] == "y") { $totstkamt[$stkacc] += vats($stk['amt'], 'novat', $vd['vat_amount']); $va = 0; $inv['chrgvat'] = ""; } else { $totstkamt[$stkacc] += vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']); $va = sprint($stk['amt'] - vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($stk['amt'] * $VATP / 100); } } } else { if ($stk['vatex'] == "y") { $totstkamt[$stkacc] = $stk['amt']; $inv['chrgvat'] = ""; $va = 0; } else { $totstkamt[$stkacc] = vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']); $va = sprint($stk['amt'] - vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($stk['amt'] * $VATP / 100); } } } $f = vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']); $f = $f * $inv['xrate']; $va = $va * $inv['xrate']; vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "Non-Stock Sales, invoice No.{$real_invid}", $f + $va, $va); $inv['chrgvat'] = $t; $sql = "UPDATE nons_inv_items SET accid = '{$stkacc}' WHERE id = '{$stk['id']}'"; $sRslt = db_exec($sql); $products .= "<tr valign=top><td>{$stk['description']}</td><td>{$stk['qty']}</td><td>{$inv['currency']} {$stk['unitcost']}</td><td>{$inv['currency']} {$stk['amt']}</td></tr>"; } /* --- Start Some calculations --- */ # Subtotal $SUBTOT = sprint($inv['subtot']); $VAT = sprint($inv['vat']); $TOTAL = sprint($inv['total']); $LVAT = sprint($VAT * $inv['xrate']); $LTOTAL = sprint($TOTAL * $inv['xrate']); /* --- End Some calculations --- */ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "non"); /* - End Hooks - */ # todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$cus['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { $dept['deptname'] = "<li class=err>Department not Found."; } else { $dept = pg_fetch_array($deptRslt); } # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { # Debit Customer and Credit stock writetrans($dept['debtacc'], $stkacc, $td, $refnum, $wamt * $inv['xrate'], "Non-Stock Sales on invoice No.{$real_invid} customer {$cus['surname']}."); } # Debit bank and credit the account involved writetrans($dept['debtacc'], $vatacc, $td, $refnum, $LVAT, "Non-Stock Sales VAT received on invoice No.{$real_invid} customer {$cus['surname']}."); $sdate = date("Y-m-d"); db_connect(); $sql = "UPDATE nons_invoices SET cusid = '{$cusnum}', done = 'y', invnum = '{$real_invid}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); # Record the payment on the statement $sql = "\n\t\tINSERT INTO stmnt \n\t\t\t(cusnum, invid, docref, amount, date, type, div, allocation_date) \n\t\tVALUES \n\t\t\t('{$cusnum}', '{$real_invid}', '{$inv['docref']}', '{$TOTAL}','{$inv['sdate']}', 'Non-Stock Invoice', '" . USER_DIV . "', '{$inv['odate']}')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # Record the payment on the statement $sql = "INSERT INTO open_stmnt(cusnum, invid, docref, amount, balance, date, type, div) VALUES('{$cusnum}', '{$real_invid}', '{$inv['docref']}', '{$TOTAL}', '{$TOTAL}','{$inv['sdate']}', 'Non-Stock Invoice', '" . USER_DIV . "')"; $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 + '{$LTOTAL}'::numeric(13,2)), fbalance = (fbalance + '{$TOTAL}'::numeric(13,2)) WHERE cusnum = '{$cusnum}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Make ledge record custledger($cusnum, $dept['incacc'], $td, $real_invid, "Non Stock Invoice No. {$real_invid}", $LTOTAL, "d"); frecordDT($TOTAL, $cusnum, $inv['xrate'], $inv['fcid'], $inv['sdate']); db_connect(); $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\n\tVALUES('{$inv['sdate']}', '{$invid}', '{$real_invid}', '{$dept['debtacc']}', '{$LVAT}', '{$LTOTAL}', 'non', '" . USER_DIV . "')"; $recRslt = db_exec($sql); db_conn('cubit'); $Sl = "INSERT INTO sj(cid,name,des,date,exl,vat,inc,div) VALUES\n\t('{$cusnum}','{$na}','Non-stock International Invoice {$real_invid}','{$inv['sdate']}','" . sprint($LTOTAL - $LVAT) . "','{$LVAT}','" . sprint($LTOTAL) . "','" . USER_DIV . "')"; $Ri = db_exec($Sl); # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); # Get selected stock in this invoice $sql = "SELECT * FROM nons_inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; # $stkdRslt = db_exec($sql); /* -- Format the remarks boxlet -- */ $inv["remarks"] = "<table border=1><tr><td>Remarks:<br>{$inv['remarks']}</td></tr></table>"; $cc = "<script> CostCenter('dt', 'Sales', '{$td}', 'Non Stock Invoice No.{$real_invid}', '" . ($LTOTAL - $LVAT) . "', ''); </script>"; if ($inv['chrgvat'] == "yes") { $inv['chrgvat'] = "Inclusive"; } elseif ($inv['chrgvat'] == "no") { $inv['chrgvat'] = "Exclusive"; } else { $inv['chrgvat'] = "No vat"; } /* -- Final Layout -- */ $details = "\n\t\t\t\t<center>\n\t\t\t\t{$cc}\n\t\t\t\t<h2>Tax Invoice</h2>\n\t\t\t\t<table cellpadding='0' cellspacing='4' border=0 width='750'>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td valign='top' width='30%'>\n\t\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t\t{$details}\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td valign='top' width='30%'>\n\t\t\t\t\t\t\t" . COMP_NAME . "<br>\n\t\t\t\t\t\t\t" . COMP_ADDRESS . "<br>\n\t\t\t\t\t\t\t" . COMP_TEL . "<br>\n\t\t\t\t\t\t\t" . COMP_FAX . "<br>\n\t\t\t\t\t\t\tReg No. " . COMP_REGNO . "<br>\n\t\t\t\t\t\t\tVAT No. " . COMP_VATNO . "\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td width='20%'><img src='compinfo/getimg.php' width='230' height='47'></td>\n\t\t\t\t\t\t<td valign='bottom' align='right' width='20%'>\n\t\t\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1' bordercolor='#000000'>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td><b>Invoice No.</b></td>\n\t\t\t\t\t\t\t\t\t<td valign='center'>{$real_invid}</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td><b>Proforma Inv No.</b></td>\n\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['docref']}</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td><b>Invoice Date</b></td>\n\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['sdate']}</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td><b>VAT</b></td>\n\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['chrgvat']}</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t" . TBL_BR . "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td colspan='4'>\n\t\t\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width='100%' bordercolor='#000000'>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th width='65%'>DESCRIPTION</th>\n\t\t\t\t\t\t\t\t\t<th width='10%'>QTY</th>\n\t\t\t\t\t\t\t\t\t<th width='10%'>UNIT PRICE</th>\n\t\t\t\t\t\t\t\t\t<th width='10%'>AMOUNT</th>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t{$products}\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>{$inv['remarks']}</td>\n\t\t\t\t\t\t<td>" . BNK_BANKDET . "</td>\n\t\t\t\t\t\t<td align='right' colspan='2'>\n\t\t\t\t\t\t\t<table cellpadding='5' cellspacing='0' border=1 width=50% bordercolor='#000000'>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td><b>SUBTOTAL</b></td>\n\t\t\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$SUBTOT}</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td><b>VAT @ " . TAX_VAT . "%</b></td>\n\t\t\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$VAT}</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th><b>GRAND TOTAL<b></th>\n\t\t\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$TOTAL}</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t" . TBL_BR . "\n\t\t\t\t</table>\n\t\t\t\t</center>\n\t\t\t"; $OUTPUT = $details; require "tmpl-print.php"; }
function write($_GET) { # get vars extract($_GET); # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid Invoice number."); $sndate = mkdate($s_year, $s_month, $s_day); if (!checkdate($s_month, $s_day, $s_year)) { $v->addError($sdate, "Invalid Date."); } foreach ($ids as $key => $id) { $v->isOk($id, "num", 1, 20, "Invalid Item number."); // if (!is_int($qtys[$key])) { if (!ctype_digit($qtys[$key])) { $v->addError(0, "Invalid Item Quantity."); } $v->isOk($amts[$key], "float", 1, 20, "Invalid Item amount."); } $v->isOk($subtot, "float", 1, 20, "Invalid sub-total amount."); $v->isOk($vat, "float", 1, 20, "Invalid vat amount."); $v->isOk($total, "float", 1, 20, "Invalid total amount."); # display errors, if any if ($v->isError()) { $err = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class='err'>" . $e["msg"] . "</li>"; } $err .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $err; } db_connect(); # Get invoice info $sql = "SELECT * FROM nons_invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); # Update xrate cus_xrate_update($inv['fcid'], $inv['xrate']); xrate_update($inv['fcid'], $inv['xrate'], "invoices", "invid"); xrate_update($inv['fcid'], $inv['xrate'], "custran", "id"); db_connect(); # Begin updates pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $refnum = getrefnum(); /*refnum*/ $real_noteid = divlastid('note', USER_DIV); db_connect(); /* --- Start Products Display --- */ $td = $sndate; # Products layout $products = ""; foreach ($ids as $key => $id) { $sql = "SELECT * FROM nons_inv_items WHERE invid = '{$invid}' AND id = '{$id}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); $stkacc = $stkd['accid']; # keep records for transactions // if(isset($totstkamt[$stkacc])){ // $totstkamt[$stkacc] += vats($amts[$key], $inv['chrgvat']); // }else{ // $totstkamt[$stkacc] = vats($amts[$key], $inv['chrgvat']); // } $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatex']}'"; $Ri = db_exec($Sl) or errDie("Unable to get data."); $vd = pg_fetch_array($Ri); if ($vd['zero'] == "Yes") { $stkd['vatex'] = "y"; } $t = $inv['chrgvat']; $VATP = TAX_VAT; $stkacc = $stkd['accid']; # keep records for transactions if (isset($totstkamt[$stkacc])) { if ($stkd['vatex'] == "y") { $totstkamt[$stkacc] += $amts[$key]; $va = 0; $inv['chrgvat'] = ""; } else { $totstkamt[$stkacc] += vats($amts[$key], $inv['chrgvat']); $va = sprint($stkd['amt'] - vats($amts[$key], $inv['chrgvat'])); if ($inv['chrgvat'] == "no") { $va = sprint($amts[$key] * $VATP / 100); } } } else { if ($stkd['vatex'] == "y") { $totstkamt[$stkacc] = $amts[$key]; $va = 0; $inv['chrgvat'] = ""; } else { $totstkamt[$stkacc] = vats($amts[$key], $inv['chrgvat']); $va = sprint($amts[$key] - vats($amts[$key], $inv['chrgvat'])); if ($inv['chrgvat'] == "no") { $va = sprint($amts[$key] * $VATP / 100); } } } $f = -vats($amts[$key], $inv['chrgvat']); $f = $f * $inv['xrate']; $va = $va * $inv['xrate']; vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "Non-Stock invoice No. {$inv['invnum']} Credit note No.{$real_noteid} Customer {$inv['cusname']}.", $f - $va, -$va); $inv['chrgvat'] = $t; $sql = "UPDATE nons_inv_items SET rqty = (rqty + '{$qtys[$key]}') WHERE id = '{$stkd['id']}'"; $sRslt = db_exec($sql); $products .= "\n\t\t\t\t\t\t<tr valign='top'>\n\t\t\t\t\t\t\t<td>{$stkd['description']}</td>\n\t\t\t\t\t\t\t<td>{$qtys[$key]}</td>\n\t\t\t\t\t\t\t<td>{$inv['currency']} {$stkd['unitcost']}</td>\n\t\t\t\t\t\t\t<td>{$inv['currency']} {$amts[$key]}</td>\n\t\t\t\t\t\t</tr>"; } /* --- Start Some calculations --- */ # Subtotal $SUBTOT = sprint($subtot); $VAT = sprint($vat); $TOTAL = sprint($total); $LVAT = sprint($VAT * $inv['xrate']); $LTOTAL = sprint($TOTAL * $inv['xrate']); /* --- End Some calculations --- */ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "VAT"); /* - End Hooks - */ # todays date db_connect(); $sql = "SELECT * FROM customers WHERE cusnum = '{$inv['cusid']}' AND div = '" . USER_DIV . "'"; $custRslt = db_exec($sql) or errDie("Unable to view customer"); if (pg_numrows($custRslt) < 1) { return "<li class='err'>Error : Customer not Found.</li>"; } $cus = pg_fetch_array($custRslt); $na = $cus['surname']; # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$cus['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { return "<li class='err'>Department not Found.</li>"; } else { $dept = pg_fetch_array($deptRslt); } $wtot = array_sum($totstkamt) + $va; $lwtot = sprint($wtot * $inv['xrate']); $lva = sprint($va * $inv["xrate"]); $tpp = 0; # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { writetrans($stkacc, $dept['debtacc'], $sndate, $refnum, $lwtot, "Non-Stock invoice No. {$inv['invnum']} Credit note No.{$real_noteid} Customer {$inv['cusname']}."); } if ($lva != 0) { writetrans($vatacc, $dept['debtacc'], $sndate, $refnum, $lva, "Non-Stock invoice No. {$inv['invnum']} Credit note No.{$real_noteid} Vat. Customer {$inv['cusname']}."); } db_connect(); # Record the payment on the statement $sql = "\n\t\tINSERT INTO stmnt \n\t\t\t(cusnum, invid, amount, date, type, div, allocation_date) \n\t\tVALUES \n\t\t\t('{$inv['cusid']}', '{$real_noteid}', '-{$wtot}','{$sndate}', 'Non Stock Credit Note, for invoice {$inv['invnum']}', '" . USER_DIV . "', '{$sndate}')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # Update the customer (make balance less) $sql = "UPDATE customers \n\t\t\tSET balance = (balance - '{$lwtot}'::numeric(13,2)), \n\t\t\t\tfbalance = (fbalance - '{$wtot}'::numeric(13,2)) WHERE cusnum = '{$inv['cusid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Make ledge record custledger($inv['cusid'], $dept['incacc'], $sndate, $real_noteid, "Non Stock Credit note {$real_noteid}", $lwtot, "c"); frecordCT($wtot, $inv['cusid'], $inv['xrate'], $inv['fcid'], $sndate); // custCT($TOTAL, $inv['cusid']); db_connect(); $sql = "UPDATE nons_invoices \n\t\t\tSET balance = (balance - '{$lwtot}'::numeric(13,2)), \n\t\t\t\tfbalance = (fbalance - '{$wtot}'::numeric(13,2)) WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); # write note $sql = "INSERT INTO nons_inv_notes(invid, invnum, cusname, cusaddr, cusvatno, chrgvat, location, currency, date, subtot, vat, total, username, prd, notenum, ctyp, div)"; $sql .= " VALUES('{$inv['invid']}', '{$inv['invnum']}', '{$inv['cusname']}', '{$inv['cusaddr']}', '{$inv['cusvatno']}', '{$inv['chrgvat']}', 'int', '{$inv['currency']}', '{$sndate}', '" . sprint($wtot - $va) . "', {$va}, {$wtot}, '" . USER_NAME . "', '" . PRD_DB . "', '{$real_noteid}', '{$inv['ctyp']}', '" . USER_DIV . "')"; $rslt = db_exec($sql) or errDie("Unable to create template Non-Stock Invoice.", SELF); $noteid = pglib_lastid("nons_inv_notes", "noteid"); # write note items foreach ($ids as $key => $id) { $sql = "SELECT * FROM nons_inv_items WHERE invid = '{$invid}' AND id = '{$id}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $nstk = pg_fetch_array($stkdRslt); $sql = "INSERT INTO nons_note_items(noteid, qty, description, amt, unitcost) \n\t\t\t\tVALUES('{$noteid}', '{$qtys[$key]}', '{$nstk['description']}', '{$amts[$key]}', \n\t\t\t\t\t'{$nstk['unitcost']}')"; $stkdRslt = db_exec($sql); } $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\n\tVALUES('{$sndate}', '{$noteid}', '{$real_noteid}', '0', '{$lva}', '{$lwtot}', 'nnon', '" . USER_DIV . "')"; $recRslt = db_exec($sql); db_conn('cubit'); $Sl = "INSERT INTO sj(cid,name,des,date,exl,vat,inc,div) VALUES\n\t('{$inv['cusid']}','{$na}','Credit note: {$real_noteid}, Non-stock International Invoice {$inv['invnum']} ','{$sndate}','" . -sprint($lwtot - $lva) . "','-{$lva}','" . -sprint($lwtot) . "','" . USER_DIV . "')"; $Ri = db_exec($Sl); # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); /* -- Format the remarks boxlet -- */ $inv["remarks"] = "<table border=1><tr><td>Remarks:<br>{$inv['remarks']}</td></tr></table>"; $cc = "<script> CostCenter('ct', 'Credit Note', '{$sndate}', 'Non Stock Credit Note No.{$real_noteid}', '" . ($LTOTAL - $LVAT) . "', ''); </script>"; /* -- Final Layout -- */ $details = "\n\t\t\t\t\t{$cc}\n\t\t\t\t\t<center>\n\t\t\t\t\t<h2>Credit Note</h2>\n\t\t\t\t\t<table cellpadding='0' cellspacing='4' border='0' width='750'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td valign='top' width='30%'>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>{$inv['cusname']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>" . nl2br($inv['cusaddr']) . "</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>(Vat No. {$inv['cusvatno']})</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td valign='top' width='30%'>\n\t\t\t\t\t\t\t\t" . COMP_NAME . "<br>\n\t\t\t\t\t\t\t\t" . COMP_ADDRESS . "<br>\n\t\t\t\t\t\t\t\t" . COMP_TEL . "<br>\n\t\t\t\t\t\t\t\t" . COMP_FAX . "<br>\n\t\t\t\t\t\t\t\tReg No. " . COMP_REGNO . "<br>\n\t\t\t\t\t\t\t\tVat No. " . COMP_VATNO . "\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td width='20%'><img src='compinfo/getimg.php' width=230 height=47></td>\n\t\t\t\t\t\t\t<td valign='bottom' align='right' width='20%'>\n\t\t\t\t\t\t\t\t<table cellpadding='2' cellspacing='0' border=1 bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Credit Note No.</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$real_noteid}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Invoice No.</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['invnum']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>Date</b></td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$sndate}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</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 colspan='4'>\n\t\t\t\t\t\t\t\t<table cellpadding='5' cellspacing='0' border=1 width=100% bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th width='65%'>DESCRIPTION</th>\n\t\t\t\t\t\t\t\t\t\t<th width='10%'>QTY</th>\n\t\t\t\t\t\t\t\t\t\t<th width='10%'>UNIT PRICE</th>\n\t\t\t\t\t\t\t\t\t\t<th width='10%'>AMOUNT</th>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t{$products}\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</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>{$inv['remarks']}</td>\n\t\t\t\t\t\t\t<td align='right' colspan='3'>\n\t\t\t\t\t\t\t\t<table cellpadding='5' cellspacing='0' border=1 width=50% bordercolor='#000000'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>SUBTOTAL</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$SUBTOT}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td><b>VAT @ " . TAX_VAT . "%</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$VAT}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th><b>GRAND TOTAL<b></th>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$TOTAL}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</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</table>\n\t\t\t\t\t</center>"; $OUTPUT = $details; require "tmpl-print.php"; }
function write($_POST) { # get vars extract($_POST); if (isset($back)) { return details($_POST); } # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid invoice number."); $v->isOk($comm, "string", 0, 255, "Invalid Comments."); $v->isOk($terms, "num", 1, 20, "Invalid terms."); $v->isOk($odate, "date", 1, 14, "Invalid Invoice note date."); $v->isOk($traddisc, "float", 0, 20, "Invalid Trade Discount."); $v->isOk($delchrg, "float", 0, 20, "Invalid Delivery Charge."); $v->isOk($SUBTOT, "float", 0, 20, "Invalid Delivery Charge."); # used to generate errors $error = "asa@"; # check quantities if (isset($qtys)) { foreach ($qtys as $keys => $qty) { $v->isOk($qty, "float", 1, 15, "Invalid Returned Quantity."); $v->isOk($disc[$keys], "float", 0, 20, "Invalid Discount."); $v->isOk($discp[$keys], "float", 0, 20, "Invalid Discount Percentage."); } } else { $v->isOk($error, "num", 0, 1, "Invalid Returned Quantity."); } # check stkids[] if (isset($stkids)) { foreach ($stkids as $keys => $stkid) { $v->isOk($stkid, "num", 1, 10, "Invalid Stock number, please enter all details."); } } else { $v->isOk($error, "num", 0, 1, "Invalid Stock number, please enter all details."); } # check amt[] if (isset($amt)) { foreach ($amt as $keys => $amount) { $v->isOk($amount, "float", 1, 20, "Invalid Amount, please enter all details."); } } else { $v->isOk($error, "num", 0, 1, "Invalid Amount, 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 invoice info db_connect(); $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $notenum = divlastid('note', USER_DIV); /* --- Start Products Display --- */ $vatamount = 0; # Products layout $products = ""; $taxex = 0; $ai = 0; $amt = array(); foreach ($qtys as $keys => $value) { db_connect(); # 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 in this invoice $sql = "SELECT * FROM inv_items WHERE id = '{$ids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); if ($stkd['account'] == 0) { # get warehouse name db_conn("exten"); $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); # Calculate the Discount discount if ($disc[$keys] < 1) { if ($discp[$keys] > 0) { $disc[$keys] = $discp[$keys] / 100 * $stkd['unitcost']; } } else { $discp[$keys] = $disc[$keys] * 100 / $stkd['unitcost']; } # Calculate amount $amt[$keys] = $qtys[$keys] * ($stkd['unitcost'] - $disc[$keys]); db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please select the vatcode for all your stock."; } $vd = pg_fetch_array($Ri); # Check Tax Excempt if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $taxex += $amt[$keys]; } if ($vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; $vatamount += $ivat; if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } db_conn("exten"); # put in product $products .= "\n\t\t\t\t<tr>\n\t\t\t\t\t<td><input type='hidden' name='stkids[{$ai}]' value='{$stk['stkid']}'>{$stk['stkcod']}</td>\n\t\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t\t<td><input type='hidden' size='5' name='qtys[{$ai}]' value='{$qtys[$keys]}'>{$qtys[$keys]}</td>\n\t\t\t\t\t<td nowrap>" . CUR . " {$stkd['unitcost']}</td>\n\t\t\t\t\t<td nowrap><input type='hidden' name='amt[{$ai}]' value='{$amt[$keys]}'>" . CUR . " {$amt[$keys]}</td>\n\t\t\t\t</tr>"; ++$ai; } else { # get warehouse name db_conn("core"); $sql = "SELECT accname FROM accounts WHERE accid = '{$stkd['account']}'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $discp[$keys] = 0; # Calculate amount $amt[$keys] = $qtys[$keys] * ($stkd['unitcost'] - $disc[$keys]); $nons_amt[$keys] = $qtys[$keys] * ($stkd['unitcost'] - $disc[$keys]); # Check Tax Excempt if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $taxex += $amt[$keys]; } db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { return "Please select the vatcode for all your stock."; } $vd = pg_fetch_array($Ri); $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; $vatamount += $ivat; if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } db_conn("exten"); $wh['whname'] = ""; $stk['stkid'] = 0; $stk['stkcod'] = $wh['accname']; $stk['stkdes'] = $stkd['description']; # put in product $products .= "\n\t\t\t\t<tr>\n\t\t\t\t\t<td><input type='hidden' name='stkids[{$ai}]' value='{$stk['stkid']}'>{$stk['stkcod']}</td>\n\t\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t\t<td><input type='hidden' size='5' name='qtys[{$ai}]' value='{$qtys[$keys]}'>{$qtys[$keys]}</td>\n\t\t\t\t\t<td nowrap>" . CUR . " {$stkd['unitcost']}</td>\n\t\t\t\t\t<td nowrap><input type='hidden' name='amt[{$ai}]' value='{$amt[$keys]}'>" . CUR . " {$amt[$keys]}</td>\n\t\t\t\t</tr>"; ++$ai; } } # get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$inv['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); } db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$inv['delvat']}'"; $Ri = db_exec($Sl); $vd = pg_fetch_array($Ri); if ($vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($delchrg, $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $DELVAT = $vrs[0]; if ($vd['zero'] == "Yes") { $DELVAT = 0; } // db_conn('cubit'); // $Sl="SELECT * FROM vatcodes WHERE id='$inv[delvat]'"; // $Ri=db_exec($Sl); // // $vd=pg_fetch_array($Ri); // // $vr=vatcalc($amt[$keys],$inv['chrgvat'],$excluding,$inv['traddisc'],$vd['vat_amount']); // $vrs=explode("|",$vr); // $ivat=$vrs[0]; // $iamount=$vrs[1]; // // $vatamount += $ivat; // if(pg_num_rows($Ri)>0) { // $taxex += $delchrg; // } /* --- ----------- Clac --------------------- # calculate subtot $SUBTOT = 0.00; if(isset($amt)) $SUBTOT = array_sum($amt); $SUBTOT -= $taxex; # duplicate $SUBTOTAL = $SUBTOT; $VATP = TAX_VAT; if($inv['chrgvat'] == "exc"){ $SUBTOTAL = $SUBTOTAL; $delexvat= ($delchrg); }elseif($inv['chrgvat'] == "inc"){ $SUBTOTAL = sprint(($SUBTOTAL * 100)/(100 + $VATP)); $delexvat = sprint(($delchrg * 100)/($VATP + 100)); }else{ $SUBTOTAL = ($SUBTOTAL); $delexvat = ($delchrg); } $SUBTOT = $SUBTOTAL; $EXVATTOT = $SUBTOT; $EXVATTOT += $delexvat; # Minus trade discount from taxex if($traddisc > 0){ $traddiscmtt = (($traddisc/100) * $taxex); }else{ $traddiscmtt = 0; } $taxext = ($taxex - $traddiscmtt); if($traddisc > 0) { $traddiscmt = ($EXVATTOT * ($traddisc/100)); }else{ $traddiscmt = 0; } $EXVATTOT -= $traddiscmt; // $EXVATTOT -= $taxex; $traddiscmt = sprint($traddiscmt + $traddiscmtt); if($inv['chrgvat'] != "nov"){ $VAT = sprint($EXVATTOT * ($VATP/100)); }else{ $VAT = 0; } $TOTAL = sprint($EXVATTOT + $VAT + $taxext); $SUBTOT += $taxex; /* --- ----------- Clac --------------------- */ # Get invoice info db_connect(); $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<li class='err'>Invoice Not Found</li>"; } $inv = pg_fetch_array($invRslt); /* A quick fix by jupiter $allnoted = true; foreach($qtys as $keys => $value) { $sql = "SELECT * FROM inv_items WHERE id = '$ids[$keys]' AND invid ='$invid' AND div = '".USER_DIV."'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); if($stkd['qty'] != $qtys[$keys]){ $allnoted = false; } } if($allnoted){ $SUBTOT = sprint($inv['subtot']); $VAT = sprint($inv['vat']); $TOTAL = sprint($inv['total']); $delchrg = sprint($inv['delivery']); $traddiscmt = sprint($inv['discount']); $SUBTOTAL = sprint($TOTAL - $VAT); } /* End A quick fix by jupiter */ /* --- ----------- Clac --------------------- */ ##----------------------NEW---------------------- $sub = 0.0; if (isset($amt)) { $sub = sprint(array_sum($amt)); } $nons_total = 0.0; if (isset($nons_amt)) { $nons_total = sprint(array_sum($nons_amt)); } $VATP = TAX_VAT; if ($inv['chrgvat'] == "exc") { $taxex = sprint($taxex - $taxex * $traddisc / 100); $subtotal = sprint($sub + $delchrg); $traddiscmt = sprint($subtotal * $traddisc / 100); $subtotal = sprint($subtotal - $traddiscmt); // $VAT=sprint(($subtotal-$taxex)*$VATP/100); $VAT = sprint($vatamount + $DELVAT); $SUBTOT = $sub; $TOTAL = sprint($subtotal + $VAT); $delexvat = sprint($delchrg); } elseif ($inv['chrgvat'] == "inc") { $ot = $taxex; $taxex = sprint($taxex - $taxex * $traddisc / 100); $subtotal = sprint($sub + $delchrg); $traddiscmt = sprint($subtotal * $traddisc / 100); $subtotal = sprint($subtotal - $traddiscmt); //$VAT=sprint(($subtotal-$taxex)*$VATP/(100+$VATP)); $VAT = sprint($vatamount + $DELVAT); $TOTAL = sprint($subtotal); //$SUBTOT=sprint($TOTAL - $VAT - ($delchrg - $DELVAT)); $SUBTOT = sprint($sub); $delexvat = sprint($delchrg); $traddiscmt = sprint($traddiscmt); } else { $subtotal = sprint($sub + $delchrg); $traddiscmt = sprint($subtotal * $traddisc / 100); $subtotal = sprint($subtotal - $traddiscmt); $VAT = sprint(0); $SUBTOT = $sub; $TOTAL = $subtotal; $delexvat = sprint($delchrg); } /* --- ----------- Clac --------------------- */ ##----------------------END---------------------- if ($inv['balance'] >= $TOTAL) { $invpay = $TOTAL; $examt = 0; } else { $invpay = $inv['balance']; $examt = $TOTAL - $invpay; } /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "z"); /* - End Hooks - */ # Todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); $td = $odate; $refnum = getrefnum(); /*refnum*/ # Insert invoice to period DB db_conn($inv['prd']); # Insert invoice credit note to DB $sql = "\n\t\tINSERT INTO inv_notes (\n\t\t\tdeptid, notenum, invnum, invid, cusnum, cordno, ordno, \n\t\t\tchrgvat, terms, traddisc, salespn, odate, delchrg, subtot, vat, \n\t\t\ttotal, comm, username, div, surname, cusaddr, cusvatno, \n\t\t\tdeptname, branch, bankid, prd\n\t\t) VALUES (\n\t\t\t'{$inv['deptid']}', '{$notenum}', '{$inv['invnum']}', '{$inv['invid']}', '{$inv['cusnum']}', '{$inv['cordno']}', '{$inv['ordno']}', \n\t\t\t'{$inv['chrgvat']}', '{$terms}', '{$traddiscmt}', '{$inv['salespn']}', '{$odate}', '{$delexvat}', '{$SUBTOT}', '{$VAT}' , \n\t\t\t'{$TOTAL}', '{$comm}', '" . USER_NAME . "', '" . USER_DIV . "', '{$inv['surname']}', '{$inv['cusaddr']}', '{$inv['cusvatno']}', \n\t\t\t'{$inv['deptname']}', '{$inv['branch']}', '{$inv['bankid']}', '{$inv['prd']}'\n\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert invoice to Cubit.", SELF); # Get next ordnum $noteid = pglib_lastid("inv_notes", "noteid"); db_connect(); # Begin updating $nbal = $inv['nbal'] + $TOTAL; # Update the invoice (make balance less) $sql = "UPDATE invoices SET nbal = '{$nbal}', rdelchrg = (rdelchrg + '{$delchrg}'), balance = balance - '{$invpay}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Update the invoice (make balance less) $sql = "UPDATE open_stmnt SET balance = balance-'{$TOTAL}' WHERE invid = '{$inv['invnum']}'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Update the customer (make balance less) $sql = "UPDATE customers SET balance = (balance - '{$TOTAL}') WHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Update invoice's discounts # $sql = "UPDATE inv_discs SET traddisc = (traddisc - '$traddiscm'), itemdisc = (itemdisc - '$discs') WHERE cusnum = '$inv[cusnum]' AND invid = '$invid'"; # $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.",SELF); # record the payment on the statement $sql = "\n\t\tINSERT INTO stmnt (\n\t\t\tcusnum, invid, amount, date, \n\t\t\ttype, div, allocation_date\n\t\t) VALUES (\n\t\t\t'{$inv['cusnum']}', '{$notenum}', '" . ($TOTAL - $TOTAL * 2) . "', '{$odate}', \n\t\t\t'Credit Note for invoice No. {$inv['invnum']}', '" . USER_DIV . "', '{$odate}'\n\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); $disc = 0; $commision = 0; # Commit updating $nsp = 0; # Make ledge record custledger($inv['cusnum'], $dept['incacc'], $td, $notenum, "Credit Note No. {$notenum} for invoice No. {$inv['invnum']}", $TOTAL, "c"); $salesp = qrySalesPersonN($inv["salespn"]); if ($examt > 0) { # Make record for age analisys custCTP($examt, $inv['cusnum'], $td); } #recalculate the total cost amount for ONLY THE CREDITED ITEMS $ntcosamt = 0; foreach ($qtys as $keys => $value) { db_connect(); # 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 in this invoice $sql = "SELECT * FROM inv_items WHERE id = '{$ids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); if ($stkd['account'] == 0) { # Keep track of discounts $disc += $stkd['disc'] * $stkd['qty']; db_connect(); $Sl = "SELECT * FROM scr WHERE inv='{$inv['invnum']}' AND stkid='{$stkd['stkid']}' AND invid = '{$stkd['id']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) > 0) { $cd = pg_fetch_array($Ri); $stk['csprice'] = $cd['amount']; } else { $stk['csprice'] = 0; } # cost amount if ($stk['csprice'] == "0.00") { $cosamt = sprint($qtys[$keys] * $stk['lcsprice']); } else { $cosamt = sprint($qtys[$keys] * $stk['csprice']); } #add this cost amount to the new total $ntcosamt += $cosamt; db_connect(); # Update stock(onhand + qty) $sql = "UPDATE stock SET csamt = (csamt + '{$cosamt}'), units = (units + '{$qtys[$keys]}') WHERE stkid = '{$stkids[$keys]}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); # fix stock cost amount $Sl = "UPDATE stock set csprice=csamt/units WHERE stkid = '{$stkids[$keys]}' AND units>0"; $Ri = db_exec($Sl) or errDie("Unable to update stock cost price in Cubit.", SELF); if ($stk['serd'] == 'yes') { ext_InSer($stkd['serno'], $stkd['stkid'], "{$inv['cusname']} {$inv['surname']}", $notenum, 'note', $td); } # negetive values to minus profit $nqty = $qtys[$keys] * 1; $namt = $amt[$keys] * -1; $ncsprice = $cosamt * -1; $noted = $stkd['noted'] + $qtys[$keys]; # stkid, stkcod, stkdes, trantype, edate, qty, csamt, details stockrec($stkd['stkid'], $stk['stkcod'], $stk['stkdes'], 'dt', $td, $nqty, $cosamt, "Credit note for Customer : {$inv['surname']} - Credit note No. {$notenum}"); # Get amount exluding vat if including and not exempted $VATP = TAX_VAT; $amtexvat = $amt[$keys]; ###################VAT CALCS####################### db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; $vatamount += $ivat; vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "VAT for Credit note: {$notenum} Customer : {$inv['cusname']} {$inv['surname']}", -$iamount, -$ivat); if ($excluding == "y") { $exvatamt = $iamount; } else { $exvatamt = $iamount - $ivat; } #################################################### $sql = "\n\t\t\t\tINSERT INTO stockrec (\n\t\t\t\t\tedate, stkid, stkcod, stkdes, trantype, qty, csprice, \n\t\t\t\t\tcsamt, details, div\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$td}', '{$stk['stkid']}', '{$stk['stkcod']}', '{$stk['stkdes']}', 'note', '{$qtys[$keys]}', '{$amtexvat}', \n\t\t\t\t\t'{$cosamt}', 'Credit note for Customer : {$inv['surname']} - Credit note No. {$notenum}', '" . USER_DIV . "'\n\t\t\t\t)"; $recRslt = db_exec($sql); # Get selected stock in this invoice $sql = "UPDATE inv_items SET noted = '{$noted}' WHERE id = '{$ids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdsRslt = db_exec($sql); $stkds = pg_fetch_array($stkdsRslt); # get accounts db_conn("exten"); $sql = "SELECT stkacc,cosacc FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $stockacc = $wh['stkacc']; $cosacc = $wh['cosacc']; # sales rep commission if ($salesp["com"] > 0) { $itemcommission = $salesp['com']; } else { $itemcommission = $stk["com"]; } $commision = $commision + coms($inv['salespn'], $exvatamt, $itemcommission); writetrans($stockacc, $cosacc, $td, $refnum, $cosamt, "Cost Of Sales for Credit note No. {$notenum} for Customer: {$inv['cusname']} {$inv['surname']}"); db_conn($inv['prd']); # insert invoice items $sql = "\n\t\t\t\tINSERT INTO inv_note_items (\n\t\t\t\t\tnoteid, whid, stkid, qty, amt, div, vatcode\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$noteid}', '{$stkd['whid']}', '{$stkids[$keys]}', '{$qtys[$keys]}', '{$amt[$keys]}', '" . USER_DIV . "', '{$stkd['vatcode']}'\n\t\t\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF); db_connect(); $sql = "\n\t\t\t\tINSERT INTO salesrec (\n\t\t\t\t\tedate, invid, invnum, debtacc, vat, total, typ, div\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$odate}', '{$noteid}', '{$notenum}', '{$dept['debtacc']}', '{$ivat}', '{$iamount}', 'nstk', '" . USER_DIV . "'\n\t\t\t\t)"; $recRslt = db_exec($sql); } else { # Keep track of discounts //$disc += ($stkd['disc'] * $stkd['qty']); # negetive values to minus profit $nqty = $qtys[$keys] * 1; $namt = $amt[$keys] * -1; //$ncsprice = ($cosamt * (-1)); $noted = $stkd['noted'] + $qtys[$keys]; # Get amount exluding vat if including and not exempted $VATP = TAX_VAT; $amtexvat = $amt[$keys]; ###################VAT CALCS####################### $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; $vatamount += $ivat; vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "VAT for Credit note: {$notenum} Customer : {$inv['cusname']} {$inv['surname']}", -$iamount, -$ivat); if ($excluding == "y") { $exvatamt = $iamount; } else { $exvatamt = $iamount - $ivat; } #################################################### if ($inv['chrgvat'] == "exc") { $nvat = $stkd['amt'] / 100 * $vd['vat_amount']; $ncosamt = round($stkd['qty'] * $stkd['amt'] + $nvat, 2); } else { $nvat = $stkd['amt'] / (100 + $vd['vat_amount']) * $vd['vat_amount']; $ncosamt = round($stkd['qty'] * $stkd['amt'], 2); } $ntcosamt += $ncosamt; #################################################### # Get selected stock in this invoice $sql = "UPDATE inv_items SET noted = '{$noted}' WHERE id = '{$ids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'"; $stkdsRslt = db_exec($sql); $stkds = pg_fetch_array($stkdsRslt); $nsp += sprint($iamount - $ivat); //writetrans($cosacc, $stockacc,$inv['odate'] , $refnum, $cosamt, "Cost Of Sales for Invoice No.$invnum for Customer : $inv[cusname] $inv[surname]"); writetrans($stkd['account'], $dept['debtacc'], $td, $refnum, $iamount - $ivat, "Debtors control for Credit note: {$notenum} Customer : {$inv['cusname']} {$inv['surname']}"); //# dt(stock) ct(cos) // writetrans($stockacc, $cosacc, $td, $refnum, $cosamt, "Cost Of Sales for Credit note No. $notenum for Customer : $inv[cusname] $inv[surname]"); if ($salesp["com"] > 0) { $itemcommission = $salesp['com']; } else { $itemcommission = $stk["com"]; } $commision = $commision + coms($inv['salespn'], $exvatamt, $itemcommission); db_conn($inv['prd']); # insert invoice items $sql = "\n\t\t\t\tINSERT INTO inv_note_items (\n\t\t\t\t\tnoteid, whid, stkid, qty, amt, div, description, vatcode\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$noteid}', '{$stkd['account']}', '0', '{$qtys[$keys]}', '{$amt[$keys]}', '" . USER_DIV . "', '{$stkd['description']}', '{$stkd['vatcode']}'\n\t\t\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF); db_connect(); $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\n\t\t\tVALUES('{$odate}', '{$noteid}', '{$notenum}', '{$dept['debtacc']}', '{$ivat}', '{$iamount}', 'nnon', '" . USER_DIV . "')"; $recRslt = db_exec($sql); } } db_connect(); # save invoice discount $sql = "INSERT INTO inv_discs(cusnum, invid, traddisc, itemdisc, inv_date, delchrg, div) VALUES('{$inv['cusnum']}', '{$invid}', '0', '-{$disc}', '{$inv['odate']}', '0', '" . USER_DIV . "')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); /* - Start Transactoins - */ // ###################VAT CALCS####################### // db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$inv['delvat']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { $Sl = "SELECT * FROM vatcodes"; $Ri = db_exec($Sl); } // $vd = pg_fetch_array($Ri); // $excluding = ""; // $vr = vatcalc($delexvat, $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; // // if($vd['zero']=="Yes") { // $ivat=0; // } // // $vatamount += $ivat; // vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "VAT for Credit note No. {$notenum}, Customer : {$inv['cusname']} {$inv['surname']}", sprint(-$iamount - $ivat), -$ivat); // // #################################################### com_invoice($inv['salespn'], -($TOTAL - $VAT), -$commision, $inv['invnum'], $td, true); if ($TOTAL - $VAT - $nsp > 0) { # dt(income) ct(debtors) writetrans($dept['incacc'], $dept['debtacc'], $td, $refnum, $TOTAL - $VAT - $nsp, "Debtors Control for Credit note No. {$notenum} for Customer : {$inv['cusname']} {$inv['surname']}"); } # dt(vat) ct(debtors) writetrans($vatacc, $dept['debtacc'], $td, $refnum, $VAT, "VAT Return for Credit note No. {$notenum} for Customer : {$inv['cusname']} {$inv['surname']}"); db_connect(); // $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div) // VALUES('$odate', '$noteid', '$notenum', '$dept[debtacc]', '$VAT', '$TOTAL', 'nstk', '".USER_DIV."')"; // $recRslt = db_exec($sql); $Sl = "INSERT INTO sj(cid,name,des,date,exl,vat,inc,div) VALUES\n\t('{$inv['cusnum']}','{$inv['surname']}','Credit Note:{$notenum}, Invoice {$inv['invnum']}','{$odate}','" . -sprint($TOTAL - $VAT) . "','-{$VAT}','" . -sprint($TOTAL) . "','" . USER_DIV . "')"; $Ri = db_exec($Sl); pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); /* - End Transactoins - */ $OUTPUT = "\n\t\t<script>\n\t\t\tsCostCenter('ct', 'Credit Note', '{$odate}', 'Credit Note for Invoice No.{$inv['invnum']} for Customer {$inv['cusname']} {$inv['surname']}', '" . ($TOTAL - $VAT - $nons_total) . "', 'Cost Of Sales for Credit Note for Invoice No.{$inv['invnum']}', '{$ntcosamt}', '');\n\t\t\tprinter('invoice-note-reprint.php?noteid={$noteid}&prd={$inv['prd']}&cccc=yes&reprint=no');\n\t\t\tmove('main.php');\n\t\t</script>"; require "template.php"; }
function cwrite($_GET) { $showvat = TRUE; extract($_GET); # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid invoice number."); if (isset($ctyp) && $ctyp == 's') { $v->isOk($cusnum, "num", 1, 20, "Invalid customer number."); } elseif (isset($ctyp) && $ctyp == 'c') { $v->isOk($deptid, "num", 1, 20, "Invalid Department."); } if (isset($stkaccs)) { foreach ($stkaccs as $key => $accid) { $v->isOk($accid, "num", 1, 20, "Invalid Item Account number."); } } else { $v->isOk($invid, "num", 0, 0, "Invalid Item Account number."); } # display errors, if any if ($v->isError()) { $err = $v->genErrors(); $err .= "<input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $err; } db_connect(); # Get invoice info $sql = "SELECT * FROM nons_invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "' and done='n'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); $td = $inv['odate']; db_connect(); # cust % bank if ($ctyp == 's') { $sql = "SELECT * FROM customers WHERE cusnum = '{$cusnum}' AND div = '" . USER_DIV . "'"; $custRslt = db_exec($sql) or errDie("Unable to view customer"); $cus = pg_fetch_array($custRslt); $details = "\r\n\t\t<tr><td>{$cus['surname']}</td></tr>\r\n\t\t<tr><td>" . nl2br($cus['addr1']) . "</td></tr>\r\n\t\t<tr><td>VAT No. {$cus['vatnum']}</td></tr>\r\n\t\t<tr><td>Customer Order Number: {$inv['cordno']}</td></tr>"; $na = $cus['surname']; } elseif ($ctyp == 'c') { $cus['surname'] = $inv['cusname']; $cus['addr1'] = $inv['cusaddr']; $cus["del_addr1"] = ""; $cus["paddr1"] = ""; db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$deptid}'"; $deptRslt = db_exec($sql) or errDie("Unable to view customers"); $dept = pg_fetch_array($deptRslt); $details = "\r\n\t\t<tr><td>{$inv['cusname']}</td></tr>\r\n\t\t<tr><td>" . nl2br($inv['cusaddr']) . "</td></tr>\r\n\t\t<tr><td>VAT No. {$inv['cusvatno']}</td></tr>\r\n\t\t<tr><td>Customer Order Number: {$inv['cordno']}</td></tr>"; $na = $inv['cusname']; } else { $cus["del_addr1"] = ""; $cus["paddr1"] = ""; $cus['surname'] = $inv['cusname']; $cus['addr1'] = $inv['cusaddr']; $details = "\r\n\t\t<tr><td>{$inv['cusname']}</td></tr>\r\n\t\t<tr><td>" . nl2br($inv['cusaddr']) . "</td></tr>\r\n\t\t<tr><td>VAT No. {$inv['cusvatno']}</td></tr>\r\n\t\t<tr><td>Customer Order Number: {$inv['cordno']}</td></tr>"; $na = $inv['cusname']; } # Begin updates $refnum = getrefnum(); /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "NO VAT"); $varacc = gethook("accnum", "salesacc", "name", "sales_variance"); /* - End Hooks - */ //lock(2); $real_invid = divlastid('inv', USER_DIV); //unlock(2); pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); /* --- Start Products Display --- */ # Products layout $products = ""; $disc = 0; # get selected stock in this invoice db_connect(); $sql = "SELECT * FROM nons_inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); # Put in product $i = 0; $page = 0; while ($stk = pg_fetch_array($stkdRslt)) { if ($i >= 25) { $page++; $i = 0; } $stkacc = $stk["accid"]; $Sl = "SELECT * FROM vatcodes WHERE id='{$stk['vatex']}'"; $Ri = db_exec($Sl) or errDie("Unable to get data."); $vd = pg_fetch_array($Ri); if ($vd['zero'] == "Yes") { $stk['vatex'] = "y"; } //print $inv['chrgvat'];exit; if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") { $showvat = FALSE; } $t = $inv['chrgvat']; $VATP = TAX_VAT; $hs_acc = qryAccountsNum(1050, 00); $hs_acc = $hs_acc["accid"]; $inv_acc = qryAccountsNum(6350, 00); $inv_acc = $inv_acc["accid"]; # keep records for transactions if ($stkacc == $inv_acc) { if (!isset($totstkamt[$stkacc])) { $totstkamt[$stkacc] = 0; } $totstkamt[$stkacc] += $cost_prices[$stk["id"]]; $va = sprint($stk['amt'] - vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($stk['amt'] * $vd['vat_amount'] / 100); } $totstkamt[$hs_acc] += vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']); } else { if (isset($totstkamt[$stkacc])) { # Is it stock sold? if ($stk['vatex'] == "y") { $totstkamt[$stkacc] += vats($stk['amt'], 'novat', $vd['vat_amount']); $va = 0; $inv['chrgvat'] = ""; } else { $totstkamt[$stkacc] += vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']); $va = sprint($stk['amt'] - vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($stk['amt'] * $vd['vat_amount'] / 100); } } } else { if ($stk['vatex'] == "y") { $totstkamt[$stkacc] = $stk['amt']; $inv['chrgvat'] = ""; $va = 0; } else { $totstkamt[$stkacc] = vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']); $va = sprint($stk['amt'] - vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($stk['amt'] * $vd['vat_amount'] / 100); } } } } vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "Non-Stock Sales, invoice No.{$real_invid}", vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']) + $va, $va); $inv['chrgvat'] = $t; // if(isset($totstkamt[$stkacc])){ // $totstkamt[$stkacc] += vats($stk['amt'], $inv['chrgvat']); // }else{ // $totstkamt[$stkacc] = vats($stk['amt'], $inv['chrgvat']); // } $sql = "UPDATE nons_inv_items SET accid = '{$stkacc}' WHERE id = '{$stk['id']}'"; $sRslt = db_exec($sql); if ($stk['vatex'] == 'y') { $ex = "#"; } else { // $ex = " "; $ex = ""; } $i++; } /* --- Start Some calculations --- */ # Subtotal $SUBTOT = sprint($inv['subtot']); $VAT = sprint($inv['vat']); $TOTAL = sprint($inv['total']); /* --- End Some calculations --- */ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "novat"); /* - End Hooks - */ # todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); if (isset($bankid)) { $bankid += 0; db_conn("cubit"); $sql = "SELECT * FROM bankacct WHERE bankid = '{$inv['accid']}'"; $deptRslt = db_exec($sql) or errDie("Unable to view customers"); if (pg_numrows($deptRslt) < 1) { $error = "<li class='err'> Bank not Found."; $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } else { $deptd = pg_fetch_array($deptRslt); } db_conn('core'); $Sl = "SELECT * FROM bankacc WHERE accid='{$bankid}'"; $rd = db_exec($Sl) or errDie("Unable to get data."); $data = pg_fetch_array($rd); $BA = $data['accnum']; } $tot_post = 0; # bank % cust if ($ctyp == 's') { # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$cus['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { $dept['deptname'] = "<li class=err>Department not Found."; } else { $dept = pg_fetch_array($deptRslt); } $tpp = 0; $hs_acc = qryAccountsNum(1050, 00); $hs_acc = $hs_acc["accid"]; $inv_acc = qryAccountsNum(6350, 00); $inv_acc = $inv_acc["accid"]; $coh_acc = qryAccountsNum(7200, 00); $coh_acc = $coh_acc["accid"]; $cos_acc = qryAccountsNum(2150, 00); $cos_acc = $cos_acc["accid"]; # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { $use_acc = $coh_acc; if ($stkacc == $hs_acc) { $use_acc = $coh_acc; } else { if ($stkacc == $inv_acc) { $use_acc = $cos_acc; } } $tot_post += $wamt; writetrans($use_acc, $stkacc, $td, $refnum, $wamt, "Non-Stock Sales on invoice No.{$real_invid} customer {$cus['surname']}."); } # Debit bank and credit the account involved if ($VAT != 0) { $tot_post += $VAT; writetrans($coh_acc, $vatacc, $td, $refnum, $VAT, "Non-Stock Sales VAT received on invoice No.{$real_invid} customer {$cus['surname']}."); } $sdate = date("Y-m-d"); } else { if (!isset($accountc)) { $accountc = 0; } if (!isset($dept['pca'])) { $accountc += 0; $dept['pca'] = $accountc; $dept['debtacc'] = $accountc; } if (isset($bankid)) { $dept['pca'] = $BA; } $tpp = 0; # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { if (!isset($cust['surname'])) { $cust['surname'] = $inv['cusname']; $cust['addr1'] = $inv['cusaddr']; } # Debit Customer and Credit stock $tot_post += $wamt; writetrans($dept['pca'], $stkacc, $td, $refnum, $wamt, "Non-Stock Sales on invoice No.{$real_invid} customer {$cust['surname']}."); } if (isset($bankid)) { db_connect(); $bankid += 0; $sql = "\r\n\t\t\tINSERT INTO cashbook (bankid, trantype, date, name, descript, cheqnum, \r\n\t\t\t\tamount, vat, chrgvat, banked, accinv, div)\r\n\t\t\tVALUES (\r\n\t\t\t\t\t'{$bankid}', 'deposit', '{$td}', '{$inv['cusname']}', \r\n\t\t\t\t\t'Non-Stock Sales on invoice No.{$real_invid} customer {$inv['cusname']}', '0', \r\n\t\t\t\t\t'{$TOTAL}', '{$VAT}', '{$inv['chrgvat']}', 'no', '{$stkacc}', '" . USER_DIV . "')"; $Rslt = db_exec($sql) or errDie("Unable to add bank payment to database.", SELF); $sql = "UPDATE nons_invoices SET jobid='{$bankid}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); } # Debit bank and credit the account involved if ($VAT != 0) { $tot_post += $VAT; writetrans($dept['pca'], $vatacc, $td, $refnum, $VAT, "Non-Stock Sales VAT received on invoice No.{$real_invid} customer {$cust['surname']}."); } $sdate = date("Y-m-d"); } $tot_post = sprint($tot_post); db_connect(); if ($ctyp == 's') { $sql = "\r\n\t\tUPDATE nons_invoices SET balance=total, cusid='{$cusnum}', ctyp='{$ctyp}',\r\n\t\t\tcusname='{$cus['surname']}', cusaddr='{$cus['addr1']}', cusvatno='{$cus['vatnum']}',\r\n\t\t\tdone='y', invnum='{$real_invid}'\r\n\t\tWHERE invid='{$invid}' AND div='" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); /* # Record the payment on the statement $sql = " INSERT INTO stmnt ( cusnum, invid, docref, amount, date, type, div, allocation_date ) VALUES ( '$cusnum', '$real_invid', '$inv[docref]', '$TOTAL', '$inv[odate]', 'Non-Stock Invoice', '".USER_DIV."', '$inv[odate]' )"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.",SELF); # Record the payment on the statement $sql = " INSERT INTO open_stmnt ( cusnum, invid, docref, amount, balance, date, type, div ) VALUES ( '$cusnum', '$real_invid', '$inv[docref]', '$TOTAL', '$TOTAL', '$inv[sdate]', 'Non-Stock Invoice', '".USER_DIV."' )"; $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 + '$TOTAL'::numeric(13,2)) WHERE cusnum = '$cusnum' AND div = '".USER_DIV."'"; # $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.",SELF); # Make ledge record custledger($cusnum,$stkacc , $td, $real_invid, "Non Stock Invoice No. $real_invid", $TOTAL, "d"); custDT($TOTAL, $cusnum, $td, $invid, "nons"); */ $tot_dif = sprint($tot_post - $TOTAL); # if($tot_dif > 0) { # writetrans($varacc,$dept['debtacc'], $td, $refnum, $tot_dif, "Sales Variance on invoice $real_invid"); # } elseif($tot_dif < 0) { # $tot_dif = $tot_dif * -1; # writetrans($dept['debtacc'],$varacc, $td, $refnum, $tot_dif, "Sales Variance on invoice $real_invid"); # } } else { $date = date("Y-m-d"); $sql = "\r\n\t\tUPDATE nons_invoices SET balance=total, cusname = '{$cust['surname']}',\r\n\t\t\taccid = '{$dept['pca']}', ctyp = '{$ctyp}', cusaddr = '{$cust['addr1']}',\r\n\t\t\tdone = 'y', invnum = '{$real_invid}'\r\n\t\tWHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); # $tot_dif = sprint($tot_post - $TOTAL); # if($tot_dif > 0) { # writetrans($varacc,$dept['pca'], $td, $refnum, $tot_dif, "Sales Variance on invoice $real_invid"); # } elseif($tot_dif < 0) { # $tot_dif = $tot_dif * -1; # writetrans($dept['pca'],$varacc, $td, $refnum, $tot_dif, "Sales Variance on invoice $real_invid"); # } } db_connect(); $sql = "\r\n\tINSERT INTO salesrec (edate, invid, invnum, debtacc, vat, total, typ, div)\r\n\tVALUES ('{$inv['odate']}', '{$invid}', '{$real_invid}', '{$dept['debtacc']}', '{$VAT}', \r\n\t\t'{$TOTAL}', 'non', '" . USER_DIV . "')"; $recRslt = db_exec($sql); com_invoice($inv['salespn'], $TOTAL - $VAT, 0, $real_invid, $inv["odate"]); db_conn('cubit'); if (!isset($cusnum)) { $cusnum = 0; } $Sl = "\r\n\tINSERT INTO sj (cid, name, des, date, exl, vat, inc, div)\r\n\tVALUES ('{$cusnum}', '{$na}', 'Non stock Invoice {$real_invid}', '{$inv['sdate']}',\r\n\t\t'" . sprint($TOTAL - $VAT) . "','{$VAT}','" . sprint($TOTAL) . "','" . USER_DIV . "')"; $Ri = db_exec($Sl); # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); # Get selected stock in this invoice $sql = "SELECT * FROM nons_inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; # $stkdRslt = db_exec($sql); $cc = "<script> CostCenter('dt', 'Sales', '{$inv['odate']}', 'Non Stock Invoice No.{$real_invid}', '" . ($TOTAL - $VAT) . "', ''); </script>"; db_conn('cubit'); $Sl = "SELECT * FROM settings WHERE constant='SALES'"; $Ri = db_exec($Sl) or errDie("Unable to get settings."); $data = pg_fetch_array($Ri); if ($data['value'] == "Yes") { $sp = "<tr><td><b>Sales Person:</b> {$inv['salespn']}</td></tr>"; } else { $sp = ""; } if ($inv['chrgvat'] == "yes") { $inv['chrgvat'] = "Inclusive"; } elseif ($inv['chrgvat'] == "no") { $inv['chrgvat'] = "Exclusive"; } else { $inv['chrgvat'] = "No vat"; } if ($inv["remarks"] == "") { db_conn("cubit"); $sql = "SELECT value FROM settings WHERE constant='DEFAULT_COMMENTS'"; $commRslt = db_exec($sql) or errDie("Unable to retrieve the default comments from Cubit."); $inv["remarks"] = pg_fetch_result($commRslt, 0); } if (!isset($showvat)) { $showvat = TRUE; } if ($showvat == TRUE) { $vat14 = AT14; } else { $vat14 = ""; } // Retrieve the company information db_conn("cubit"); $sql = "SELECT * FROM compinfo"; $comp_rslt = db_exec($sql) or errDie("Unable to retrieve company information from Cubit."); $comp_data = pg_fetch_array($comp_rslt); #make sure we have a valid bank id for customer if (!isset($inv['bankid']) or strlen($inv['bankid']) < 1) { $inv['bankid'] = '2'; } // Retrieve the banking information db_conn("cubit"); $sql = "SELECT * FROM bankacct WHERE bankid='{$inv['bankid']}' AND div='" . USER_DIV . "'"; $bank_rslt = db_exec($sql) or errDie("Unable to retrieve bank information from Cubit."); $bank_data = pg_fetch_array($bank_rslt); }
function create_dummy($deptid) { global $_POST; extract($_POST); db_connect(); # Dummy Vars $remarks = ""; $supaddr = ""; $terms = "0"; $total = 0; $subtot = 0; // $pdate = date("Y-m-d"); $ddate = date("Y-m-d"); $shipchrg = "0.00"; $purnum = divlastid("pur", USER_DIV); if (isset($supid)) { $supid += 0; } else { $supid = 0; } if (isset($deptid)) { $typeid = $deptid; $typeid += 0; } else { $typeid = 0; } if ($ctyp == "cb" && isset($bankid)) { $bankid += 0; $supplierid = $bankid; $supid = ""; } else { $supplierid = 0; } if ($ctyp == "c") { $supid = "Cash Order"; } elseif ($ctyp == "p") { $supid = "Petty Cash Order"; } elseif ($ctyp == "ac") { $supid = "Ledger Account Order"; } $trans_date_setting = getCSetting("USE_TRANSACTION_DATE"); if (isset($trans_date_setting) and $trans_date_setting == "yes") { $trans_date_value = getCSetting("TRANSACTION_DATE"); $date_arr = explode("-", $trans_date_value); $date_year = $date_arr[0]; $date_month = $date_arr[1]; $date_day = $date_arr[2]; } else { $date_year = date("Y"); $date_month = date("m"); $date_day = date("d"); } $pdate = "{$date_year}-{$date_month}-{$date_day}"; # Insert Order to DB $sql = "\n\t\tINSERT INTO nons_purchases (\n\t\t\tsupid, deptid, supplier, supaddr, terms, pdate, ddate, shipchrg, subtot, total, \n\t\t\tbalance, vatinc, vat, remarks, received, done, prd, div, purnum, ctyp, typeid\n\t\t) VALUES (\n\t\t\t'{$supplierid}', '{$deptid}', '{$supid}', '{$supaddr}', '{$terms}', '{$pdate}', '{$ddate}', '{$shipchrg}', '{$subtot}', '{$total}', \n\t\t\t'{$total}', 'yes', '0', '{$remarks}', 'n', 'n', '" . PRD_DB . "', '" . USER_DIV . "', '{$purnum}', '{$ctyp}', '{$typeid}'\n\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert Non-Stock Order to Cubit.", SELF); # Get next ordnum $purid = lastpurid(); return $purid; }
function create_dummy($deptid) { db_connect(); # Dummy Vars $supid = 0; $remarks = ""; $supaddr = ""; $terms = "0"; $total = 0; $subtot = 0; // $pdate = date("Y-m-d"); $ddate = date("Y-m-d"); $shipchrg = "0.00"; $fcid = getDef_fcid(); $curr = "R"; $xrate = 1; $tax = 0; $duty = 0; $purnum = divlastid("pur", USER_DIV); $fcid = getDef_fcid(); $curr = getSymbol($fcid); $xrate = getRate($fcid); $trans_date_setting = getCSetting("USE_TRANSACTION_DATE"); if (isset($trans_date_setting) and $trans_date_setting == "yes") { $trans_date_value = getCSetting("TRANSACTION_DATE"); $date_arr = explode("-", $trans_date_value); $date_year = $date_arr[0]; $date_month = $date_arr[1]; $date_day = $date_arr[2]; } else { $date_year = date("Y"); $date_month = date("m"); $date_day = date("d"); } $pdate = "{$date_year}-{$date_month}-{$date_day}"; # Insert Order to DB $sql = "\n\t\tINSERT INTO purch_int (\n\t\t\tdeptid, supid, supaddr, terms, pdate, ddate, xrate, fcid, curr, tax, \n\t\t\tshipchrg, duty, subtot, total, balance, remarks, received, done, prd, div, \n\t\t\tpurnum\n\t\t) VALUES (\n\t\t\t'{$deptid}', '{$supid}', '{$supaddr}', '{$terms}', '{$pdate}', '{$ddate}', '{$xrate}', '{$fcid}', '{$curr['symbol']}', '{$tax}', \n\t\t\t'{$shipchrg}', '{$duty}', '{$subtot}', '{$total}', '{$total}', '{$remarks}', 'n', 'n', '" . PRD_DB . "', '" . USER_DIV . "', \n\t\t\t'{$purnum}'\n\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert Order to Cubit.", SELF); # Get next ordnum $purid = pglib_lastid("purch_int", "purid"); return $purid; }
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($_GET) { $showvat = TRUE; # get vars extract($_GET); # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid Invoice number."); $sndate = $ninv_year . "-" . $ninv_month . "-" . $ninv_day; if (!checkdate($ninv_month, $ninv_day, $ninv_year)) { $v->addError($sdate, "Invalid Date."); } $td = $sndate; foreach ($ids as $key => $id) { $v->isOk($id, "num", 1, 20, "Invalid Item number."); $v->isOk($qtys[$key], "float", 1, 20, "Invalid Item quantity."); $v->isOk($amts[$key], "float", 1, 20, "Invalid Item amount."); } $v->isOk($subtot, "float", 1, 20, "Invalid sub-total amount."); $v->isOk($vat, "float", 1, 20, "Invalid vat amount."); $v->isOk($total, "float", 1, 20, "Invalid total amount."); # display errors, if any if ($v->isError()) { $err = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class='err'>" . $e["msg"] . "</li>"; } $confirm .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } db_connect(); # Get invoice info $sql = "SELECT * FROM hire.hire_nons_invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); db_conn("hire"); $noteid = pglib_lastid("hire_nons_inv_notes", "noteid"); $noteid++; # Begin updates pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); /* --- Start Products Display --- */ $refnum = getrefnum(); /*refnum*/ $real_noteid = divlastid('note', USER_DIV); $vattot = 0; $amttot = 0; db_connect(); # Products layout $products = array(); $i = 0; $page = 0; foreach ($ids as $key => $id) { if ($i >= 25) { $page++; $i = 0; } $sql = "SELECT * FROM hire.hire_nons_inv_items WHERE invid = '{$invid}' AND id = '{$id}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $stkd = pg_fetch_array($stkdRslt); db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatex']}'"; $Ri = db_exec($Sl) or errDie("Unable to get data."); $vd = pg_fetch_array($Ri); if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") { $showvat = FALSE; } $temp = $stkd['vatex']; if ($vd['zero'] == "Yes") { $stkd['vatex'] = "y"; } $t = $inv['chrgvat']; // $VATP = TAX_VAT; $VATP = $vd['vat_amount']; $stkacc = $stkd['accid']; # keep records for transactions if (isset($totstkamt[$stkacc])) { if ($stkd['vatex'] == "y") { $totstkamt[$stkacc] += $amts[$key]; $va = 0; $inv['chrgvat'] = ""; } else { $totstkamt[$stkacc] += vats($amts[$key], $inv['chrgvat'], $vd['vat_amount']); $va = sprint($stkd['amt'] - vats($amts[$key], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($amts[$key] * $VATP / 100); } } } else { if ($stkd['vatex'] == "y") { $totstkamt[$stkacc] = $amts[$key]; $va = 0; $inv['chrgvat'] = ""; } else { $totstkamt[$stkacc] = vats($amts[$key], $inv['chrgvat'], $vd['vat_amount']); $va = sprint($amts[$key] - vats($amts[$key], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($amts[$key] * $VATP / 100); } } } #add this entry's vat to a total $vattot = $vattot + $va; vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "Non-Stock invoice No. {$inv['invnum']} Credit note No.{$real_noteid} Customer {$inv['cusname']}.", -vats($amts[$key], $inv['chrgvat'], $vd['vat_amount']) - $va, -$va); $inv['chrgvat'] = $t; $sql = "UPDATE hire.hire_nons_inv_items SET rqty = (rqty + '{$qtys[$key]}') WHERE id = '{$stkd['id']}'"; $sRslt = db_exec($sql); if ($stkd['vatex'] == 'y') { $ex = "#"; } else { $ex = " "; } $stkd['vatex'] = $temp; #add this entry's amt to a total $amttot = $amttot + $amts[$key]; $sql = "INSERT INTO hire.hire_nons_note_items(noteid, qty, description, amt, unitcost, vatcode) VALUES('{$noteid}', '{$qtys[$key]}', '{$stkd['description']}', '{$amts[$key]}', '{$stkd['unitcost']}', '{$stkd['vatex']}')"; $stkdRslt = db_exec($sql); #the credit note entry will get any remark entered here ? so we dont update the invoice entry ... // db_conn("cubit"); // $sql = "UPDATE nons_invoices SET remarks='$remarks' WHERE invid='$invid'"; // $rslt = db_exec($sql) or errDie("Unable to save the comments to Cubit."); $products[$page][] = "\r\n\t\t\t\t\t\t<tr valign='top'>\r\n\t\t\t\t\t\t\t<td style='border-right: 2px solid #000'>{$ex} {$stkd['description']} </td>\r\n\t\t\t\t\t\t\t<td style='border-right: 2px solid #000'>{$qtys[$key]} </td>\r\n\t\t\t\t\t\t\t<td style='border-right: 2px solid #000' align='right' nowrap>" . CUR . " {$stkd['unitcost']} </td>\r\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$amts[$key]} </td>\r\n\t\t\t\t\t\t</tr>"; $i++; } $blank_lines = 25; foreach ($products as $key => $val) { $bl = $blank_lines - count($products[$key]); for ($i = 0; $i <= $bl; $i++) { $products[$key][] = "\r\n\t\t\t\t \t\t\t<tr>\r\n\t\t\t\t \t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t\t\t\t \t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t\t\t\t \t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t\t\t\t \t\t\t\t<td> </td>\r\n\t\t\t\t \t\t\t</tr>"; } } /* --- Start Some calculations --- */ # Subtotal $SUBTOT = sprint($subtot); $VAT = sprint($vat); $TOTAL = sprint($total); /* --- End Some calculations --- */ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "vat"); $varacc = gethook("accnum", "salesacc", "name", "sales_variance"); /* - End Hooks - */ # todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); // print $inv['ctyp']; exit; db_connect(); $tot_post = 0; # bank % cust if ($inv['ctyp'] == 's') { $sql = "SELECT * FROM customers WHERE cusnum = '{$inv['cusid']}' AND div = '" . USER_DIV . "'"; $custRslt = db_exec($sql) or errDie("Unable to view customer"); $cus = pg_fetch_array($custRslt); # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$cus['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { $dept['deptname'] = "<li class=err>Department not Found."; } else { $dept = pg_fetch_array($deptRslt); } $tpp = 0; # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { $tot_post += $wamt; writetrans($stkacc, $dept['debtacc'], $td, $refnum, $wamt, "Non-Stock invoice No. {$inv['invnum']} Credit note No.{$real_noteid} Customer {$inv['cusname']}."); } if ($VAT != 0) { $tot_post += $VAT; writetrans($vatacc, $dept['debtacc'], $td, $refnum, $VAT, "Non-Stock invoice No. {$inv['invnum']} Credit note No.{$real_noteid} VAT. Customer {$inv['cusname']}."); } $tot_dif = sprint($tot_post - $TOTAL); if ($tot_dif > 0) { writetrans($dept['debtacc'], $varacc, $td, $refnum, $tot_dif, "Sales Variance on Credit note No.{$real_noteid}"); } elseif ($tot_dif < 0) { $tot_dif = $tot_dif * -1; writetrans($varacc, $dept['debtacc'], $td, $refnum, $tot_dif, "Sales Variance on Credit note No.{$real_noteid}"); } } elseif ($inv['ctyp'] == 'b') { $dept['debtacc'] = getbankaccid($inv['accid']); $amounts = ""; $accids = ""; $vats = ""; $chrgvats = ""; $gamt = 0; # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { # Cook vars $amounts .= "|{$wamt}"; $accids .= "|{$stkacc}"; $vats .= "|0"; $chrgvats .= "|no"; # Debit Customer and Credit stock $tot_post += $wamt; writetrans($stkacc, $dept['debtacc'], $td, $refnum, $wamt, "Non-Stock invoice No. {$inv['invnum']} Credit note No.{$real_noteid}."); } # Debit bank and credit the account involved if ($VAT != 0) { # Cook vars $amounts .= "|{$VAT}"; $accids .= "|{$vatacc}"; $vats .= "|0"; $chrgvats .= "|no"; $tot_post += $VAT; writetrans($vatacc, $dept['debtacc'], $td, $refnum, $VAT, "Non-Stock invoice No. {$inv['invnum']} Credit note No.{$real_noteid} VAT."); } } else { $cusacc = $inv['accid']; $sdate = date("Y-m-d"); # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { # Debit Customer and Credit stock $tot_post += $wamt; writetrans($stkacc, $cusacc, $td, $refnum, $wamt, "Non-Stock invoice No. {$inv['invnum']} Credit note No.{$real_noteid}."); pettyrec($cusacc, $td, "dt", "Non-Stock invoice No. {$inv['invnum']} Credit note No.{$real_noteid}.", $wamt, "Account Sale Credit note"); } # Debit bank and credit the account involved $tot_post += $VAT; writetrans($vatacc, $cusacc, $td, $refnum, $VAT, "Non-Stock invoice No. {$inv['invnum']} Credit note No.{$real_noteid} VAT."); pettyrec($cusacc, $td, "dt", "Non-Stock invoice No. {$inv['invnum']} Credit note No.{$real_noteid} VAT.", $VAT, "Account Sale Credit note VAT"); $tot_dif = sprint($tot_post - $TOTAL); if ($tot_dif > 0) { writetrans($cusacc, $varacc, $td, $refnum, $tot_dif, "Sales Variance on Credit note No.{$real_noteid}"); } elseif ($tot_dif < 0) { $tot_dif = $tot_dif * -1; writetrans($varacc, $cusacc, $td, $refnum, $tot_dif, "Sales Variance on Credit note No.{$real_noteid}"); } } $sdate = date("Y-m-d"); db_connect(); if ($inv['ctyp'] == 's') { # Record the payment on the statement $sql = "\r\n\t\t\tINSERT INTO stmnt \r\n\t\t\t\t(cusnum, invid, amount, date, type, div, allocation_date) \r\n\t\t\tVALUES \r\n\t\t\t\t('{$inv['cusid']}', '{$real_noteid}', '-{$TOTAL}','{$td}', 'Non Stock Credit Note, for invoice {$inv['invnum']}', '" . USER_DIV . "', '{$inv['odate']}')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # Update the customer (make balance less) $sql = "UPDATE customers SET balance = (balance - '{$TOTAL}'::numeric(13,2)) WHERE cusnum = '{$inv['cusid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Update the customer (make balance less) $sql = "UPDATE open_stmnt SET balance = (balance - '{$TOTAL}'::numeric(13,2)) WHERE invid = '{$inv['invnum']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Make ledge record custledger($inv['cusid'], $stkacc, $td, $real_noteid, "Non Stock Credit note {$real_noteid}", $TOTAL, "c"); #record entry for age analysis ... #this function seems a little ... broken //custfCT($TOTAL, $inv['cusid'], $inv['age']); #lets rather use the system wide function and send it the invoice transaction date to do the entry for that age custCT($TOTAL, $inv['cusid'], $inv['odate']); } elseif ($inv['ctyp'] == 'cb') { $date = date("Y-m-d"); # Record the Receipt record db_connect(); $sql = "INSERT INTO cashbook(bankid, trantype, date, name, descript, cheqnum, amount, banked, accids, amounts, chrgvats, vats, div,accinv) VALUES ('{$inv['jobid']}', 'withdrawal', '{$td}', '{$inv['cusname']}', 'Nons Stock Credit note for invoice {$inv['invnum']}', '0', '{$TOTAL}', 'no', '', '0', '{$inv['chrgvat']}', '0', '" . USER_DIV . "','{$stkacc}')"; die($sql); $Rslt = db_exec($sql) or errDie("Unable to add bank Receipt to database.", SELF); } db_connect(); $sql = "UPDATE hire.hire_nons_invoices SET balance = (balance - '{$TOTAL}'::numeric(13,2)) WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); # write note $sql = "INSERT INTO hire.hire_nons_inv_notes(invid, invnum, cusname, cusaddr, cusvatno, chrgvat, date, subtot, vat, total, username, prd, notenum, ctyp, remarks, div)"; $sql .= " VALUES('{$inv['invid']}', '{$inv['invnum']}', '{$inv['cusname']}', '{$inv['cusaddr']}', '{$inv['cusvatno']}', '{$inv['chrgvat']}', '{$td}', {$SUBTOT}, {$VAT}, {$TOTAL}, '" . USER_NAME . "', '" . PRD_DB . "', '{$real_noteid}', '{$inv['ctyp']}', '{$remarks}', '" . USER_DIV . "')"; $rslt = db_exec($sql) or errDie("Unable to create template Non-Stock Invoice.", SELF); # write note items foreach ($ids as $key => $id) { $sql = "SELECT * FROM hire.hire_nons_inv_items WHERE invid = '{$invid}' AND id = '{$id}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $nstk = pg_fetch_array($stkdRslt); } $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\r\n\tVALUES('{$td}', '{$noteid}', '{$real_noteid}', '0', '{$VAT}', '{$TOTAL}', 'nnon', '" . USER_DIV . "')"; $recRslt = db_exec($sql); $Sl = "INSERT INTO sj(cid,name,des,date,exl,vat,inc,div) VALUES\r\n\t('{$inv['cusid']}','{$inv['cusname']}','Credit Note: {$real_noteid}, Invoice {$inv['invnum']}','{$td}','" . -sprint($TOTAL - $VAT) . "','-{$VAT}','" . -sprint($TOTAL) . "','" . USER_DIV . "')"; $Ri = db_exec($Sl); com_invoice($inv['salespn'], -($TOTAL - $VAT), 0, $inv['invnum'], $td); # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); $cc = "<script> CostCenter('ct', 'Credit Note', '{$td}', 'Non Stock Credit Note No.{$real_noteid}', '" . ($TOTAL - $VAT) . "', ''); </script>"; if (!isset($showvat)) { $showvat = TRUE; } if ($showvat == TRUE) { $vat14 = AT14; } else { $vat14 = ""; } // Retrieve the company information db_conn("cubit"); $sql = "SELECT * FROM compinfo"; $comp_rslt = db_exec($sql) or errDie("Unable to retrieve company information from Cubit."); $comp_data = pg_fetch_array($comp_rslt); // Retrieve the banking information db_conn("cubit"); $sql = "SELECT * FROM bankacct WHERE bankid='2' AND div='" . USER_DIV . "'"; $bank_rslt = db_exec($sql) or errDie("Unable to retrieve bank information from Cubit."); $bank_data = pg_fetch_array($bank_rslt); // Retrieve customer information db_conn("cubit"); $sql = "SELECT * FROM customers WHERE cusnum='{$inv['cusid']}'"; $cust_rslt = db_exec($sql) or errDie("Unable to retrieve customer information from Cubit."); $cust_data = pg_fetch_array($cust_rslt); if ($inv['cusid'] == "0") { $cust_data['surname'] = $inv['cusname']; $cust_data['addr1'] = $inv['cusaddr']; $cust_data['paddr1'] = $inv['cusaddr']; } $table_borders = "\r\n\t\tborder-top: 2px solid #000000;\r\n\t\tborder-left: 2px solid #000000;\r\n\t\tborder-right: 2px solid #000000;\r\n\t\tborder-bottom: none;\r\n\t"; // $nolr_borders = " // border-top: 2px solid #000; // border-left: none; // border-right: none; // border-bottom: none; // "; $details = ""; for ($i = 0; $i <= $page; $i++) { // new page? if ($i > 1) { $details .= "<br style='page-break-after:always;'>"; } $products_out = ""; foreach ($products[$i] as $string) { $products_out .= $string; } $vattot = sprint($vattot); $amttot = sprint($amttot); $details .= "<center>\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table border='0' cellpadding='2' cellspacing='2' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td align='left' rowspan='2'><img src='compinfo/getimg.php' width=230 height=47></td>\r\n\t\t\t\t\t<td align='left' rowspan='2'><font size='5'><b>" . COMP_NAME . "</b></font></td>\r\n\t\t\t\t\t<td align='right'><font size='5'><b>Tax Credit Note</b></font></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td valign='top'>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr1']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr1']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr2']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr2']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr3']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr3']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr4']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['postcode']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>REG:</b> {$comp_data['regnum']}</b> </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>{$bank_data['bankname']}</b> </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>VAT REG:</b> {$comp_data['vatnum']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Branch</b> {$bank_data['branchname']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Tel:</b> {$comp_data['tel']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Branch Code:</b> {$bank_data['branchcode']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Fax:</b> {$comp_data['fax']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Acc Num:</b> {$bank_data['accnum']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td><td valign='top'>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Date</b></td>\r\n\t\t\t\t\t<td><b>Page Number</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$inv['odate']}</td>\r\n\t\t\t\t\t<td>" . ($i + 1) . "</td>\r\n\t\t\t\t</tr>\r\n\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'> </td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000'> </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr><td> </td></tr>\r\n\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td colspan='2'><b>Credit Note No:</b> {$real_noteid}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td colspan='2'><b>Invoice No:</b> {$inv['invnum']}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td colspan='2'><b>Proforma Inv No:</b> {$inv['docref']}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td align='center'><font size='4'><b>Credit Note To:</b></font></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>{$cust_data['surname']}</b></td>\r\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>Postal Address</b></td>\r\n\t\t\t\t\t<td width='33%'><b>Delivery Address</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>" . nl2br($cust_data["addr1"]) . "</td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>" . nl2br($cust_data["paddr1"]) . "</td>\r\n\t\t\t\t\t<td> </td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>Customer VAT No:</b> {$inv['cusvatno']}</td>\r\n\t\t\t\t\t<td width='33%'><b>Customer Order No:</b> {$inv['cordno']}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'><b>Description</b></td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'><b>Qty</b></td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000' align='right'><b>Unit Price</b></td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000;' align='right'><b>Amount</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t{$products_out}\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><i>VAT Exempt Indicator: #</i></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>{$remarks}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='border: 2px solid #000000'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Terms:</b> {$inv['terms']} days</b></td>\r\n\t\t\t\t\t<td><b>Subtotal:</b></td>\r\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$SUBTOT}</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t\t\t\t\t<td><b>VAT {$vat14}:</b></td>\r\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$VAT}</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Received in good order by:</b>_____________________</td>\r\n\t\t\t\t\t<td><b>Total Incl VAT:</b></td>\r\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$TOTAL}</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t\t\t\t<tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Date:</b>_____________________</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t</table>\r\n\t\t"; } #fix teh date $date_arr = explode("-", $date); $cdate = "{$date_arr['2']}-{$date_arr['1']}-{$date_arr['0']}"; // Retrieve template settings from Cubit db_conn("cubit"); $sql = "SELECT filename FROM template_settings WHERE template='invoices'"; $tsRslt = db_exec($sql) or errDie("Unable to retrieve the template settings from Cubit."); $template = pg_fetch_result($tsRslt, 0); if ($template == "invoice-print.php") { $OUTPUT = "\r\n\t\t\t<script>\r\n\t\t\t\tCostCenter('ct', 'Credit Note', '{$cdate}', 'Non Stock Credit Note No.{$real_noteid}', '" . ($TOTAL - $VAT) . "', '');\r\n\t\t\t</script>\r\n\t\t\t{$details}"; require "tmpl-print.php"; } else { $OUTPUT = "\r\n\t\t\t<script>\r\n\t\t\t\tCostCenter('ct', 'Credit Note', '{$cdate}', 'Non Stock Credit Note No.{$real_noteid}', '" . ($TOTAL - $VAT) . "', '');\r\n\t\t\t\tmove(\"{$template}?noteid={$noteid}&type=nonsnote\");\r\n\t\t\t</script>"; require "template.php"; } }
function details($_POST) { extract($_POST); # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid invoice number."); # display errors, if any if ($v->isError()) { $err = ""; $errors = $v->getErrors(); foreach ($errors as $e) { $err .= "<li class='err'>{$e['msg']}</li>"; } return $confirm; } db_connect(); # Get invoice info $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); $sql = "SELECT stkid FROM inv_items WHERE invid = '{$inv['invid']}' AND div = '" . USER_DIV . "'"; $crslt = db_exec($sql); if (pg_numrows($crslt) < 1) { $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has no items.</li>"; $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $error; } # check if invoice has been printed if ($inv['printed'] == "y") { $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has already been printed.</li>"; return $error; } # check if invoice has been serialised if ($inv['serd'] == "n") { $error = "<li class='err'> Error : You must select serial numbers for some Items on Invoice No. <b>T {$invid}</b> before you can print it.</li>"; return $error; } #check if this transaction date is allowed // $curyr = getActiveFinYear(); // if ($yr > $curyr || ($yr == $curyr && $mon > $PRDMON[12])) { // $v->addError("", "Cannot do transaction in future financial year. ".(DEBUG>0?"\"$details\"":"")); // } db_conn('cubit'); $showvat = TRUE; $blocked_date_from = getCSetting("BLOCKED_FROM"); $blocked_date_to = getCSetting("BLOCKED_TO"); if (strtotime($inv['odate']) >= strtotime($blocked_date_from) and strtotime($inv['odate']) <= 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>"; } pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); $invnum = divlastid('inv', USER_DIV); $Sl = "INSERT INTO ncsrec (oldnum, newnum, div) VALUES ('{$invid}', '{$invnum}', '" . USER_DIV . "')"; $Rs = db_exec($Sl) or errDie("Unable to insert into db"); # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$inv['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); } /* --- Start Products Display --- */ # Products layout $commision = 0; $products = array(); $disc = 0; # get selected stock in this invoice db_connect(); $sql = "SELECT * FROM inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $taxex = 0; $i = 0; $page = 0; $salesp = qrySalesPersonN($inv["salespn"]); while ($stkd = pg_fetch_array($stkdRslt)) { if ($i >= 25) { $page++; $i = 0; } $stkd['account'] += 0; if ($stkd['account'] == 0) { # get warehouse name db_conn("exten"); $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); # get selected stock in this warehouse db_connect(); $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'"; $stkRslt = db_exec($sql); $stk = pg_fetch_array($stkRslt); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") { $showvat = FALSE; } $sp = ""; # Check Tax Excempt if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $taxex += $stkd['amt']; $ex = "#"; } else { $ex = ""; } # all must be excempted if ($inv['chrgvat'] == 'nov') { $ex = "#"; } # Keep track of discounts $disc += $stkd['disc'] * $stkd['qty']; # Insert stock record $sdate = date("Y-m-d"); $csprice = sprint($stk['csprice'] * $stkd['qty']); # Sales rep commission if ($salesp["com"] > 0) { $itemcommission = $salesp['com']; } else { $itemcommission = $stk["com"]; } #if this item is not exvat (ie. $ex != #) then reduce by the vat amount if ((strlen($ex) != "#" or $vd['vat_amount'] > 0) and $inv['chrgvat'] == "inc") { $vat = sprint($stkd['amt'] * $vd['vat_amount'] / (100 + $vd['vat_amount'])); $exvatamt = sprint($stkd['amt'] - $vat); } else { $exvatamt = sprint($stkd['amt']); } $commision = $commision + coms($inv['salespn'], sprint($exvatamt), $itemcommission); if (strlen($stkd['serno']) > 0) { $showser = "<br>" . trim($stkd['serno']); } else { $showser = ""; } # Put in product $products[$page][] = "\n\t\t\t\t<tr valign='top'>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$stk['stkcod']} </td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$ex} {$sp} {$stk['stkdes']} {$showser}</td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$stkd['qty']} </td>\n\t\t\t\t\t<td align='right' style='border-right: 2px solid #000'>{$stkd['unitcost']} </td>\n\t\t\t\t\t<td align='right' style='border-right: 2px solid #000'>{$stkd['disc']} </td>\n\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$stkd['amt']} </td>\n\t\t\t\t</tr>"; $i++; } else { db_conn('core'); $Sl = "SELECT * FROM accounts WHERE accid='{$stkd['account']}'"; $Ri = db_exec($Sl) or errDie("Unable to get account data."); $ad = pg_fetch_array($Ri); db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") { $showvat = FALSE; } $sp = ""; # Check Tax Excempt if ($vd['zero'] == "Yes") { $taxex += $stkd['amt']; $ex = "#"; } else { $ex = ""; } # all must be excempted if ($inv['chrgvat'] == 'nov') { $ex = "#"; } #if this item is not exvat (ie. $ex != #) then reduce by the vat amount if ((strlen($ex) != "#" or $vd['vat_amount'] > 0) and $inv['chrgvat'] == "inc") { $vat = sprint($stkd['amt'] * $vd['vat_amount'] / (100 + $vd['vat_amount'])); $exvatamt = sprint($stkd['amt'] - $vat); } else { $exvatamt = sprint($stkd['amt']); } if ($salesp["com"] > 0) { $itemcommission = $salesp['com']; } else { $itemcommission = 0; } $commision = $commision + coms($inv['salespn'], sprint($exvatamt), $itemcommission); # Put in product $products[$page][] = "\n\t\t\t\t<tr valign='top'>\n\t\t\t\t\t<td style='border-right: 2px solid #000'> </td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$ex} {$sp} {$stkd['description']} </td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$stkd['qty']} </td>\n\t\t\t\t\t<td align='right' style='border-right: 2px solid #000'>{$stkd['unitcost']} </td>\n\t\t\t\t\t<td align='right' style='border-right: 2px solid #000'>{$stkd['disc']} </td>\n\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$stkd['amt']} </td>\n\t\t\t\t</tr>"; $i++; } } $blank_lines = 25; foreach ($products as $key => $val) { $bl = $blank_lines - count($products[$key]); for ($i = 0; $i <= $bl; $i++) { $products[$key][] = "\n\t \t\t\t<tr>\n\t \t\t\t\t<td style='border-right: 2px solid #000'> </td>\n\t \t\t\t\t<td style='border-right: 2px solid #000'> </td>\n\t \t\t\t\t<td style='border-right: 2px solid #000'> </td>\n\t \t\t\t\t<td style='border-right: 2px solid #000'> </td>\n\t \t\t\t\t<td style='border-right: 2px solid #000'> </td>\n\t \t\t\t\t<td> </td>\n\t \t\t\t</tr>"; } } /* --- Start Some calculations --- */ # Subtotal $SUBTOT = sprint($inv['subtot']); # Calculate tradediscm if (strlen($inv['traddisc']) > 0) { $traddiscm = sprint($inv['traddisc'] / 100 * $SUBTOT); } else { $traddiscm = "0.00"; } # Calculate subtotal $VATP = TAX_VAT; $SUBTOTAL = sprint($inv['subtot']); $VAT = sprint($inv['vat']); $TOTAL = sprint($inv['total']); $inv['delchrg'] = sprint($inv['delchrg']); com_invoice($inv['salespn'], $TOTAL - $VAT, sprint($commision), $invnum, $inv["odate"], true); /* --- End Some calculations --- */ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "VAT"); /* - End Hooks - */ # Todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); $refnum = getrefnum(); /*refnum*/ if ($inv['branch'] != 0) { db_conn("cubit"); $get_addr = "SELECT * FROM customer_branches WHERE id = '{$inv['branch']}' LIMIT 1"; $run_addr = db_exec($get_addr); if (pg_numrows($run_addr) < 1) { $address = ""; } else { $barr = pg_fetch_array($run_addr); $address = " - {$barr['branch_name']}"; } } else { $address = ""; } /* --- Updates ---- */ db_connect(); $Sql = "UPDATE invoices SET printed = 'y', done = 'y', invnum='{$invnum}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($Sql) or errDie("Unable to update invoice information"); //dont make consignment order from invoice if customer number is entered ... // if (isset($inv['cordno']) AND strlen($inv['cordno']) > 0){ // $inv_type = "Consignment Order"; // }else { $inv_type = "Invoice"; // } # Record the payment on the statement $sql = "\n\t\t\tINSERT INTO stmnt (\n\t\t\t\tcusnum, invid, docref, amount, date, \n\t\t\t\ttype, branch, div, allocation_date, \n\t\t\t\tallocation_balance\n\t\t\t) VALUES (\n\t\t\t\t'{$inv['cusnum']}', '{$invnum}', '{$inv['docref']}', '{$inv['total']}', '{$inv['odate']}', \n\t\t\t\t'{$inv_type}', '{$address}', '" . USER_DIV . "', '{$inv['odate']}', \n\t\t\t\t'" . abs($inv['total']) . "'\n\t\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # Record the payment on the statement $sql = "\n\t\t\tINSERT INTO open_stmnt (\n\t\t\t\tcusnum, invid, docref, amount, balance, \n\t\t\t\tdate, type, div\n\t\t\t) VALUES (\n\t\t\t\t'{$inv['cusnum']}', '{$invnum}', '{$inv['docref']}', '{$inv['total']}','{$inv['total']}', \n\t\t\t\t'{$inv['odate']}', '{$inv_type}', '" . USER_DIV . "'\n\t\t\t)"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # Save invoice discount $sql = "\n\t\t\tINSERT INTO inv_discs (\n\t\t\t\tcusnum, invid, traddisc, itemdisc, inv_date, delchrg, \n\t\t\t\tdiv, total\n\t\t\t) VALUES (\n\t\t\t\t'{$inv['cusnum']}', '{$invnum}', '{$traddiscm}', '{$disc}', '{$inv['odate']}', '{$inv['delchrg']}', \n\t\t\t\t'" . USER_DIV . "', ({$SUBTOT}+{$inv['delchrg']})\n\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 + '{$inv['total']}') WHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Make ledge record custledger($inv['cusnum'], $dept['incacc'], $inv['odate'], $invnum, "Invoice No. {$invnum}", $inv['total'], "d"); db_connect(); # get selected stock in this invoice $sql = "SELECT * FROM inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); $tcosamt = 0; $sdate = date("Y-m-d"); $nsp = 0; while ($stkd = pg_fetch_array($stkdRslt)) { $stkd['account'] += 0; if ($stkd['account'] == 0) { db_connect(); # get selamt from selected stock $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'"; $stkRslt = db_exec($sql); $stk = pg_fetch_array($stkRslt); if ($stk['units'] - $stkd['qty'] < 0) { if ($stk['units'] <= 0) { $cosamt = 0; $cosamt2 = 0; } else { $cosamt = round($stk['units'] * $stk['csprice'], 2); $cosamt2 = round($stk['units'] * $stk['csprice'], 4); } } else { $cosamt = round($stkd['qty'] * $stk['csprice'], 2); $cosamt2 = round($stkd['qty'] * $stk['csprice'], 4); } # update stock(alloc - qty) $sql = "\n\t\t\t\t\tUPDATE stock \n\t\t\t\t\tSET csamt = (csamt - '{$cosamt}'),units = (units - '{$stkd['qty']}'), alloc=(alloc - '{$stkd['qty']}') \n\t\t\t\t\tWHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF); if ($inv["pslip_sordid"] > 0) { $sql = "UPDATE stock SET alloc = (alloc - '{$stkd['qty']}') WHERE stkid='{$stkd['stkid']}'"; // db_exec($sql) or errDie("Unable to update allocation."); } ###################VAT CALCS####################### $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($stkd['amt'], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}", $iamount, $ivat); #################################################### $amtexvat = sprint($stkd['amt']); // $uc=sprint($cosamt2/$stkd['qty']); $uc = round($cosamt2 / $stkd['qty'], 4); // '$cosamt', $csprice = sprint($stk['csprice'] * $stkd['qty']); db_connect(); $sql = "\n\t\t\t\t\tINSERT INTO stockrec (\n\t\t\t\t\t\tedate, stkid, stkcod, stkdes, trantype, qty, \n\t\t\t\t\t\tcsprice, csamt, details, div\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$inv['odate']}', '{$stkd['stkid']}', '{$stk['stkcod']}', '{$stk['stkdes']}', 'invoice', '{$stkd['qty']}', \n\t\t\t\t\t\t'{$amtexvat}', '{$csprice}', 'Stock sold - Invoice No. {$invnum}', '" . USER_DIV . "'\n\t\t\t\t\t)"; $recRslt = db_exec($sql); if ($stk['csprice'] > 0) { $Sl = "INSERT INTO scr (inv, stkid, amount, invid) VALUES ('{$invnum}', '{$stkd['stkid']}', '{$uc}', '{$stkd['id']}')"; $Rg = db_exec($Sl); } if ($stk['serd'] == 'yes') { ext_invSer($stkd['serno'], $stkd['stkid'], "{$inv['cusname']} {$inv['surname']}", $invnum, $inv['odate']); } # stkid, stkcod, stkdes, trantype, edate, qty, csamt, details $sdate = date("Y-m-d"); stockrec($stk['stkid'], $stk['stkcod'], $stk['stkdes'], 'ct', $inv['odate'], $stkd['qty'], $cosamt, "Sold to Customer : {$inv['surname']} - Invoice No. {$invnum}"); # get accounts db_conn("exten"); $sql = "SELECT stkacc, cosacc FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'"; $whRslt = db_exec($sql); $wh = pg_fetch_array($whRslt); $stockacc = $wh['stkacc']; $cosacc = $wh['cosacc']; if ($cosamt < 0) { $cosamt = 0; } # dt(cos) ct(stock) writetrans($cosacc, $stockacc, $inv['odate'], $refnum, $cosamt, "Cost Of Sales for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}"); $tcosamt += $cosamt; #record the entry for the stock report db_connect(); $sql = "\n\t\t\t\t\tINSERT INTO salesrec (\n\t\t\t\t\t\tedate, invid, invnum, debtacc, vat, total, typ, div\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$inv['odate']}', '{$invid}', '{$invnum}', '{$dept['debtacc']}', '{$ivat}', '{$iamount}', 'stk', '" . USER_DIV . "'\n\t\t\t\t\t)"; $recRslt = db_exec($sql); } else { db_connect(); ###################VAT CALCS####################### $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'"; $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 ($vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($stkd['amt'], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}", $iamount, $ivat); #################################################### $amtexvat = sprint($stkd['amt']); db_connect(); $sdate = date("Y-m-d"); $nsp += sprint($iamount - $ivat); writetrans($dept['debtacc'], $stkd['account'], $inv['odate'], $refnum, $iamount - $ivat, "Debtors Control for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}"); db_connect(); $sql = "\n\t\t\t\t\tINSERT INTO salesrec (\n\t\t\t\t\t\tedate, invid, invnum, debtacc, vat, total, typ, div\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$inv['odate']}', '{$invid}', '{$invnum}', '{$dept['debtacc']}', '{$ivat}', '{$iamount}', 'non', '" . USER_DIV . "'\n\t\t\t\t\t)"; $recRslt = db_exec($sql); } } ###################VAT CALCS####################### $inv['delvat'] += 0; db_conn('cubit'); $Sl = "SELECT * FROM vatcodes WHERE id='{$inv['delvat']}'"; $Ri = db_exec($Sl); if (pg_num_rows($Ri) < 1) { $Sl = "SELECT * FROM vatcodes"; $Ri = db_exec($Sl); } $vd = pg_fetch_array($Ri); if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") { $showvat = FALSE; } if ($vd['zero'] == "Yes") { $excluding = "y"; } else { $excluding = ""; } $vr = vatcalc($inv['delchrg'], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']); $vrs = explode("|", $vr); $ivat = $vrs[0]; $iamount = $vrs[1]; vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}", sprint($iamount + $ivat), $ivat); #################################################### /* - Start Transactoins - */ # dt(debtors) ct(income/sales) writetrans($dept['debtacc'], $dept['incacc'], $inv['odate'], $refnum, sprint($TOTAL - $VAT - $nsp), "Debtors Control for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}"); # dt(debtors) ct(vat account) writetrans($dept['debtacc'], $vatacc, $inv['odate'], $refnum, $VAT, "VAT Received on Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}"); db_conn('cubit'); $Sl = "\n\t\t\tINSERT INTO sj (\n\t\t\t\tcid, name, des, date, exl, \n\t\t\t\tvat, inc, div\n\t\t\t) VALUES (\n\t\t\t\t'{$inv['cusnum']}', '{$inv['surname']}', 'Invoice {$invnum}', '{$inv['odate']}', '" . sprint($TOTAL - $VAT) . "', \n\t\t\t\t'{$VAT}', '" . sprint($TOTAL) . "', '" . USER_DIV . "'\n\t\t\t)"; $Ri = db_exec($Sl); // db_connect(); // $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div) // VALUES('$inv[odate]', '$invid', '$invnum', '$dept[debtacc]', '$VAT', '$TOTAL', 'stk', '".USER_DIV."')"; // $recRslt = db_exec($sql); //exit; # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); /* - End Transactoins - */ # vat explanation if ($inv['chrgvat'] == 'nov') { $expl = "VAT Exempt indicator"; } else { $expl = "VAT Exempt indicator"; } if (strlen($inv['comm']) > 0) { $inv['comm'] = "\n\t\t\t<table border='1' cellspacing='0' bordercolor='#000000'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Remarks:</td>\n\t\t\t\t\t<td>" . nl2br($inv['comm']) . "</td>\n\t\t\t\t</tr>\n\t\t\t</table>"; } $cc = "<script> sCostCenter('dt', 'Sales', '{$inv['odate']}', 'Invoice No.{$invnum} for Customer {$inv['cusname']} {$inv['surname']}', '" . ($TOTAL - $VAT) . "', 'Cost Of Sales for Invoice No.{$invnum}', '{$tcosamt}', ''); </script>"; db_conn('cubit'); $Sl = "SELECT * FROM settings WHERE constant='SALES'"; $Ri = db_exec($Sl) or errDie("Unable to get settings."); $data = pg_fetch_array($Ri); if ($data['value'] == "Yes") { $sp = "\n\t\t\t<tr>\n\t\t\t\t<td><b>Sales Person:</b> {$inv['salespn']}</td>\n\t\t\t</tr>"; } else { $sp = ""; } if ($inv['chrgvat'] == "inc") { $inv['chrgvat'] = "Inclusive"; } elseif ($inv['chrgvat'] == "exc") { $inv['chrgvat'] = "Exclusive"; } else { $inv['chrgvat'] = "No vat"; } if ($inv['branch'] == 0) { $branchname = "Head Office"; } else { $get_bname = "SELECT * FROM customer_branches WHERE id = '{$inv['branch']}' LIMIT 1"; $run_bname = db_exec($get_bname); if (pg_numrows($run_bname) < 1) { $branchname = ""; } else { $arr = pg_fetch_array($run_bname); $branchname = $arr['branch_name']; } } if (!isset($showvat)) { $showvat = TRUE; } if ($showvat == TRUE) { $vat14 = AT14; } else { $vat14 = ""; } if (strlen(COMP_TEL) > 0) { $showtel = "Tel: "; } else { $showtel = ""; } if (strlen(COMP_FAX) > 0) { $showfax = "Fax: "; } else { $showfax = ""; } // Retrieve the company information db_conn("cubit"); $sql = "SELECT * FROM compinfo"; $comp_rslt = db_exec($sql) or errDie("Unable to retrieve company information from Cubit."); $comp_data = pg_fetch_array($comp_rslt); // Retrieve the banking information $bank_data = qryBankAcct(getdSetting("BANK_DET")); // Retrieve customer information db_conn("cubit"); $sql = "SELECT * FROM customers WHERE cusnum='{$inv['cusnum']}'"; $cust_rslt = db_exec($sql) or errDie("Unable to retrieve customer information from Cubit."); $cust_data = pg_fetch_array($cust_rslt); $table_borders = "\n\t\tborder-top: 2px solid #000000;\n\t\tborder-left: 2px solid #000000;\n\t\tborder-right: 2px solid #000000;\n\t\tborder-bottom: none;"; $details = ""; for ($i = 0; $i <= $page; $i++) { // new page? if ($i > 1) { $details .= "<br style='page-break-after:always;'>"; } $products_out = ""; foreach ($products[$i] as $string) { $products_out .= $string; } $barcode = "<img src='manufact/" . pick_slip_barcode($inv["invid"], 1) . "' />"; $details .= "\n\t\t<center>\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td>\n\t\t\t<table border='0' cellpadding='2' cellspacing='2' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td align='left'><img src='compinfo/getimg.php' width='230' height='47'>{$barcode}</td>\n\t\t\t\t\t<td align='left'><font size='5'><b>" . COMP_NAME . "</b></font></td>\n\t\t\t\t\t<td align='right'><font size='5'><b>Tax Invoice</b></font></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t</td></tr>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td valign='top'>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr1']} </td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr1']} </td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr2']} </td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr2']} </td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr3']} </td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr3']} </td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr4']} </td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['postcode']} </td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>REG:</b> {$comp_data['regnum']}</b> </td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>{$bank_data['bankname']}</b> </td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>VAT REG:</b> {$comp_data['vatnum']} </td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Branch</b> {$bank_data['branchname']} </td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Tel:</b> {$comp_data['tel']} </td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Branch Code:</b> {$bank_data['branchcode']} </td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Fax:</b> {$comp_data['fax']} </td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Acc Num:</b> {$bank_data['accnum']} </td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t</td><td valign='top'>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Date</b></td>\n\t\t\t\t\t<td><b>Page Number</b></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$inv['odate']}</td>\n\t\t\t\t\t<td>" . ($i + 1) . "</td>\n\t\t\t\t</tr>\n\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'> </td>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000'> </td>\n\t\t\t\t</tr>\n\t\t\t\t<tr><td> </td></tr>\n\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><b>Invoice No:</b> {$invnum}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><b>Proforma Inv No:</b> {$inv['docref']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><b>Sales Order No:</b> {$inv['ordno']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><b>Account No:</b> {$cust_data['accno']}</td>\n\t\t\t\t</tr>\n\t\t\t\t{$sp}\n\t\t\t</table>\n\t\t\t</td></tr>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td align='center'><font size='4'><b>Tax Invoice To:</b></font></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t</td></tr>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>{$inv['surname']}</b></td>\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>Postal Address</b></td>\n\t\t\t\t\t<td width='33%'><b>Delivery Address</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>" . nl2br($cust_data["addr1"]) . "</td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>" . nl2br($cust_data["paddr1"]) . "</td>\n\t\t\t\t\t<td>Branch: {$branchname}<br />" . nl2br($inv["del_addr"]) . "</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t</td></tr>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>Customer VAT No:</b> {$inv['cusvatno']}</td>\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>Customer Order No:</b> {$inv['cordno']}</td>\n\t\t\t\t\t<td width='33%'><b>Delivery Date:</b> {$inv['deldate']}</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t</td></tr>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000;'><b>Code</b></td>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000;'><b>Description</b></td>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000;'><b>Qty</b></td>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000;' align='right'><b>Unit Price</b></td>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000;' align='right'><b>Unit Discount</b></td>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000' align='right'><b>Amount</b></td>\n\t\t\t\t</tr>\n\t\t\t\t{$products_out}\n\t\t\t</table>\n\t\t\t</td></tr>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><i>VAT Exempt Indicator: #</i></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{$inv['comm']}</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='border: 2px solid #000000'>\n\t\t\t<tr><td>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Terms: {$inv['terms']} days</b></td>\n\t\t\t\t\t<td><b>Subtotal:</b></td>\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$inv['subtot']}</b></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'> </td>\n\t\t\t\t\t<td><b>Trade Discount:</b></td>\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$inv['discount']}</b></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Received in good order by:</b>_____________________</td>\n\t\t\t\t\t<td><b>Delivery Charge</b></td>\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$inv['delivery']}</b></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'> </td>\n\t\t\t\t\t<td><b>VAT {$vat14}:</b></td>\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$inv['vat']}</b></td>\n\t\t\t\t<tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Date:</b>_____________________</td>\n\t\t\t\t\t<td><b>Total Incl VAT:</b></td>\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$inv['total']}</b></td>\n\t\t\t\t</tr>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</table>"; } // Retrieve template settings from Cubit db_conn("cubit"); $sql = "SELECT filename FROM template_settings WHERE template='invoices'"; $tsRslt = db_exec($sql) or errDie("Unable to retrieve the template settings from Cubit."); $template = pg_fetch_result($tsRslt, 0); $OUTPUT = "\n\t\t<script>\n\t\t\tsCostCenter('dt', 'Sales', '{$inv['odate']}', 'Invoice No.{$invnum} for Customer {$inv['cusname']} {$inv['surname']}', '" . ($TOTAL - $VAT) . "', 'Cost Of Sales for Invoice No.{$invnum}', '{$tcosamt}', '');\n\t\t</script>"; if (isset($email)) { $OUTPUT .= "\n\t\t\t<script>\n\t\t\t\tmove(\"invoices-email.php?evs={$inv['invid']}\");\n\t\t\t</script>"; require "template.php"; } if ($template == "invoice-print.php") { $OUTPUT .= $details; require "tmpl-print.php"; } else { $OUTPUT .= "\n\t\t\t<script>\n\t\t\t\tmove(\"{$template}?invid={$inv['invid']}&type=inv\");\n\t\t\t</script>"; require "template.php"; } }
function getHirenum($invid, $show_revision = 0) { $sql = "SELECT invnum FROM hire.hire_invoices WHERE invid='{$invid}'"; $inv_rslt = db_exec($sql) or errDie("Unable to retrieve invoice number."); $invnum = pg_fetch_result($inv_rslt, 0); if (empty($invnum)) { $sql = "SELECT invnum FROM hire.notes_reprint WHERE invid='{$invid}'"; $inv_rslt = db_exec($sql) or errDie("Unable to retrieve invoice number."); $invnum = pg_fetch_result($inv_rslt, 0); } if (!$invnum && !$show_revision) { $invnum = divlastid('hire', USER_DIV); } if ($show_revision) { $invnum = $invnum . rev($invid); } return $invnum; }
function cwrite($_GET) { $showvat = TRUE; extract($_GET); # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid invoice number."); if (isset($ctyp) && $ctyp == 's') { $v->isOk($cusnum, "num", 1, 20, "Invalid customer number."); } elseif (isset($ctyp) && $ctyp == 'c') { $v->isOk($deptid, "num", 1, 20, "Invalid Department."); } // if(isset($stkaccs)){ // foreach($stkaccs as $key => $accid){ // $v->isOk ($accid, "num", 1, 20, "Invalid Item Account number."); // } // }else{ // $v->isOk ($invid, "num", 0, 0, "Invalid Item Account number."); // } if (!isset($description) && !count($description)) { $v->addError(0, "No items selected."); } # display errors, if any if ($v->isError()) { $err = $v->genErrors(); $err .= "<input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $err; } // Update descriptions foreach ($description as $key => $value) { $sql = "UPDATE hire.hire_nons_inv_items SET description='{$value}' WHERE id='{$key}'"; db_exec($sql) or errDie("Unable to update descriptions."); } db_connect(); # Get invoice info $sql = "SELECT * FROM cubit.nons_invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "' and done='n'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); $td = $inv['odate']; # CHECK IF THIS DATE IS IN THE BLOCKED RANGE $blocked_date_from = getCSetting("BLOCKED_FROM"); $blocked_date_to = getCSetting("BLOCKED_TO"); if (strtotime($td) >= strtotime($blocked_date_from) and strtotime($td) <= 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>"; } db_connect(); # cust % bank if ($ctyp == 's') { $sql = "SELECT * FROM customers WHERE cusnum = '{$cusnum}' AND div = '" . USER_DIV . "'"; $custRslt = db_exec($sql) or errDie("Unable to view customer"); $cus = pg_fetch_array($custRslt); $details = "\r\n\t\t<tr><td>{$cus['surname']}</td></tr>\r\n\t\t<tr><td>" . nl2br($cus['addr1']) . "</td></tr>\r\n\t\t<tr><td>VAT No. {$cus['vatnum']}</td></tr>\r\n\t\t<tr><td>Customer Order Number: {$inv['cordno']}</td></tr>"; $na = $cus['surname']; } elseif ($ctyp == 'c') { $cus['surname'] = $inv['cusname']; $cus['addr1'] = $inv['cusaddr']; $cus["del_addr1"] = ""; $cus["paddr1"] = ""; db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$deptid}'"; $deptRslt = db_exec($sql) or errDie("Unable to view customers"); $dept = pg_fetch_array($deptRslt); $details = "\r\n\t\t<tr><td>{$inv['cusname']}</td></tr>\r\n\t\t<tr><td>" . nl2br($inv['cusaddr']) . "</td></tr>\r\n\t\t<tr><td>VAT No. {$inv['cusvatno']}</td></tr>\r\n\t\t<tr><td>Customer Order Number: {$inv['cordno']}</td></tr>"; $na = $inv['cusname']; } else { $cus["del_addr1"] = ""; $cus["paddr1"] = ""; $cus['surname'] = $inv['cusname']; $cus['addr1'] = $inv['cusaddr']; $details = "\r\n\t\t<tr><td>{$inv['cusname']}</td></tr>\r\n\t\t<tr><td>" . nl2br($inv['cusaddr']) . "</td></tr>\r\n\t\t<tr><td>VAT No. {$inv['cusvatno']}</td></tr>\r\n\t\t<tr><td>Customer Order Number: {$inv['cordno']}</td></tr>"; $na = $inv['cusname']; } # Begin updates $refnum = getrefnum(); /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "NO VAT"); $varacc = gethook("accnum", "salesacc", "name", "sales_variance"); /* - End Hooks - */ //lock(2); $real_invid = divlastid('inv', USER_DIV); //unlock(2); pglib_transaction("BEGIN") or errDie("Unable to start a database transaction."); /* --- Start Products Display --- */ # Products layout $products = ""; $disc = 0; # get selected stock in this invoice db_connect(); $sql = "SELECT * FROM hire.hire_nons_inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); # Put in product $i = 0; $page = 0; while ($stk = pg_fetch_array($stkdRslt)) { if ($i >= 25) { $page++; $i = 0; } $sql = "SELECT basis, hours, weeks,\r\n\t\t\t\t\textract('epoch' from from_date) AS e_from,\r\n\t\t\t\t\textract('epoch' from to_date) AS e_to\r\n\t\t\t\tFROM hire.hire_invitems\r\n\t\t\t\tWHERE id='{$stk['item_id']}'"; $hired_rslt = db_exec($sql) or errDie("Unable to retrieve items."); $hired_data = pg_fetch_array($hired_rslt); // -------------------------------------------------------------------- $sql = "SELECT * FROM cubit.assets WHERE id='{$stk['asset_id']}'"; $asset_rslt = db_exec($sql) or errDie("Unable to retrieve asset."); $asset_data = pg_fetch_array($asset_rslt); $sql = "SELECT traddisc FROM hire.hire_invoices WHERE invid='{$inv['hire_invid']}'"; $disc_rslt = db_exec($sql) or errDie("Unable to retrieve discount."); $traddisc = pg_fetch_result($disc_rslt, 0); $sql = "UPDATE hire.assets_hired SET return_time=CURRENT_TIMESTAMP\r\n\t\t\t\tWHERE item_id='{$stk['item_id']}'"; db_exec($sql) or errDie("Unable to update hired assets."); if (isset($monthly) && !$monthly) { if (!isSerialized($asset_data["id"])) { $new_qty = $asset_data["serial2"] + $stk["qty"]; $sql = "UPDATE cubit.assets SET serial2='{$new_qty}' WHERE id='{$stk['asset_id']}'"; db_exec($sql) or errDie("Unable to update assets."); } $hire_num = getHirenum($inv["hire_invid"]); if ($hire_num) { $sql = "SELECT * FROM hire.hire_invoices WHERE invnum='{$hire_num}'"; $hi_rslt = db_exec($sql) or errDie("Unable to retrieve invoices."); while ($hi_data = pg_fetch_array($hi_rslt)) { $sql = "DELETE FROM hire.hire_invitems\r\n\t\t\t\t\t\t\tWHERE invid='{$hi_data['invid']}'"; db_exec($sql) or errDie("Unable to remove old items."); } $sql = "DELETE FROM hire.hire_invoices WHERE invnum='{$hire_num}'"; db_exec($sql) or errDie("Unable to remove invoices."); $sql = "DELETE FROM hire.monthly_invoices WHERE invnum='{$hire_num}'"; db_exec($sql) or errDie("Unable to remove invoices."); $sql = "UPDATE hire.assets_hired SET return_time=current_timestamp\r\n\t\t\t\t\t\tWHERE invnum='{$hire_num}'"; db_exec($sql) or errDie("Unable to update return time."); } $sql = "DELETE FROM hire.hire_invitems WHERE id='{$stk['item_id']}'"; db_exec($sql) or errDie("Unable to remove returned item."); $sql = "DELETE FROM hire.monthly_invitems WHERE item_id='{$stk['item_id']}'"; db_exec($sql) or errDie("Unable to remove old items."); $sql = "UPDATE hire.assets_hired SET return_time=current_timestamp\r\n\t\t\t\t\tWHERE item_id='{$stk['item_id']}'"; db_exec($sql) or errDie("Unable to remove old items."); $sql = "DELETE FROM hire.monthly_invoices\r\n\t\t\t\t\tWHERE invid='{$inv['hire_invid']}'"; db_exec($sql) or errDie("Unable to remove monthly."); $sql = "DELETE FROM hire.hire_invitems\r\n\t\t\t\t\tWHERE invid='{$inv['hire_invid']}'"; db_exec($sql) or errDie("Unable to remove monthly."); } $stkacc = $stkaccs[$stk['id']]; $Sl = "SELECT * FROM vatcodes WHERE id='{$stk['vatex']}'"; $Ri = db_exec($Sl) or errDie("Unable to get data."); $vd = pg_fetch_array($Ri); if ($vd['zero'] == "Yes") { $stk['vatex'] = "y"; } //print $inv['chrgvat'];exit; if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") { $showvat = FALSE; } $t = $inv['chrgvat']; $VATP = TAX_VAT; # keep records for transactions if (isset($totstkamt[$stkacc])) { if ($stk['vatex'] == "y") { $totstkamt[$stkacc] += vats($stk['amt'], 'novat', $vd['vat_amount']); $va = 0; $inv['chrgvat'] = ""; } else { $totstkamt[$stkacc] += vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']); $va = sprint($stk['amt'] - vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($stk['amt'] * $vd['vat_amount'] / 100); } } } else { if ($stk['vatex'] == "y") { $totstkamt[$stkacc] = $stk['amt']; $inv['chrgvat'] = ""; $va = 0; } else { // Seems only this one is used for our hiring purposes $totstkamt[$stkacc] = $stk['amt']; $va = sprint($stk['amt'] - vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($stk['amt'] * $vd['vat_amount'] / 100); } } } // if(isset($totstkamt[$stkacc])){ // $totstkamt[$stkacc] += vats($stk['amt'], $inv['chrgvat']); // }else{ // $totstkamt[$stkacc] = vats($stk['amt'], $inv['chrgvat']); // } $sql = "UPDATE hire.hire_nons_inv_items SET accid = '{$stkacc}' WHERE id = '{$stk['id']}'"; $sRslt = db_exec($sql); if ($stk['vatex'] == 'y') { $ex = "#"; } else { $ex = " "; } // $time_from = "$from_day-$from_month-$from_year $from_hour:$from_minute"; // $time_to = "$to_day-$to_month-$to_year $to_hour:$to_minute"; if ($hired_data["weeks"]) { $hired_days = sprint($hired_data["weeks"] * 7); } elseif ($hired_data["e_from"] > 0) { $secs = $hired_data["e_to"] - $hired_data["e_from"]; $hired_days = sprint($secs / (60 * 60 * 24) + 1); } elseif ($hired_data["hours"]) { $secs = $hired_data["hours"] / 24; $hired_days = sprint($secs); } else { $hired_days = 0; } $hired_days = floor($hired_days); switch ($hired_data["basis"]) { case "per_hour": $basis = "Hourly"; $basis_s = "hour"; $basis_p = "per_hour"; break; case "per_day": $basis = "Daily"; $basis_s = "day"; $basis_p = "per_day"; break; case "per_week": $basis = "Weekly"; $basis_s = "week"; $basis_p = "per_week"; } $rate = basisPrice($inv["cusnum"], $stk["asset_id"], $basis_p); if (empty($rate)) { $rate = "0.00"; } $sql = "UPDATE hire.hire_nons_inv_items SET hired_days='{$hired_days}',\r\n\t\t\trate='{$rate}' WHERE id='{$stk['id']}'"; db_exec($sql) or errDie("Unable to save to items."); $products[$page][] = "<tr valign=top>\r\n\t\t\t<td style='border-right: 2px solid #000'>{$ex} {$stk['description']} </td>\r\n\t\t\t<td style='border-right: 2px solid #000'>{$stk['qty']} </td>\r\n\t\t\t<td style='border-right: 2px solid #000'>{$hired_days} </td>\r\n\t\t\t<td align='right' style='border-right: 2px solid #000'>({$basis}) " . sprint($rate) . " </td>\r\n\t\t\t<td align='right'>" . CUR . sprint($stk["amt"]) . " </td>\r\n\t\t</tr>"; $i++; } $inv['chrgvat'] = $t; $blank_lines = 25; foreach ($products as $key => $val) { $bl = $blank_lines - count($products[$key]); for ($i = 0; $i <= $bl; $i++) { $products[$key][] = "<tr>\r\n \t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n \t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n \t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n \t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n \t\t\t\t<td> </td>\r\n \t\t\t</tr>"; } } $sql = "INSERT INTO hire.hires (inv_id, user_id, cust_id, from_time)\r\n\t\t\tVALUES ('{$inv['invid']}', " . USER_ID . ", '{$inv['cusnum']}', CURRENT_TIMESTAMP)"; db_exec($sql) or errDie("Unable to create new hire."); /* --- Start Some calculations --- */ # Subtotal $SUBTOT = sprint($inv['subtot']); $VAT = sprint($inv['vat']); $TOTAL = sprint($inv['total']); /* --- End Some calculations --- */ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "novat"); /* - End Hooks - */ # todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); if (isset($bankid)) { $bankid += 0; db_conn("cubit"); $sql = "SELECT * FROM bankacct WHERE bankid = '{$inv['accid']}'"; $deptRslt = db_exec($sql) or errDie("Unable to view customers"); if (pg_numrows($deptRslt) < 1) { $error = "<li class=err>Bank not Found.</li>"; $confirm .= "{$error}<p><input type=button onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } else { $deptd = pg_fetch_array($deptRslt); } db_conn('core'); $Sl = "SELECT * FROM bankacc WHERE accid='{$bankid}'"; $rd = db_exec($Sl) or errDie("Unable to get data."); $data = pg_fetch_array($rd); $BA = $data['accnum']; } $tot_post = 0; # bank % cust if ($ctyp == 's') { # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$cus['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { $dept['deptname'] = "<li class=err>Department not Found.</li>"; } else { $dept = pg_fetch_array($deptRslt); } $tpp = 0; # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { $wamt += $inv["delivery"] / count($totstkamt); $wamt -= $inv["discount"] / count($totstkamt); # Debit Customer and Credit stock $tot_post += $wamt; writetrans($dept['debtacc'], $stkacc, $td, $refnum, $SUBTOT, "Non-Stock Sales on invoice No.{$real_invid} customer {$cus['surname']}."); } # Debit bank and credit the account involved if ($VAT != 0) { $tot_post += $VAT; writetrans($dept['debtacc'], $vatacc, $td, $refnum, $VAT, "Non-Stock Sales VAT received on invoice No.{$real_invid} customer {$cus['surname']}."); } $sdate = date("Y-m-d"); } else { if (!isset($accountc)) { $accountc = 0; } if (!isset($dept['pca'])) { $accountc += 0; $dept['pca'] = $accountc; $dept['debtacc'] = $accountc; } if (isset($bankid)) { $dept['pca'] = $BA; } $tpp = 0; # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { if (!isset($cust['surname'])) { $cust['surname'] = $inv['cusname']; $cust['addr1'] = $inv['cusaddr']; } # Debit Customer and Credit stock $wamt += $inv["delivery"] / count($totstkamt); $tot_post += $wamt; writetrans($dept['pca'], $stkacc, $td, $refnum, $wamt, "Non-Stock Sales on invoice No.{$real_invid} customer {$cust['surname']}."); } if (isset($bankid)) { db_connect(); $bankid += 0; $sql = "INSERT INTO cashbook(bankid, trantype, date, name, descript, cheqnum, amount, vat, chrgvat, banked, accinv, div) VALUES ('{$bankid}', 'deposit', '{$td}', '{$inv['cusname']}', 'Non-Stock Sales on invoice No.{$real_invid} customer {$inv['cusname']}', '0', '{$TOTAL}', '{$VAT}', '{$inv['chrgvat']}', 'no', '{$stkacc}', '" . USER_DIV . "')"; $Rslt = db_exec($sql) or errDie("Unable to add bank payment to database.", SELF); $sql = "UPDATE cubit.hire_nons_invoices SET jobid='{$bankid}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); } # Debit bank and credit the account involved if ($VAT != 0) { $tot_post += $VAT; writetrans($dept['pca'], $vatacc, $td, $refnum, $VAT, "Non-Stock Sales VAT received on invoice No.{$real_invid} customer {$cust['surname']}."); } $sdate = date("Y-m-d"); } $tot_post = sprint($tot_post); db_connect(); if ($ctyp == 's') { $sql = "UPDATE cubit.nons_invoices SET cusid = '{$cusnum}', ctyp = '{$ctyp}', cusname = '{$cus['surname']}', cusaddr = '{$cus['addr1']}', cusvatno = '{$cus['vatnum']}', done = 'y', invnum = '{$real_invid}', balance = total WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); // // # Record the payment on the statement // $sql = "INSERT INTO stmnt(cusnum, invid, docref, amount, date, type, div) VALUES('$cusnum', '$real_invid', '$inv[docref]', '$TOTAL','$inv[odate]', 'Non-Stock Invoice', '".USER_DIV."')"; // $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.",SELF); // // # Record the payment on the statement // $sql = "INSERT INTO open_stmnt(cusnum, invid, docref, amount, balance, date, type, div) VALUES('$cusnum', '$real_invid', '$inv[docref]', '$TOTAL', '$TOTAL','$inv[sdate]', 'Non-Stock Invoice', '".USER_DIV."')"; // $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 + '$TOTAL'::numeric(13,2)) WHERE cusnum = '$cusnum' AND div = '".USER_DIV."'"; // $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.",SELF); // // # Make ledge record // custledger($cusnum,$stkacc , $td, $real_invid, "Non Stock Invoice No. $real_invid", $TOTAL, "d"); // custDT($TOTAL, $cusnum, $td); // // $tot_dif=sprint($tot_post-$TOTAL); if (!isset($tot_dif)) { $tot_dif = 0; } if ($tot_dif > 0) { writetrans($varacc, $dept['debtacc'], $td, $refnum, $tot_dif, "Sales Variance on invoice {$real_invid}"); } elseif ($tot_dif < 0) { $tot_dif = $tot_dif * -1; writetrans($dept['debtacc'], $varacc, $td, $refnum, $tot_dif, "Sales Variance on invoice {$real_invid}"); } } else { $date = date("Y-m-d"); $sql = "UPDATE cubit.nons_invoices SET balance=total, cusname = '{$cust['surname']}', accid = '{$dept['pca']}', ctyp = '{$ctyp}', cusaddr = '{$cust['addr1']}', done = 'y', invnum = '{$real_invid}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); $tot_dif = sprint($tot_post - $TOTAL); if ($tot_dif > 0) { writetrans($varacc, $dept['pca'], $td, $refnum, $tot_dif, "Sales Variance on invoice {$real_invid}"); } elseif ($tot_dif < 0) { $tot_dif = $tot_dif * -1; writetrans($dept['pca'], $varacc, $td, $refnum, $tot_dif, "Sales Variance on invoice {$real_invid}"); } } db_connect(); $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\r\n\tVALUES('{$inv['odate']}', '{$invid}', '{$real_invid}', '{$dept['debtacc']}', '{$VAT}', '{$TOTAL}', 'non', '" . USER_DIV . "')"; $recRslt = db_exec($sql); com_invoice($inv['salespn'], $TOTAL - $VAT, 0, $real_invid, $inv["odate"]); db_conn('cubit'); if (!isset($cusnum)) { $cusnum = 0; } $Sl = "INSERT INTO sj(cid,name,des,date,exl,vat,inc,div) VALUES\r\n\t('{$cusnum}','{$na}','Non stock Invoice {$real_invid}','{$inv['sdate']}','" . sprint($TOTAL - $VAT) . "','{$VAT}','" . sprint($TOTAL) . "','" . USER_DIV . "')"; $Ri = db_exec($Sl); // Customer Statement ----------------------------------------------------- # Record the payment on the statement $sql = "INSERT INTO stmnt(cusnum, invid, docref, amount, date, type, div)\r\n\t\t\tVALUES('{$inv['cusnum']}', '{$inv['invid']}', '{$inv['invnum']}', '{$TOTAL}',\r\n\t\t\t\t'{$inv['odate']}', 'Hire Invoice H{$real_invid}', '" . USER_DIV . "')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record"); # Record the payment on the statement $sql = "INSERT INTO open_stmnt(cusnum, invid, docref, amount, balance,\r\n\t\t\t\tdate, type, div)\r\n\t\t\tVALUES ('{$inv['cusnum']}', '{$inv['invid']}', '{$inv['invnum']}', '{$TOTAL}',\r\n\t\t\t\t'{$TOTAL}', '{$inv['odate']}', 'Hire Invoice no H{$real_invid}', '" . USER_DIV . "')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record."); # Update the customer (make balance more) $sql = "UPDATE customers SET balance = (balance + '{$TOTAL}'::numeric(13,2))\r\n\t\t\tWHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); $stkacc = qryAccountsName("Hire Sales"); $stkacc = $stkacc["accid"]; # Make ledger record custledger($inv["cusnum"], $stkacc, $inv["odate"], $inv["invid"], "Hire Invoice No. H{$real_invid}", $TOTAL, "d"); custDT($TOTAL, $inv["cusnum"], $inv["odate"]); // ------------------------------------------------------------------------ # Get selected stock in this invoice $sql = "SELECT * FROM hire.hire_nons_inv_items\r\n\t\t\tWHERE invid='{$invid}' AND div='" . USER_DIV . "'"; $item_rslt = db_exec($sql) or errDie("Unable to retrieve items."); $item_count = pg_num_rows($item_rslt); $totamt = 0; while ($item_data = pg_fetch_array($item_rslt)) { $totamt += $item_data["amt"]; $sql = "SELECT * FROM cubit.assets WHERE id='{$item_data['asset_id']}'"; $asset_rslt = db_exec($sql) or errDie("Unable to retrieve asset."); $asset_data = pg_fetch_array($asset_rslt); $discount = $item_data["amt"] / 100 * $traddisc; // Add up revenue $sql = "INSERT INTO hire.revenue (group_id, asset_id, total, discount,\r\n\t\t\t\t\thire_invnum, inv_invnum, cusname)\r\n\t\t\t\tVALUES ('{$asset_data['grpid']}', '{$item_data['asset_id']}',\r\n\t\t\t\t\t'{$item_data['amt']}', '{$discount}', '{$hirenum}',\r\n\t\t\t\t\t'{$real_invid}', '{$inv['cusname']}')"; db_exec($sql) or errDie("Unable to update revenue"); $sql = "INSERT INTO cubit.nons_inv_items (invid, qty, description,\r\n\t\t\tdiv, amt, unitcost, vatex, accid, asset_id)\r\n\t\tVALUES ('{$invid}', '{$item_data['qty']}',\r\n\t\t\t'{$item_data['description']}', '{$item_data['div']}', '{$item_data['amt']}',\r\n\t\t\t'{$item_data['amt']}', '2', '{$item_data['accid']}', '{$item_data['asset_id']}')"; db_exec($sql) or errDie("Unable to add non stock items."); $sql = "UPDATE hire.assets_hired SET return_time=CURRENT_TIMESTAMP,\r\n\t\t\t\t\tinv_invnum='{$real_invid}', value='{$item_data['amt']}'\r\n\t\t\t\tWHERE item_id='{$item_data['item_id']}'"; db_exec($sql) or errDie("Unable to record asset return time."); } // Add the delivery discount to the total revenue if ($inv["delivery"]) { $discount = $inv["delivery"] / 100 * $traddisc; $sql = "INSERT INTO hire.revenue (discount)\r\n\t\t\t\tVALUES ('{$discount}')"; db_exec($sql) or errDie("Unable to update revenue"); } $cc = "<script> CostCenter('dt', 'Sales', '{$inv['odate']}', 'Non Stock Invoice No.{$real_invid}', '" . ($TOTAL - $VAT) . "', ''); </script>"; db_conn('cubit'); $Sl = "SELECT * FROM settings WHERE constant='SALES'"; $Ri = db_exec($Sl) or errDie("Unable to get settings."); $data = pg_fetch_array($Ri); if ($data['value'] == "Yes") { $sp = "<tr><td><b>Sales Person:</b> {$inv['salespn']}</td></tr>"; } else { $sp = ""; } if ($inv['chrgvat'] == "yes") { $inv['chrgvat'] = "Inclusive"; } elseif ($inv['chrgvat'] == "no") { $inv['chrgvat'] = "Exclusive"; } else { $inv['chrgvat'] = "No vat"; } if ($inv["remarks"] == "") { db_conn("cubit"); $sql = "SELECT value FROM settings WHERE constant='DEFAULT_COMMENTS'"; $commRslt = db_exec($sql) or errDie("Unable to retrieve the default comments from Cubit."); $inv["remarks"] = pg_fetch_result($commRslt, 0); } if (!isset($showvat)) { $showvat = TRUE; } if ($showvat == TRUE) { $vat14 = AT14; } else { $vat14 = ""; } // Retrieve the company information db_conn("cubit"); $sql = "SELECT * FROM compinfo"; $comp_rslt = db_exec($sql) or errDie("Unable to retrieve company information from Cubit."); $comp_data = pg_fetch_array($comp_rslt); // Retrieve the banking information db_conn("cubit"); $sql = "SELECT * FROM bankacct WHERE bankid='2' AND div='" . USER_DIV . "'"; $bank_rslt = db_exec($sql) or errDie("Unable to retrieve bank information from Cubit."); $bank_data = pg_fetch_array($bank_rslt); $table_borders = "\r\n\t\tborder-top: 2px solid #000000;\r\n\t\tborder-left: 2px solid #000000;\r\n\t\tborder-right: 2px solid #000000;\r\n\t\tborder-bottom: none;\r\n\t"; // $nolr_borders = " // border-top: 2px solid #000; // border-left: none; // border-right: none; // border-bottom: none; // "; $sql = "UPDATE hire.hire_invoices SET done='y', delivery='0.00'\r\n\t\t\tWHERE invnum='" . getHirenum($inv["hire_invid"]) . "'"; db_exec($sql) or errDie("Unable to update invoices."); vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "Non-Stock Sales, invoice No.{$real_invid}", $TOTAL, $inv["vat"]); $details = ""; $SUBTOT = sprint($totamt); for ($i = 0; $i <= $page; $i++) { if ($monthly) { $monthly_out = "\r\n\t\t\t<tr>\r\n\t\t\t\t<td style='border-right: 2px solid #000'>Invoiced to date " . date("d-m-Y") . "</td>\r\n\t\t\t</tr>"; } else { $monthly_out = ""; } // new page? if ($i > 1) { $details .= "<br style='page-break-after:always;'>"; } $products_out = ""; foreach ($products[$i] as $string) { $products_out .= $string; } $details .= "<center>\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table border='0' cellpadding='2' cellspacing='2' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td align='left' rowspan='2'><img src='../compinfo/getimg.php' width='230' height='47'></td>\r\n\t\t\t\t\t<td align='left' rowspan='2'><font size='5'><b>" . COMP_NAME . "</b></font></td>\r\n\t\t\t\t\t<td align='right'><font size='5'><b>Tax Invoice</b></font></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td valign='top'>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr1']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr1']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr2']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr2']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr3']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr3']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr4']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['postcode']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>REG:</b> {$comp_data['regnum']}</b> </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>{$bank_data['bankname']}</b> </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>VAT REG:</b> {$comp_data['vatnum']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Branch</b> {$bank_data['branchname']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Tel:</b> {$comp_data['tel']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Branch Code:</b> {$bank_data['branchcode']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Fax:</b> {$comp_data['fax']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Acc Num:</b> {$bank_data['accnum']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td><td valign='top'>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Date</b></td>\r\n\t\t\t\t\t<td><b>Page Number</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$inv['odate']}</td>\r\n\t\t\t\t\t<td>" . ($i + 1) . "</td>\r\n\t\t\t\t</tr>\r\n\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'> </td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000'> </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr><td> </td></tr>\r\n\t\t\t\t<tr><td> </td></tr>\r\n\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td colspan='2'><b>Invoice No:</b> {$real_invid}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td colspan='2'><b>Hire No:</b> {$hirenum}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t{$sp}\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td align='center'><font size='4'><b>Tax Invoice To:</b></font></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>{$cus['surname']}</b> </td>\r\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>Postal Address</b></td>\r\n\t\t\t\t\t<td width='33%'><b>Delivery Address</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>" . nl2br($cus["addr1"]) . " </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>" . nl2br($cus["paddr1"]) . " </td>\r\n\t\t\t\t\t<td>" . nl2br($cus["del_addr1"]) . " </td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>Customer VAT No:</b> {$inv['cusvatno']}</td>\r\n\t\t\t\t\t<td width='33%'><b>Customer Order No:</b> {$inv['cordno']}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'><b>Description</b></td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'><b>Qty</b></td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'><b>No of Days</b></td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'><b>Rate</b></td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000;' align='right'><b>Amount</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t{$products_out}\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><i>VAT Exempt Indicator: #</i></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>{$inv['remarks']}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='border: 2px solid #000000'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Terms:</b> {$inv['terms']} days</b></td>\r\n\t\t\t\t\t<td><b>Subtotal:</b></td>\r\n\t\t\t\t\t<td><b>" . CUR . "{$SUBTOT}</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t\t\t\t\t<td><b>Delivery</b></td>\r\n\t\t\t\t\t<td><b>" . CUR . "{$inv['delivery']}</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t\t\t\t\t<td><b>Discount</b></td>\r\n\t\t\t\t\t<td><b>" . CUR . "{$inv['discount']}</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t\t\t\t\t<td><b>VAT {$vat14}:</b></td>\r\n\t\t\t\t\t<td><b>" . CUR . "{$inv['vat']}</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Received in good order by:</b>_____________________</td>\r\n\t\t\t\t\t<td><b>Total Incl VAT:</b></td>\r\n\t\t\t\t\t<td><b>" . CUR . "{$inv['total']}</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t\t\t\t<tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Date:</b>_____________________</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t{$monthly_out}\r\n\t\t\t</table>\r\n\t\t</table>\r\n\t\t"; } $amt = $pcash + $pcheque + $pcc; $_POST["amt"] = $amt; $_POST["date"] = $inv["odate"]; recvpayment_write(); $sql = "UPDATE cubit.nons_invoices SET cash='{$pcash}' WHERE invid='{$inv['invid']}'"; db_exec($sql) or errDie("Unable to update cash value."); pglib_transaction("COMMIT"); // Retrieve the template settings from Cubit db_conn("cubit"); $sql = "SELECT filename FROM template_settings WHERE template='invoices'"; $tsRslt = db_exec($sql) or errDie("Unable to retrieve template settings from Cubit."); $template = pg_fetch_result($tsRslt, 0); if ($template == "invoice-print.php") { $OUTPUT = "<script> CostCenter('dt', 'Sales', '{$inv['odate']}', 'Non Stock Invoice No.{$real_invid}', '" . ($TOTAL - $VAT) . "', '');</script>\r\n\t\t\t{$details}"; require "../tmpl-print.php"; } else { $OUTPUT = "<script> CostCenter('dt', 'Sales', '{$inv['odate']}', 'Non Stock Invoice No.{$real_invid}', '" . ($TOTAL - $VAT) . "', '');\r\n\t\tmove (\"../{$template}?invid={$inv['invid']}&type=nons\");\r\n\t\t</script>"; require "template.php"; } }
function invoice() { extract($_REQUEST); $invnum = divlastid("inv"); $sql = "INSERT INTO cubit.invoices(deptid, chrgvat, odate, printed, done, \n\t\t\t\tusername, prd, invnum, div, systime, barcode, pickslip_id)\n\t\t\tVALUES ('" . USER_DIV . "', 'inc', current_date, 'n', 'n',\n\t\t\t\t'" . USER_NAME . "', '" . PRD_DB . "', '{$invnum}', '" . USER_DIV . "',\n\t\t\t\tcurrent_date, '{$barcode}', '{$slip_id}')"; $inv_rslt = db_exec($sql) or errDie("Unable to retrieve invoice."); $invid = lastinvid(); $sql = "SELECT stkid, whid, qty, vatcode FROM cubit.pickslip_stk\n\t\t\t\tLEFT JOIN cubit.stock ON pickslip_stk.stock_id=stock.stkid\n\t\t\t\tLEFT JOIN cubit.vatcodes WHERE stock.vatcode=vatcodes.code\n\t\t\tWHERE pickslip_id='{$slip_id}'"; $stock_rslt = db_exec($sql) or errDie("Unable to retrieve stock."); while (list($stkid, $whid, $qty, $vatcode) = pg_fetch_array($stock_rslt)) { $sql = "INSERT INTO cubit.inv_items (invid, whid, stkid, qty, div,\n\t\t\t\t\tvatcode)\n\t\t\t\tVALUES ('{$invid}', '{$whid}', '{$stkid}', '{$qty}', '" . USER_DIV . "',\n\t\t\t\t\t'{$vatcode}')"; db_exec($sql) or errDie("Unable to add inventory items."); } $OUTPUT = "\n\t<script>\n\t\tpopupOpen(\"cust-credit-stockinv.php?invid={$invid}&cont=true\");\n\t\tmove(\"" . SELF . "\");\n\t</script>"; return $OUTPUT; }
function cwrite($_GET) { $showvat = TRUE; extract($_GET); # validate input require_lib("validate"); $v = new validate(); $v->isOk($invid, "num", 1, 20, "Invalid invoice number."); if (isset($ctyp) && $ctyp == 's') { $v->isOk($cusnum, "num", 1, 20, "Invalid customer number."); } elseif (isset($ctyp) && $ctyp == 'c') { $v->isOk($deptid, "num", 1, 20, "Invalid Department."); } if (isset($stkaccs)) { foreach ($stkaccs as $key => $accid) { $v->isOk($accid, "num", 1, 20, "Invalid Item Account number."); } } else { $v->isOk($invid, "num", 0, 0, "Invalid Item Account number."); } # display errors, if any if ($v->isError()) { $err = $v->genErrors(); $err .= "<input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $err; } db_connect(); # Get invoice info $sql = "SELECT * FROM nons_invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "' and done='n'"; $invRslt = db_exec($sql) or errDie("Unable to get invoice information"); if (pg_numrows($invRslt) < 1) { return "<i class='err'>Not Found</i>"; } $inv = pg_fetch_array($invRslt); $td = $inv['odate']; db_connect(); # cust % bank if ($ctyp == 's') { $sql = "SELECT * FROM customers WHERE cusnum = '{$cusnum}' AND div = '" . USER_DIV . "'"; $custRslt = db_exec($sql) or errDie("Unable to view customer"); $cus = pg_fetch_array($custRslt); $details = "\r\n\t\t<tr><td>{$cus['surname']}</td></tr>\r\n\t\t<tr><td>" . nl2br($cus['addr1']) . "</td></tr>\r\n\t\t<tr><td>VAT No. {$cus['vatnum']}</td></tr>\r\n\t\t<tr><td>Customer Order Number: {$inv['cordno']}</td></tr>"; $na = $cus['surname']; } elseif ($ctyp == 'c') { $cus['surname'] = $inv['cusname']; $cus['addr1'] = $inv['cusaddr']; $cus["del_addr1"] = ""; $cus["paddr1"] = ""; db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$deptid}'"; $deptRslt = db_exec($sql) or errDie("Unable to view customers"); $dept = pg_fetch_array($deptRslt); $details = "\r\n\t\t<tr><td>{$inv['cusname']}</td></tr>\r\n\t\t<tr><td>" . nl2br($inv['cusaddr']) . "</td></tr>\r\n\t\t<tr><td>VAT No. {$inv['cusvatno']}</td></tr>\r\n\t\t<tr><td>Customer Order Number: {$inv['cordno']}</td></tr>"; $na = $inv['cusname']; } else { $cus["del_addr1"] = ""; $cus["paddr1"] = ""; $cus['surname'] = $inv['cusname']; $cus['addr1'] = $inv['cusaddr']; $details = "\r\n\t\t<tr><td>{$inv['cusname']}</td></tr>\r\n\t\t<tr><td>" . nl2br($inv['cusaddr']) . "</td></tr>\r\n\t\t<tr><td>VAT No. {$inv['cusvatno']}</td></tr>\r\n\t\t<tr><td>Customer Order Number: {$inv['cordno']}</td></tr>"; $na = $inv['cusname']; } # Begin updates $refnum = getrefnum(); /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "NO VAT"); $varacc = gethook("accnum", "salesacc", "name", "sales_variance"); /* - End Hooks - */ //lock(2); $real_invid = divlastid('inv', USER_DIV); //unlock(2); pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF); /* --- Start Products Display --- */ # Products layout $products = ""; $disc = 0; # get selected stock in this invoice db_connect(); $sql = "SELECT * FROM nons_inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $stkdRslt = db_exec($sql); # Put in product $i = 0; $page = 0; while ($stk = pg_fetch_array($stkdRslt)) { if ($i >= 25) { $page++; $i = 0; } $stkacc = $stkaccs[$stk['id']]; $Sl = "SELECT * FROM vatcodes WHERE id='{$stk['vatex']}'"; $Ri = db_exec($Sl) or errDie("Unable to get data."); $vd = pg_fetch_array($Ri); if ($vd['zero'] == "Yes") { $stk['vatex'] = "y"; } //print $inv['chrgvat'];exit; if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") { $showvat = FALSE; } $t = $inv['chrgvat']; $VATP = TAX_VAT; # keep records for transactions if (isset($totstkamt[$stkacc])) { if ($stk['vatex'] == "y") { $totstkamt[$stkacc] += vats($stk['amt'], 'novat', $vd['vat_amount']); $va = 0; $inv['chrgvat'] = ""; } else { $totstkamt[$stkacc] += vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']); $va = sprint($stk['amt'] - vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($stk['amt'] * $vd['vat_amount'] / 100); } } } else { if ($stk['vatex'] == "y") { $totstkamt[$stkacc] = $stk['amt']; $inv['chrgvat'] = ""; $va = 0; } else { $totstkamt[$stkacc] = vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']); $va = sprint($stk['amt'] - vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount'])); if ($inv['chrgvat'] == "no") { $va = sprint($stk['amt'] * $vd['vat_amount'] / 100); } } } vatr($vd['id'], $td, "OUTPUT", $vd['code'], $refnum, "Non-Stock Sales, invoice No.{$real_invid}", vats($stk['amt'], $inv['chrgvat'], $vd['vat_amount']) + $va, $va); if ($stk["asset_id"] > 0) { $asset_vat[$stk["id"]] = $va; } $inv['chrgvat'] = $t; // if(isset($totstkamt[$stkacc])){ // $totstkamt[$stkacc] += vats($stk['amt'], $inv['chrgvat']); // }else{ // $totstkamt[$stkacc] = vats($stk['amt'], $inv['chrgvat']); // } $sql = "UPDATE nons_inv_items SET accid = '{$stkacc}' WHERE id = '{$stk['id']}'"; $sRslt = db_exec($sql); if ($stk['vatex'] == 'y') { $ex = "#"; } else { $ex = " "; } $products[$page][] = "\r\n\t\t\t<tr valign=top>\r\n\t\t\t\t<td style='border-right: 2px solid #000'>{$ex} {$stk['description']} </td>\r\n\t\t\t\t<td style='border-right: 2px solid #000'>{$stk['qty']} </td>\r\n\t\t\t\t<td align='right' style='border-right: 2px solid #000'>{$stk['unitcost']} </td>\r\n\t\t\t\t<td align='right'>" . CUR . " {$stk['amt']} </td>\r\n\t\t\t</tr>"; $i++; } $blank_lines = 25; foreach ($products as $key => $val) { $bl = $blank_lines - count($products[$key]); for ($i = 0; $i <= $bl; $i++) { $products[$key][] = "\r\n\t \t\t\t<tr>\r\n\t \t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t \t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t \t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t \t\t\t\t<td> </td>\r\n\t \t\t\t</tr>"; } } /* --- Start Some calculations --- */ # Subtotal $SUBTOT = sprint($inv['subtot']); $VAT = sprint($inv['vat']); $TOTAL = sprint($inv['total']); /* --- End Some calculations --- */ /* - Start Hooks - */ $vatacc = gethook("accnum", "salesacc", "name", "VAT", "novat"); /* - End Hooks - */ # todays date $date = date("d-m-Y"); $sdate = date("Y-m-d"); if (isset($bankid)) { $bankid += 0; db_conn("cubit"); $sql = "SELECT * FROM bankacct WHERE bankid = '{$inv['accid']}'"; $deptRslt = db_exec($sql) or errDie("Unable to view customers"); if (pg_numrows($deptRslt) < 1) { $error = "<li class='err'> Bank not Found.</li>"; $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='« Correct submission'>"; return $confirm; } else { $deptd = pg_fetch_array($deptRslt); } db_conn('core'); $Sl = "SELECT * FROM bankacc WHERE accid='{$bankid}'"; $rd = db_exec($Sl) or errDie("Unable to get data."); $data = pg_fetch_array($rd); $BA = $data['accnum']; } $tot_post = 0; # bank % cust if ($ctyp == 's') { # Get department db_conn("exten"); $sql = "SELECT * FROM departments WHERE deptid = '{$cus['deptid']}' AND div = '" . USER_DIV . "'"; $deptRslt = db_exec($sql); if (pg_numrows($deptRslt) < 1) { $dept['deptname'] = "<li class='err'>Department not Found.</li>"; } else { $dept = pg_fetch_array($deptRslt); } $tpp = 0; # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { # Debit Customer and Credit stock $tot_post += $wamt; writetrans($dept['debtacc'], $stkacc, $td, $refnum, $wamt, "Non-Stock Sales on invoice No.{$real_invid} customer {$cus['surname']}."); } # Debit bank and credit the account involved if ($VAT != 0) { $tot_post += $VAT; writetrans($dept['debtacc'], $vatacc, $td, $refnum, $VAT, "Non-Stock Sales VAT received on invoice No.{$real_invid} customer {$cus['surname']}."); } $sdate = date("Y-m-d"); $asset_dtacc = $dept["debtacc"]; } else { if (!isset($accountc)) { $accountc = 0; } if (!isset($dept['pca'])) { $accountc += 0; $dept['pca'] = $accountc; $dept['debtacc'] = $accountc; } if (isset($bankid)) { $dept['pca'] = $BA; } $tpp = 0; # record transaction from data foreach ($totstkamt as $stkacc => $wamt) { if (!isset($cust['surname'])) { $cust['surname'] = $inv['cusname']; $cust['addr1'] = $inv['cusaddr']; } # Debit Customer and Credit stock $tot_post += $wamt; writetrans($dept['pca'], $stkacc, $td, $refnum, $wamt, "Non-Stock Sales on invoice No.{$real_invid} customer {$cust['surname']}."); } if (isset($bankid)) { db_connect(); $bankid += 0; $sql = "INSERT INTO cashbook(bankid, trantype, date, name, descript, cheqnum, amount, vat, chrgvat, banked, accinv, div) VALUES ('{$bankid}', 'deposit', '{$td}', '{$inv['cusname']}', 'Non-Stock Sales on invoice No.{$real_invid} customer {$inv['cusname']}', '0', '{$TOTAL}', '{$VAT}', '{$inv['chrgvat']}', 'no', '{$stkacc}', '" . USER_DIV . "')"; $Rslt = db_exec($sql) or errDie("Unable to add bank payment to database.", SELF); $sql = "UPDATE nons_invoices SET jobid='{$bankid}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); } # Debit bank and credit the account involved if ($VAT != 0) { $tot_post += $VAT; writetrans($dept['pca'], $vatacc, $td, $refnum, $VAT, "Non-Stock Sales VAT received on invoice No.{$real_invid} customer {$cust['surname']}."); } $sdate = date("Y-m-d"); $asset_dtacc = $dept["pca"]; } $tot_post = sprint($tot_post); db_connect(); if ($ctyp == 's') { $sql = "UPDATE nons_invoices SET balance = total, cusid = '{$cusnum}', ctyp = '{$ctyp}', cusname = '{$cus['surname']}', cusaddr = '{$cus['addr1']}', cusvatno = '{$cus['vatnum']}', done = 'y', invnum = '{$real_invid}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); # Record the payment on the statement $sql = "INSERT INTO stmnt(cusnum, invid, docref, amount, date, type, div) VALUES('{$cusnum}', '{$real_invid}', '{$inv['docref']}', '{$TOTAL}','{$inv['odate']}', 'Non-Stock Invoice', '" . USER_DIV . "')"; $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF); # Record the payment on the statement $sql = "INSERT INTO open_stmnt(cusnum, invid, docref, amount, balance, date, type, div) VALUES('{$cusnum}', '{$real_invid}', '{$inv['docref']}', '{$TOTAL}', '{$TOTAL}','{$inv['sdate']}', 'Non-Stock Invoice', '" . USER_DIV . "')"; $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 + '{$TOTAL}'::numeric(13,2)) WHERE cusnum = '{$cusnum}' AND div = '" . USER_DIV . "'"; $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF); # Make ledge record custledger($cusnum, $stkacc, $td, $real_invid, "Non Stock Invoice No. {$real_invid}", $TOTAL, "d"); custDT($TOTAL, $cusnum, $td); $tot_dif = sprint($tot_post - $TOTAL); if ($tot_dif > 0) { writetrans($varacc, $dept['debtacc'], $td, $refnum, $tot_dif, "Sales Variance on invoice {$real_invid}"); } elseif ($tot_dif < 0) { $tot_dif = $tot_dif * -1; writetrans($dept['debtacc'], $varacc, $td, $refnum, $tot_dif, "Sales Variance on invoice {$real_invid}"); } } else { $date = date("Y-m-d"); $sql = "UPDATE nons_invoices SET balance=total, cusname = '{$cust['surname']}', accid = '{$dept['pca']}', ctyp = '{$ctyp}', cusaddr = '{$cust['addr1']}', done = 'y', invnum = '{$real_invid}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; $upRslt = db_exec($sql) or errDie("Unable to update invoice information"); $tot_dif = sprint($tot_post - $TOTAL); if ($tot_dif > 0) { writetrans($varacc, $dept['pca'], $td, $refnum, $tot_dif, "Sales Variance on invoice {$real_invid}"); } elseif ($tot_dif < 0) { $tot_dif = $tot_dif * -1; writetrans($dept['pca'], $varacc, $td, $refnum, $tot_dif, "Sales Variance on invoice {$real_invid}"); } } $sql = "SELECT * FROM cubit.nons_inv_items WHERE invid='{$invid}'"; $nii_rslt = db_exec($sql) or errDie("Unable to retrieve items."); while ($nii_data = pg_fetch_array($nii_rslt)) { if ($nii_data["asset_id"] > 0) { $asset_vatamt = $asset_vat[$nii_data["id"]]; if ($inv['chrgvat'] == "yes") { $asset_amt = sprint($nii_data["amt"] - $asset_vatamt); } else { if ($inv['chrgvat'] == "no") { $asset_amt = $nii_data["amt"]; } } asset_accounting($nii_data["asset_id"], $nii_data["qty"], $refnum, $asset_amt, $asset_vatamt, $inv["odate"], $invid, $asset_dtacc, $nii_data["accid"]); } } db_connect(); $sql = "INSERT INTO salesrec(edate, invid, invnum, debtacc, vat, total, typ, div)\r\n\tVALUES('{$inv['odate']}', '{$invid}', '{$real_invid}', '{$dept['debtacc']}', '{$VAT}', '{$TOTAL}', 'non', '" . USER_DIV . "')"; $recRslt = db_exec($sql); com_invoice($inv['salespn'], $TOTAL - $VAT, 0, $real_invid, $inv["odate"]); db_conn('cubit'); if (!isset($cusnum)) { $cusnum = 0; } $Sl = "INSERT INTO sj(cid,name,des,date,exl,vat,inc,div) VALUES\r\n\t('{$cusnum}','{$na}','Non stock Invoice {$real_invid}','{$inv['sdate']}','" . sprint($TOTAL - $VAT) . "','{$VAT}','" . sprint($TOTAL) . "','" . USER_DIV . "')"; $Ri = db_exec($Sl); # Commit updates pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF); # Get selected stock in this invoice $sql = "SELECT * FROM nons_inv_items WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'"; # $stkdRslt = db_exec($sql); $date = date("d-m-Y"); $cc = "<script> CostCenter('dt', 'Sales', '{$inv['odate']}', 'Non Stock Invoice No.{$real_invid}', '" . ($TOTAL - $VAT) . "', ''); </script>"; db_conn('cubit'); $Sl = "SELECT * FROM settings WHERE constant='SALES'"; $Ri = db_exec($Sl) or errDie("Unable to get settings."); $data = pg_fetch_array($Ri); if ($data['value'] == "Yes") { $sp = "<tr><td><b>Sales Person:</b> {$inv['salespn']}</td></tr>"; } else { $sp = ""; } if ($inv['chrgvat'] == "yes") { $inv['chrgvat'] = "Inclusive"; } elseif ($inv['chrgvat'] == "no") { $inv['chrgvat'] = "Exclusive"; } else { $inv['chrgvat'] = "No vat"; } if ($inv["remarks"] == "") { db_conn("cubit"); $sql = "SELECT value FROM settings WHERE constant='DEFAULT_COMMENTS'"; $commRslt = db_exec($sql) or errDie("Unable to retrieve the default comments from Cubit."); $inv["remarks"] = pg_fetch_result($commRslt, 0); } if (!isset($showvat)) { $showvat = TRUE; } if ($showvat == TRUE) { $vat14 = AT14; } else { $vat14 = ""; } // Retrieve the company information db_conn("cubit"); $sql = "SELECT * FROM compinfo"; $comp_rslt = db_exec($sql) or errDie("Unable to retrieve company information from Cubit."); $comp_data = pg_fetch_array($comp_rslt); // Retrieve the banking information db_conn("cubit"); $sql = "SELECT * FROM bankacct WHERE bankid='2' AND div='" . USER_DIV . "'"; $bank_rslt = db_exec($sql) or errDie("Unable to retrieve bank information from Cubit."); $bank_data = pg_fetch_array($bank_rslt); $table_borders = "\r\n\t\tborder-top: 2px solid #000000;\r\n\t\tborder-left: 2px solid #000000;\r\n\t\tborder-right: 2px solid #000000;\r\n\t\tborder-bottom: none;\r\n\t"; // $nolr_borders = " // border-top: 2px solid #000; // border-left: none; // border-right: none; // border-bottom: none; // "; $details = ""; for ($i = 0; $i <= $page; $i++) { // new page? if ($i > 1) { $details .= "<br style='page-break-after:always;'>"; } $products_out = ""; foreach ($products[$i] as $string) { $products_out .= $string; } $details .= "<center>\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table border='0' cellpadding='2' cellspacing='2' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td align='left' rowspan='2'><img src='compinfo/getimg.php' width=230 height=47></td>\r\n\t\t\t\t\t<td align='left' rowspan='2'><font size='5'><b>" . COMP_NAME . "</b></font></td>\r\n\t\t\t\t\t<td align='right'><font size='5'><b>Tax Invoice</b></font></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td valign='top'>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr1']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr1']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr2']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr2']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr3']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr3']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr4']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['postcode']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>REG:</b> {$comp_data['regnum']}</b> </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>{$bank_data['bankname']}</b> </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>VAT REG:</b> {$comp_data['vatnum']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Branch</b> {$bank_data['branchname']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Tel:</b> {$comp_data['tel']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Branch Code:</b> {$bank_data['branchcode']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Fax:</b> {$comp_data['fax']} </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Acc Num:</b> {$bank_data['accnum']} </td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td><td valign='top'>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Date</b></td>\r\n\t\t\t\t\t<td><b>Page Number</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$inv['odate']}</td>\r\n\t\t\t\t\t<td>" . ($i + 1) . "</td>\r\n\t\t\t\t</tr>\r\n\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'> </td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000'> </td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr><td> </td></tr>\r\n\t\t\t\t<tr><td> </td></tr>\r\n\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td colspan='2'><b>Invoice No:</b> {$real_invid}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td colspan='2'><b>Proforma Inv No:</b> {$inv['docref']}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t{$sp}\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td align='center'><font size='4'><b>Tax Invoice To:</b></font></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>{$cus['surname']}</b> </td>\r\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>Postal Address</b></td>\r\n\t\t\t\t\t<td width='33%'><b>Delivery Address</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>" . nl2br($cus["addr1"]) . " </td>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'>" . nl2br($cus["paddr1"]) . " </td>\r\n\t\t\t\t\t<td>" . nl2br($cus["del_addr1"]) . " </td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>Customer VAT No:</b> {$inv['cusvatno']}</td>\r\n\t\t\t\t\t<td width='33%'><b>Customer Order No:</b> {$inv['cordno']}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'><b>Description</b></td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'><b>Qty</b></td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000' align='right'><b>Unit Price</b></td>\r\n\t\t\t\t\t<td style='border-bottom: 2px solid #000;' align='right'><b>Amount</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t{$products_out}\r\n\t\t\t</table>\r\n\t\t\t</td></tr>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><i>VAT Exempt Indicator: #</i></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>{$inv['remarks']}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t</table>\r\n\r\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='border: 2px solid #000000'>\r\n\t\t\t<tr><td>\r\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Terms:</b> {$inv['terms']} days</b></td>\r\n\t\t\t\t\t<td><b>Subtotal:</b></td>\r\n\t\t\t\t\t<td><b>" . CUR . "{$inv['subtot']}</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t\t\t\t\t<td><b>VAT {$vat14}:</b></td>\r\n\t\t\t\t\t<td><b>" . CUR . "{$inv['vat']}</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Received in good order by:</b>_____________________</td>\r\n\t\t\t\t\t<td><b>Total Incl VAT:</b></td>\r\n\t\t\t\t\t<td><b>" . CUR . "{$inv['total']}</b></td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'> </td>\r\n\t\t\t\t<tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Date:</b>_____________________</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t</table>\r\n\t\t"; } // Retrieve the template settings from Cubit db_conn("cubit"); $sql = "SELECT filename FROM template_settings WHERE template='invoices'"; $tsRslt = db_exec($sql) or errDie("Unable to retrieve template settings from Cubit."); $template = pg_fetch_result($tsRslt, 0); if ($template == "invoice-print.php") { $OUTPUT = "<script> CostCenter('dt', 'Sales', '{$inv['odate']}', 'Non Stock Invoice No.{$real_invid}', '" . ($TOTAL - $VAT) . "', '');</script>\r\n\t\t\t{$details}"; require "tmpl-print.php"; } else { $OUTPUT = "<script> CostCenter('dt', 'Sales', '{$inv['odate']}', 'Non Stock Invoice No.{$real_invid}', '" . ($TOTAL - $VAT) . "', '');\r\n\t\tmove (\"{$template}?invid={$inv['invid']}&type=nons\");\r\n\t\t</script>"; require "template.php"; } }
function create_dummy($deptid, $supid) { # Get selected supplier info db_connect(); $sql = "SELECT * FROM suppliers WHERE supid = '{$supid}' AND div = '" . USER_DIV . "'"; $supRslt = db_exec($sql) or errDie("Unable to get supplier information"); $sup = pg_fetch_array($supRslt); # Dummy Vars $remarks = ""; $supaddr = ""; $terms = "0"; $total = 0; $subtot = 0; // $pdate = date("Y-m-d"); $ddate = date("Y-m-d"); $shipchrg = "0.00"; $fcid = $sup['fcid']; $curr = getSymbol($fcid); $xrate = getRate($fcid); $purnum = divlastid("pur", USER_DIV); $trans_date_setting = getCSetting("USE_TRANSACTION_DATE"); if (isset($trans_date_setting) and $trans_date_setting == "yes") { $trans_date_value = getCSetting("TRANSACTION_DATE"); $date_arr = explode("-", $trans_date_value); $date_year = $date_arr[0]; $date_month = $date_arr[1]; $date_day = $date_arr[2]; } else { $date_year = date("Y"); $date_month = date("m"); $date_day = date("d"); } $pdate = "{$date_year}-{$date_month}-{$date_day}"; # Insert Order to DB $sql = "\n\t\tINSERT INTO nons_purch_int (\n\t\t\tdeptid, supid, supplier, supaddr, terms, pdate, ddate, shipchrg, xrate, fcid, \n\t\t\tcurr, subtot, total, balance, tax, remarks, received, done, prd, \n\t\t\tdiv, purnum\n\t\t) VALUES (\n\t\t\t'{$deptid}', '{$supid}', '', '{$supaddr}', '{$terms}', '{$pdate}', '{$ddate}', '{$shipchrg}', '{$xrate}', '{$fcid}', \n\t\t\t'{$curr['symbol']}', '{$subtot}', '{$total}', '{$total}', '0', '{$remarks}', 'n', 'n', '" . PRD_DB . "', \n\t\t\t'" . USER_DIV . "', '{$purnum}'\n\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert Non-Stock Order to Cubit.", SELF); # Get next ordnum $purid = pglib_lastid("nons_purch_int", "purid"); return $purid; }
/** * @ignore */ function fintInvoice($cusnum, $total, $rate) { $ftotal = sprint($total * $rate); db_connect(); $sql = "SELECT * FROM customers WHERE cusnum = '{$cusnum}' AND div = '" . USER_DIV . "'"; $custRslt = db_exec($sql) or errDie("Unable to view customer"); $cus = pg_fetch_array($custRslt); $curr = getSymbol($cus['fcid']); $xrate = getRate($cus['fcid']); # Default data $sdate = date("Y-m-d"); $invnum = divlastid('inv', USER_DIV); db_connect(); # Insert purchase to DB $sql = "\n\t\tINSERT INTO nons_invoices (\n\t\t\tcusid, cusname, cusaddr, cusvatno, chrgvat, \n\t\t\tfcid, currency, xrate, sdate, subtot, \n\t\t\tbalance, fbalance, vat, total, done, \n\t\t\tusername, prd, invnum, typ, ctyp, \n\t\t\ttval, location, descrip, div, odate\n\t\t) VALUES (\n\t\t\t'{$cus['cusnum']}', '{$cus['cusname']} {$cus['surname']}', '{$cus['addr1']}', '{$cus['vatnum']}', 'none', \n\t\t\t'{$cus['fcid']}', '{$curr['symbol']}', '{$xrate}', '{$sdate}', '{$total}', \n\t\t\t'{$ftotal}', '{$total}', 0, '{$total}', 'y', \n\t\t\t'" . USER_NAME . "', '" . PRD_DB . "', '{$invnum}', 'inv', 's', \n\t\t\t'{$cusnum}', 'int', 'Interest Charged', '" . USER_DIV . "', '{$sdate}'\n\t\t)"; $rslt = db_exec($sql) or errDie("Unable to create Interest Invoice.", SELF); # Get next ordnum $invid = lastinvid(); # Insert purchase items $sql = "\n\t\tINSERT INTO nons_inv_items (\n\t\t\tinvid, qty, amt, cunitcost, unitcost, \n\t\t\tdescription, div\n\t\t) VALUES (\n\t\t\t'{$invid}', '1', '{$total}', '{$ftotal}', '{$total}', \n\t\t\t'Interest on Outstanding Invoices.', '" . USER_DIV . "'\n\t\t)"; $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF); return $invnum; }