From: <te...@us...> - 2014-06-16 06:01:16
|
Revision: 6754 http://sourceforge.net/p/web-erp/reponame/6754 Author: tehonu Date: 2014-06-16 06:01:12 +0000 (Mon, 16 Jun 2014) Log Message: ----------- New function Related Items. Useful for online shops and other internal business needs Modified Paths: -------------- trunk/SelectProduct.php trunk/sql/mysql/upgrade4.11-4.12.sql Added Paths: ----------- trunk/RelatedItemsUpdate.php Added: trunk/RelatedItemsUpdate.php =================================================================== --- trunk/RelatedItemsUpdate.php (rev 0) +++ trunk/RelatedItemsUpdate.php 2014-06-16 06:01:12 UTC (rev 6754) @@ -0,0 +1,208 @@ +<?php + +include('includes/session.inc'); + +$Title = _('Update Related Items'); + +include('includes/header.inc'); +include('includes/SQL_CommonFunctions.inc'); + +//initialise no input errors assumed initially before we test +$InputError = 0; + + +if (isset($_GET['Item'])){ + $Item = trim(mb_strtoupper($_GET['Item'])); +}elseif (isset($_POST['Item'])){ + $Item = trim(mb_strtoupper($_POST['Item'])); +} +if (isset($_GET['Related'])){ + $Related = trim(mb_strtoupper($_GET['Related'])); +}elseif (isset($_POST['Related'])){ + $Related = trim(mb_strtoupper($_POST['Related'])); +} +echo '<p class="page_title_text"><img src="'.$RootPath.'/css/'.$Theme.'/images/inventory.png" title="' . _('Search') . '" alt="" />' . $Title . '</p>'; + +echo '<a href="' . $RootPath . '/SelectProduct.php">' . _('Back to Items') . '</a><br />'; + + +$result = DB_query("SELECT stockmaster.description + FROM stockmaster + WHERE stockmaster.stockid='".$Item."'",$db); +$myrow = DB_fetch_row($result); + +if (DB_num_rows($result)==0){ + prnMsg( _('The part code entered does not exist in the database') . ': ' . $Item . _('Only valid parts can have related items entered against them'),'error'); + $InputError=1; +} + + +if (!isset($Item)){ + echo '<p>'; + prnMsg (_('An item must first be selected before this page is called') . '. ' . _('The product selection page should call this page with a valid product code'),'error'); + include('includes/footer.inc'); + exit; +} + +$PartDescription = $myrow[0]; + +if (isset($_POST['submit'])) { + + /* actions to take once the user has clicked the submit button + ie the page has called itself with some user input */ + + //first off validate inputs sensible + // This gives some date in 1999?? $ZeroDate = Date($_SESSION['DefaultDateFormat'],Mktime(0,0,0,0,0,0)); + + $result_related = DB_query("SELECT stockmaster.description, + stockmaster.mbflag + FROM stockmaster + WHERE stockmaster.stockid='".$_POST['Related']."'",$db); + $myrow_related = DB_fetch_row($result_related); + + if (DB_num_rows($result_related)==0){ + prnMsg( _('The part code entered as related item does not exist in the database') . ': ' . $_POST['Related'] . _('Only valid parts can be related items'),'error'); + $InputError=1; + } + + $sql = "SELECT related + FROM relateditems + WHERE stockid='".$Item."' + AND related = '" . $_POST['Related'] . "'"; + $result = DB_query($sql, $db); + $myrow = DB_fetch_row($result); + + if (DB_num_rows($result)!=0){ + prnMsg( _('This related item has already been entered.') , 'warn'); + $InputError =1; + } + + if ($InputError !=1) { + $sql = "INSERT INTO relateditems (stockid, + related) + VALUES ('" . $Item . "', + '" . $_POST['Related'] . "')"; + $ErrMsg = _('The new related item could not be added'); + $result = DB_query($sql,$db,$ErrMsg); + + prnMsg($_POST['Related'] . ' ' . _('is now related to') . ' ' . $Item,'success'); + + /* It is safe to assume that, if A is related to B, B is related to A */ + $sql_reverse = "SELECT related + FROM relateditems + WHERE stockid='".$_POST['Related']."' + AND related = '" . $Item . "'"; + $result_reverse = DB_query($sql_reverse, $db); + $myrow_reverse = DB_fetch_row($result_reverse); + + if (DB_num_rows($myrow_reverse)==0){ + $sql = "INSERT INTO relateditems (stockid, + related) + VALUES ('" . $_POST['Related'] . "', + '" . $Item . "')"; + $ErrMsg = _('The new related item could not be added'); + $result = DB_query($sql,$db,$ErrMsg); + prnMsg($Item . ' ' . _('is now related to') . ' ' . $_POST['Related'],'success'); + } + } + + unset($_POST['Related']); + +} elseif (isset($_GET['delete'])) { +//the link to delete a selected record was clicked instead of the submit button + + /* Again it is safe to assume that we have to delete both relations A to B and B to A */ + + $sql="DELETE FROM relateditems + WHERE (stockid = '". $Item ."' AND related ='". $_GET['Related'] ."') + OR (stockid = '". $_GET['Related'] ."' AND related ='". $Item ."')"; + $ErrMsg = _('Could not delete this relationshop'); + $result = DB_query($sql,$db,$ErrMsg); + prnMsg( _('This relationship has been deleted'),'success'); + +} + +//Always do this stuff + +$sql = "SELECT stockmaster.stockid, + stockmaster.description + FROM stockmaster, relateditems + WHERE stockmaster.stockid = relateditems.related + AND relateditems.stockid='".$Item."'"; + +$result = DB_query($sql,$db); + +if (DB_num_rows($result) > 0) { + echo '<form method="post" action="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') . '">'; + echo '<div>'; + echo '<table class="selection"> + <tr> + <th colspan="3"> + <input type="hidden" name="FormID" value="' . $_SESSION['FormID'] . '" />' . + _('Related Items To') . ': + <input type="text" required="required" autofocus="autofocus" name="Item" size="22" value="' . $Item . '" maxlength="20" /> + <input type="submit" name="NewPart" value="' . _('List Related Items') . '" /></th> + </tr>'; + + echo '<tbody> + <tr> + <th class="ascending">' . _('Code') . '</th> + <th class="ascending">' . _('Description') . '</th> + <th>' . _('Delete') . '</th> + </tr>'; + + $k=0; //row colour counter + while ($myrow = DB_fetch_array($result)) { + if ($k==1){ + echo '<tr class="EvenTableRows">'; + $k=0; + } else { + echo '<tr class="OddTableRows">'; + $k=1; + } + + echo '<td>' . $myrow['stockid'] . '</td> + <td>' . $myrow['description'] . '</td>'; + echo '<td><a href="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') . '?Item=' . $Item . '&Related=' . $myrow['stockid'] . '&delete=yes" onclick="return confirm(\'' . _('Are you sure you wish to delete this relationship?') . '\');">' . _('Delete') . '</a></td>'; + echo '</tr>'; + + } + //END WHILE LIST LOOP + echo '</tbody></table><br />'; + echo '</div> + </form>'; +} else { + prnMsg(_('There are no items related set up for this part'),'warn'); +} + +echo '<form method="post" action="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') . '?Item=' . $Item . '">'; +echo '<div>'; +echo '<input type="hidden" name="FormID" value="' . $_SESSION['FormID'] . '" />'; +if (isset($_GET['Edit'])){ + /*the price sent with the get is sql format price so no need to filter */ + $_POST['Related'] = $_GET['Related']; +} + +echo '<br /><table class="selection">'; + +echo '<tr><th colspan="5"><h3>' . $Item . ' - ' . $PartDescription . '</h3></th></tr>'; + +echo '<tr><td>' . _('Related Item Code') . ':</td> + <td> + <input type="text" class="text" required="required" name="Related" size="21" maxlength="20" value="'; + if (isset($_POST['Related'])) { + echo $_POST['Related']; + } + echo '" /> + </td></tr> +</table> +<br /><div class="centre"> +<input type="submit" name="submit" value="' . _('Enter') . '/' . _('Amend Relation') . '" /> +</div>'; + + +echo '</div> + </form>'; +include('includes/footer.inc'); + +?> \ No newline at end of file Modified: trunk/SelectProduct.php =================================================================== --- trunk/SelectProduct.php 2014-06-14 16:08:55 UTC (rev 6753) +++ trunk/SelectProduct.php 2014-06-16 06:01:12 UTC (rev 6754) @@ -501,6 +501,7 @@ } echo '<a href="' . $RootPath . '/DiscountCategories.php?StockID=' . $StockID . '">' . _('Maintain Discount Category') . '</a><br />'; echo '<a href="' . $RootPath . '/StockClone.php?OldStockID=' . $StockID . '">' . _('Clone This Item') . '</a><br />'; + echo '<a href="' . $RootPath . '/RelatedItemsUpdate.php?Item=' . $StockID . '">' . _('Maintain Related Items') . '</a><br />'; echo '<a href="' . $RootPath . '/PriceMatrix.php?StockID=' . $StockID . '">' . _('Maintain Price Matrix') . '</a><br />'; } echo '</td></tr></table>'; Modified: trunk/sql/mysql/upgrade4.11-4.12.sql =================================================================== --- trunk/sql/mysql/upgrade4.11-4.12.sql 2014-06-14 16:08:55 UTC (rev 6753) +++ trunk/sql/mysql/upgrade4.11-4.12.sql 2014-06-16 06:01:12 UTC (rev 6754) @@ -32,6 +32,16 @@ ALTER TABLE `debtortrans` CHANGE `consignment` `consignment` VARCHAR( 20 ) NOT NULL DEFAULT ''; ALTER TABLE `workorders` ADD `closecomments` LONGBLOB NULL DEFAULT NULL ; +CREATE TABLE IF NOT EXISTS `relateditems` ( + `stockid` varchar(20) CHARACTER SET utf8 NOT NULL, + `related` varchar(20) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`stockid`,`related`), + UNIQUE KEY `Related` (`related`,`stockid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + +INSERT INTO `scripts` (`script` ,`pagesecurity` ,`description`) VALUES ('RelatedItemsUpdate.php', '2', 'Maintains Related Items'); + UPDATE config SET confvalue='4.12' WHERE confname='VersionNumber'; + |