Added recipe export menu.

Fri, 01 Mar 2019 14:29:09 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Fri, 01 Mar 2019 14:29:09 +0100
changeset 303
98c2afc88780
parent 302
d0f7b4ab000f
child 304
c0ca21cdd291

Added recipe export menu.

README.design file | annotate | diff | comparison | revisions
www/Makefile file | annotate | diff | comparison | revisions
www/js/rec_edit.js file | annotate | diff | comparison | revisions
www/js/rec_export.js file | annotate | diff | comparison | revisions
www/prod_duplicate.php file | annotate | diff | comparison | revisions
www/prod_export.php file | annotate | diff | comparison | revisions
www/rec_duplicate.php file | annotate | diff | comparison | revisions
www/rec_export.php file | annotate | diff | comparison | revisions
www/rec_toproduct.php file | annotate | diff | comparison | revisions
--- a/README.design	Thu Feb 28 22:50:58 2019 +0100
+++ b/README.design	Fri Mar 01 14:29:09 2019 +0100
@@ -141,7 +141,7 @@
 
 TODO:
 
-Copieren recepten tussen products en recipes, maar ook dupliceren. Import.
+Import van recepten.
 Import van ingredienten vanuit xml bestanden zoals die van brouwhulp.
 Export ingredienten naar xml.
 
--- a/www/Makefile	Thu Feb 28 22:50:58 2019 +0100
+++ b/www/Makefile	Fri Mar 01 14:29:09 2019 +0100
@@ -4,17 +4,20 @@
 include ../Makefile.global
 
 SRC		= cmd_fermenter.php config.php.dist crontasks.php favicon.ico gen_about.php \
-		  getbrewlog.php getfermentablesources.php \
-		  getfermenter.php getfermentlog.php gethopsources.php getmiscsources.php \
-		  getnode.php getwatersources.php getyeastsources.php index.php \
+		  getbrewlog.php getfermentablesources.php getfermenter.php getfermentlog.php \
+		  gethopsources.php getmiscsources.php getnode.php getwatersources.php \
+		  getyeastsources.php index.php \
 		  inv_equipments.php inv_fermentables.php inv_hops.php inv_instock.php \
-		  inv_miscs.php inv_suppliers.php inv_waters.php inv_yeasts.php log_brew.php \
-		  log_fermentation.php mon_brewer.php mon_fermenter.php mon_node.php \
+		  inv_miscs.php inv_suppliers.php inv_waters.php inv_yeasts.php \
+		  log_brew.php log_fermentation.php \
+		  mon_brewer.php mon_fermenter.php mon_node.php \
 		  prod_archive_code.php prod_archive_date.php prod_archive_name.php prod_beerxml.php \
-		  prod_duplicate.php prod_edit.php prod_export.php prod_impbrew.php prod_inprod.php prod_new.php \
-		  prod_print.php prod_reduce.php prod_torecipe.php profile_fermentation.php \
-		  profile_mash.php profile_setup.php profile_styles.php profile_water.php \
-		  rec_beerxml.php rec_edit.php rec_export.php rec_main.php rec_new.php rec_print.php \
+		  prod_duplicate.php prod_edit.php prod_export.php prod_impbrew.php prod_inprod.php \
+		  prod_new.php prod_print.php prod_reduce.php prod_torecipe.php \
+		  profile_fermentation.php profile_mash.php profile_setup.php profile_styles.php \
+		  profile_water.php \
+		  rec_beerxml.php rec_duplicate.php rec_edit.php rec_export.php rec_main.php \
+		  rec_new.php rec_print.php rec_toproduct.php \
 		  upl_brew.php version.php
 SUB		= version.php.in images/* css/* jqwidgets/* jqwidgets/styles/* \
 		  jqwidgets/styles/images/* jqwidgets/globalization/* js/* \
--- a/www/js/rec_edit.js	Thu Feb 28 22:50:58 2019 +0100
+++ b/www/js/rec_edit.js	Fri Mar 01 14:29:09 2019 +0100
@@ -3678,8 +3678,8 @@
 	$("#Export").jqxButton({ template: "info", width: '80px', theme: theme });
 	$("#Export").click(function () {
 		saveRecord();
-		var url="rec_beerxml.php?record=" + my_record;
-		window.open(url);
+		var url="rec_export.php?record=" + my_record + "&return=" + my_return + "&name=" + dataRecord.name;
+		window.location.href = url;
 	});
 
 	$("#Delete").jqxButton({ template: "danger", width: '80px', theme: theme });
--- a/www/js/rec_export.js	Thu Feb 28 22:50:58 2019 +0100
+++ b/www/js/rec_export.js	Fri Mar 01 14:29:09 2019 +0100
@@ -23,5 +23,38 @@
 
 $(document).ready(function () {
 
+	var     choice = 0;
 
+	$("#name").html(my_name);
+	$("#jqxRadioButton1").jqxRadioButton({ theme: theme, width: 250, height: 23 });
+	$("#jqxRadioButton2").jqxRadioButton({ theme: theme, width: 250, height: 23 });
+	$("#jqxRadioButton3").jqxRadioButton({ theme: theme, width: 250, height: 23 });
+	$('#jqxRadioButton1').on('checked', function (event) {
+		$('#Start').jqxButton({ disabled: false });
+		choice = 1;
+	});
+	$('#jqxRadioButton2').on('checked', function (event) {
+		$('#Start').jqxButton({ disabled: false });
+		choice = 2;
+	});
+	$('#jqxRadioButton3').on('checked', function (event) {
+		$('#Start').jqxButton({ disabled: false });
+		choice = 3;
+	});
+
+	$('#Start').jqxButton({ template: "success", width: '100px', theme: theme, disabled: true });
+	$('#Start').click(function () {
+		if (choice == 1) {
+			var url="rec_beerxml.php?record=" + my_record;
+			window.open(url);
+		} else if (choice == 2) {
+			var url="rec_duplicate.php?record=" + my_record;
+			window.open(url);
+		} else if (choice == 3) {
+			var url="rec_toproduct.php?record=" + my_record;
+			window.open(url);
+		}
+		// Return to the original product
+		window.location.href = my_return + "?record=" + my_record;
+	});
 });
--- a/www/prod_duplicate.php	Thu Feb 28 22:50:58 2019 +0100
+++ b/www/prod_duplicate.php	Fri Mar 01 14:29:09 2019 +0100
@@ -1,9 +1,5 @@
 <?php
 require_once('config.php');
-//require_once('includes/formulas.php');
-//require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');
-//require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');
-
 
 $link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
 if (! $link) {
@@ -15,7 +11,6 @@
 }
 
 date_default_timezone_set('Europe/Amsterdam');
-//setlocale ( LC_ALL, 'nl_NL.UTF-8');
 if (isset($_GET["record"]))
 	$record = $_GET["record"];
 else
--- a/www/prod_export.php	Thu Feb 28 22:50:58 2019 +0100
+++ b/www/prod_export.php	Fri Mar 01 14:29:09 2019 +0100
@@ -18,15 +18,15 @@
       </tr>
       <tr>
        <td align="right" style="vertical-align: top;">Maak beerxml bestand:</td>
-       <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton1'></td>
+       <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton1'></div></td>
       </tr>
       <tr>
        <td align="right" style="vertical-align: top;">Dupliceer als nieuw product:</td>
-       <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton2'></td>
+       <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton2'></div></td>
       </tr>
       <tr>
        <td align="right" style="vertical-align: top;">Copieer als recept:</td>
-       <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton3'></td>
+       <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton3'></div></td>
       </tr>
       <tr><td colspan="2">&nbsp;</td></tr>
       <tr>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/rec_duplicate.php	Fri Mar 01 14:29:09 2019 +0100
@@ -0,0 +1,109 @@
+<?php
+require_once('config.php');
+
+$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+if (! $link) {
+	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+if (! mysqli_set_charset($link, "utf8" )) {
+	echo "error";
+	return 1;
+}
+
+date_default_timezone_set('Europe/Amsterdam');
+if (isset($_GET["record"]))
+	$record = $_GET["record"];
+else
+	$record = 78;
+$result = mysqli_query($link, "SELECT * FROM recipes WHERE record='".$record."'");
+$row = mysqli_fetch_array($result);
+
+/*
+ * Make this duplicate a fresh recipe.
+ */
+$sql  = "INSERT INTO `recipes` SET ";
+$sql .= "name='" . mysqli_real_escape_string($link, $row['name']) . ' [duplicate]';
+$sql .= "', uuid='" . str_replace("\n", "", file_get_contents('/proc/sys/kernel/random/uuid'));
+$sql .= "', notes='" . mysqli_real_escape_string($link, $row['notes']);
+$sql .= "', locked='0";
+$sql .= "', st_name='" . mysqli_real_escape_string($link, $row['st_name']);
+$sql .= "', st_letter='" . mysqli_real_escape_string($link, $row['st_letter']);
+$sql .= "', st_guide='" . mysqli_real_escape_string($link, $row['st_guide']);
+$sql .= "', st_type='" . $row['st_type'];
+$sql .= "', st_category='" . mysqli_real_escape_string($link, $row['st_category']);
+$sql .= "', st_category_number='" . $row['st_category_number'];
+$sql .= "', st_og_min='" . $row['st_og_min'];
+$sql .= "', st_og_max='" . $row['st_og_max'];
+$sql .= "', st_fg_min='" . $row['st_fg_min'];
+$sql .= "', st_fg_max='" . $row['st_fg_max'];
+$sql .= "', st_ibu_min='" . $row['st_ibu_min'];
+$sql .= "', st_ibu_max='" . $row['st_ibu_max'];
+$sql .= "', st_color_min='" . $row['st_color_min'];
+$sql .= "', st_color_max='" . $row['st_color_max'];
+$sql .= "', st_carb_min='" . $row['st_carb_min'];
+$sql .= "', st_carb_max='" . $row['st_carb_max'];
+$sql .= "', st_abv_min='" . $row['st_abv_min'];
+$sql .= "', st_abv_max='" . $row['st_abv_max'];
+$sql .= "', type='" . $row['type'];
+$sql .= "', batch_size='" . $row['batch_size'];
+$sql .= "', boil_size='" . $row['boil_size'];
+$sql .= "', boil_time='" . $row['boil_time'];
+$sql .= "', efficiency='" . $row['efficiency'];
+$sql .= "', est_og='" . $row['est_og'];
+$sql .= "', est_fg='" . $row['est_fg'];
+$sql .= "', est_abv='" . $row['est_abv'];
+$sql .= "', est_carb='" . $row['est_carb'];
+$sql .= "', est_color='" . $row['est_color'];
+$sql .= "', color_method='" . $row['color_method'];
+$sql .= "', est_ibu='" . $row['est_ibu'];
+$sql .= "', ibu_method='" . $row['ibu_method'];
+$sql .= "', sparge_temp='" . $row['sparge_temp'];
+$sql .= "', sparge_ph='" . $row['sparge_ph'];
+$sql .= "', sparge_volume='" . $row['sparge_volume'];
+$sql .= "', sparge_source='" . $row['sparge_source'];
+$sql .= "', sparge_acid_type='" . $row['sparge_acid_type'];
+$sql .= "', sparge_acid_perc='" . $row['sparge_acid_perc'];
+$sql .= "', sparge_acid_amount='0";
+$sql .= "', mash_ph='" . $row['mash_ph'];
+$sql .= "', mash_name='" . $row['mash_name'];
+$sql .= "', calc_acid='" . $row['calc_acid'];
+$sql .= "', w1_name='" . mysqli_real_escape_string($link, $row['w1_name']);
+$sql .= "', w1_amount='" . $row['w1_amount'];
+$sql .= "', w1_calcium='" . $row['w1_calcium'];
+$sql .= "', w1_sulfate='" . $row['w1_sulfate'];
+$sql .= "', w1_chloride='" . $row['w1_chloride'];
+$sql .= "', w1_sodium='" . $row['w1_sodium'];
+$sql .= "', w1_magnesium='" . $row['w1_magnesium'];
+$sql .= "', w1_total_alkalinity='" . $row['w1_total_alkalinity'];
+$sql .= "', w1_ph='" . $row['w1_ph'];
+$sql .= "', w1_cost='" . $row['w1_cost'];
+$sql .= "', w2_name='" . mysqli_real_escape_string($link, $row['w2_name']);
+$sql .= "', w2_amount='" . $row['w2_amount'];
+$sql .= "', w2_calcium='" . $row['w2_calcium'];
+$sql .= "', w2_sulfate='" . $row['w2_sulfate'];
+$sql .= "', w2_chloride='" . $row['w2_chloride'];
+$sql .= "', w2_sodium='" . $row['w2_sodium'];
+$sql .= "', w2_magnesium='" . $row['w2_magnesium'];
+$sql .= "', w2_total_alkalinity='" . $row['w2_total_alkalinity'];
+$sql .= "', w2_ph='" . $row['w2_ph'];
+$sql .= "', w2_cost='" . $row['w2_cost'];
+$sql .= "', wa_acid_name='" . $row['wa_acid_name'];
+$sql .= "', wa_acid_perc='" . $row['wa_acid_perc'];
+$sql .= "', wa_base_name='" . $row['wa_base_name'];
+$sql .= "', json_fermentables='" . $row['json_fermentables'];
+$sql .= "', json_hops='" . $row['json_hops'];
+$sql .= "', json_miscs='" . $row['json_miscs'];
+$sql .= "', json_yeasts='" . $row['json_yeasts'];
+$sql .= "', json_mashs='" . $row['json_mashs'];
+$sql .= "';";
+syslog(LOG_NOTICE, $sql);
+
+$result = mysqli_query($link, $sql);
+if (! $result) {
+	syslog(LOG_NOTICE, "rec_duplicate: result: ".mysqli_error($link));
+} else {
+	$lastid = mysqli_insert_id($link);
+	syslog(LOG_NOTICE, "rec_duplicate: inserted record ".$lastid);
+}
+echo "<script>window.close();</script>";
+exit;
--- a/www/rec_export.php	Thu Feb 28 22:50:58 2019 +0100
+++ b/www/rec_export.php	Fri Mar 01 14:29:09 2019 +0100
@@ -4,6 +4,33 @@
 ?>
 
    <div id="MainPanel">
+    <div id='export_table'>
+     <table style='width: 100%; padding: 10px;'>
+      <tr><th colspan=2>Export recept</th></tr>
+      <tr><td colspan="2">&nbsp;</td></tr>
+      <tr>
+       <td align="right" style="vertical-align: top;">Naam:</td>
+       <td align="left"><div style='margin-left: 10px;' id='name'></div></td>
+      </tr>
+      <tr>
+       <td align="right" style="vertical-align: top;">Maak beerxml bestand:</td>
+       <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton1'></div></td>
+      </tr>
+      <tr>
+       <td align="right" style="vertical-align: top;">Dupliceer als nieuw recept:</td>
+       <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton2'></div></td>
+      </tr>
+      <tr>
+       <td align="right" style="vertical-align: top;">Copieer als brouw product:</td>
+       <td align="left"><div style='margin-left: 10px;' id='jqxRadioButton3'></div></td>
+      </tr>
+      <tr><td colspan="2">&nbsp;</td></tr>
+      <tr>
+       <td align="right" style="vertical-align: top;"></td>
+       <td align="left"><input type="button" id="Start" value="Start" /></td>
+      </tr>
+     </table>
+    </div>
    </div>
 
 <?php
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/rec_toproduct.php	Fri Mar 01 14:29:09 2019 +0100
@@ -0,0 +1,142 @@
+<?php
+require_once('config.php');
+
+
+$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+if (! $link) {
+	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+if (! mysqli_set_charset($link, "utf8" )) {
+	echo "error";
+	return 1;
+}
+
+date_default_timezone_set('Europe/Amsterdam');
+if (isset($_GET["record"]))
+	$record = $_GET["record"];
+else
+	$record = 78;
+$result = mysqli_query($link, "SELECT * FROM recipes WHERE record='".$record."'");
+$row = mysqli_fetch_array($result);
+
+
+/*
+ * Copy this to a fresh product.
+ */
+$sql  = "INSERT INTO `products` SET ";
+$sql .= "name='" . mysqli_real_escape_string($link, $row['name']);
+$sql .= "', uuid='" . str_replace("\n", "", file_get_contents('/proc/sys/kernel/random/uuid'));
+$sql .= "', code='" . date("YmdHi");
+$sql .= "', birth='" . date("Y-m-d");
+$sql .= "', stage='1";
+$sql .= "', notes='" . mysqli_real_escape_string($link, $row['notes']);
+$sql .= "', log_brew='0', log_fermentation='0', inventory_reduced='0', locked='0";
+// Equipment
+$sql .= "', eq_name='Kies zelf een installatie!";
+$sql .= "', eq_boil_size='" . $row['boil_size'];
+$sql .= "', eq_batch_size='" . $row['batch_size'];
+$sql .= "', eq_tun_volume='20', eq_tun_weight='2', eq_tun_specific_heat='0.11', eq_tun_material='0";
+$sql .= "', eq_tun_height='20', eq_top_up_water='0', eq_trub_chiller_loss='0.5', eq_evap_rate='1.8";
+$sql .= "', eq_boil_time='" . $row['boil_time'];
+$sql .= "', eq_calc_boil_volume='1', eq_top_up_kettle='0', eq_hop_utilization='100', eq_notes='";
+$sql .= "', eq_lauter_volume='20', eq_lauter_height='20', eq_lauter_deadspace='0.5', eq_kettle_volume='20";
+$sql .= "', eq_kettle_height='20', eq_mash_volume='18', eq_mash_max='6', eq_efficiency='75";
+// brewdate
+$sql .= "', brew_date_start=NULL, brew_mash_ph='0.0', brew_mash_sg='1.000";
+$sql .= "', brew_sparge_temperature='0', brew_sparge_volume='0', brew_sparge_ph='0.0";
+$sql .= "', brew_preboil_volume='0', brew_preboil_sg='0', brew_preboil_ph='0.0";
+$sql .= "', brew_aboil_volume='0', brew_aboil_sg='0', brew_aboil_ph='0.0', brew_aboil_efficiency='0";
+$sql .= "', brew_cooling_method='0', brew_cooling_time='0', brew_cooling_to='20";
+$sql .= "', brew_whirlpool9='0', brew_whirlpool7='0', brew_whirlpool6='0', brew_whirlpool2='0";
+$sql .= "', brew_aeration_time='0', brew_aeration_speed='0', brew_aeration_type='0";
+$sql .= "', brew_fermenter_volume='" . floatval($row['batch_size']) - 0.5;
+$sql .= "', brew_fermenter_extrawater='0', brew_fermenter_tcloss='0.5', brew_fermenter_sg='0";
+$sql .= "', brew_fermenter_ibu='0', brew_fermenter_color='0', brew_date_end=NULL, og='0', fg='0";
+$sql .= "', primary_start_temp='0', primary_max_temp='0', primary_end_temp='0', primary_end_date=NULL, primary_end_sg='0";
+$sql .= "', secondary_temp='0', secondary_end_date=NULL, tertiary_temp='0";
+$sql .= "', package_date=NULL";
+$sql .=  ", bottle_amount='0', bottle_carbonation='0', bottle_priming_sugar='0', bottle_priming_amount='0', bottle_carbonation_temp='23";
+$sql .= "', keg_amount='0', keg_carbonation='0', keg_priming_sugar='0', keg_priming_amount='0', keg_carbonation_temp='23";
+$sql .= "', keg_forced_carb='0', keg_pressure='0";
+$sql .= "', taste_notes='";
+$sql .= "', taste_rate='0";
+$sql .= "', taste_date=NULL";
+$sql .=  ", taste_color='";
+$sql .= "', taste_transparency='";
+$sql .= "', taste_head='";
+$sql .= "', taste_aroma='";
+$sql .= "', taste_taste='";
+$sql .= "', taste_mouthfeel='";
+$sql .= "', taste_aftertaste='";
+// Style
+$sql .= "', st_name='" . mysqli_real_escape_string($link, $row['st_name']);
+$sql .= "', st_letter='" . mysqli_real_escape_string($link, $row['st_letter']);
+$sql .= "', st_guide='" . mysqli_real_escape_string($link, $row['st_guide']);
+$sql .= "', st_type='" . $row['st_type'];
+$sql .= "', st_category='" . mysqli_real_escape_string($link, $row['st_category']);
+$sql .= "', st_category_number='" . $row['st_category_number'];
+$sql .= "', st_og_min='" . $row['st_og_min'];
+$sql .= "', st_og_max='" . $row['st_og_max'];
+$sql .= "', st_fg_min='" . $row['st_fg_min'];
+$sql .= "', st_fg_max='" . $row['st_fg_max'];
+$sql .= "', st_ibu_min='" . $row['st_ibu_min'];
+$sql .= "', st_ibu_max='" . $row['st_ibu_max'];
+$sql .= "', st_color_min='" . $row['st_color_min'];
+$sql .= "', st_color_max='" . $row['st_color_max'];
+$sql .= "', st_carb_min='" . $row['st_carb_min'];
+$sql .= "', st_carb_max='" . $row['st_carb_max'];
+$sql .= "', st_abv_min='" . $row['st_abv_min'];
+$sql .= "', st_abv_max='" . $row['st_abv_max'];
+$sql .= "', type='" . $row['type'];
+$sql .= "', batch_size='" . $row['batch_size'];
+$sql .= "', boil_size='" . $row['boil_size'];
+$sql .= "', boil_time='" . $row['boil_time'];
+$sql .= "', efficiency='" . $row['efficiency'];
+$sql .= "', est_og='0.000";
+$sql .= "', est_fg='0.000";
+$sql .= "', est_abv='0.0";
+$sql .= "', est_carb='0";
+$sql .= "', est_color='0";
+$sql .= "', color_method='0";
+$sql .= "', est_ibu='0";
+$sql .= "', ibu_method='0";
+$sql .= "', sparge_temp='85";
+$sql .= "', sparge_ph='5.8";
+$sql .= "', sparge_volume='" . floatval($row['boil_size']) / 2;
+$sql .= "', sparge_source='0";
+$sql .= "', sparge_acid_type='0";
+$sql .= "', sparge_acid_perc='80";
+$sql .= "', sparge_acid_amount='0";
+$sql .= "', mash_ph='5.4";
+$sql .= "', mash_name='";
+$sql .= "', calc_acid='1";
+$sql .= "', w1_name='Tap water";
+$sql .= "', w1_amount='18";
+$sql .= "', w1_calcium='0";
+$sql .= "', w1_sulfate='0";
+$sql .= "', w1_chloride='0";
+$sql .= "', w1_sodium='0";
+$sql .= "', w1_magnesium='0";
+$sql .= "', w1_total_alkalinity='0";
+$sql .= "', w1_ph='7.0";
+$sql .= "', w1_cost='0.0";
+$sql .= "', wa_acid_name='0";
+$sql .= "', wa_acid_perc='0";
+$sql .= "', wa_base_name='0";
+$sql .= "', json_fermentables='" . $row['json_fermentables'];
+$sql .= "', json_hops='" . $row['json_hops'];
+$sql .= "', json_miscs='" . $row['json_miscs'];
+$sql .= "', json_yeasts='" . $row['json_yeasts'];
+$sql .= "', json_mashs='" . $row['json_mashs'];
+$sql .= "';";
+syslog(LOG_NOTICE, $sql);
+
+$result = mysqli_query($link, $sql);
+if (! $result) {
+	syslog(LOG_NOTICE, "rec_toproduct: result: ".mysqli_error($link));
+} else {
+	$lastid = mysqli_insert_id($link);
+	syslog(LOG_NOTICE, "rec_toproduct: inserted record ".$lastid);
+}
+echo "<script>window.close();</script>";
+exit;

mercurial