Rerun of function 'delete_image' when deleting item. Fixed.
[fa-stable.git] / inventory / manage / items.php
index a897b9cbd10115fbe7ed8ab7794ee0e707435367..fe4e82b1d26214b04cfaf1d063c9834a59050d96 100644 (file)
@@ -12,6 +12,7 @@
 $page_security = 'SA_ITEM';
 $path_to_root = "../..";
 include($path_to_root . "/includes/session.inc");
+include($path_to_root . "/reporting/includes/tcpdf.php");
 
 $js = "";
 if ($SysPrefs->use_popup_windows)
@@ -32,7 +33,7 @@ else {
 }
 
 
-page($_SESSION['page_title'], false, false, "", $js);
+page($_SESSION['page_title'], @$_REQUEST['popup'], false, "", $js);
 
 include_once($path_to_root . "/includes/date_functions.inc");
 include_once($path_to_root . "/includes/ui.inc");
@@ -55,6 +56,41 @@ function set_edit($stock_id)
        $_POST['del_image'] = 0;
 }
 
+function del_image($stock_id)
+{
+       foreach (array('jpg', 'png', 'gif') as $ext) {
+               $filename = company_path().'/images/'.item_img_name($stock_id).".".$ext;
+               if (file_exists($filename) && !unlink($filename))
+                       return false;
+       }
+       return true;
+}
+
+function show_image($stock_id)
+{
+       global $SysPrefs;
+
+       $check_remove_image = false;
+       $stock_img_link = _("No image");
+
+       if (@$stock_id)
+               foreach (array('jpg', 'png', 'gif') as $ext)
+               {
+                       $file = company_path().'/images/'.item_img_name($stock_id). ".$ext";
+                       if (file_exists($file)) {
+                               // rand() call is necessary here to avoid caching problems.
+                               $check_remove_image = true; // fixme
+                               $stock_img_link = "<img id='item_img' alt = '[".$stock_id.".$ext"."]' src='".$file."?nocache=".rand()."'"
+                                       ." height='".$SysPrefs->pic_height."' border='0'>";
+                               break;
+                       }
+               }
+
+       label_row("&nbsp;", $stock_img_link);
+       if ($check_remove_image)
+               check_row(_("Delete Image:"), 'del_image');
+}
+
 if (isset($_GET['stock_id']))
 {
        $_POST['stock_id'] = $_GET['stock_id'];
@@ -87,7 +123,7 @@ if (isset($_FILES['pic']) && $_FILES['pic']['name'] != '')
        {
                mkdir($filename);
        }       
-       $filename .= "/".item_img_name($stock_id).".jpg";
+       $filename .= "/".item_img_name($stock_id).(substr(trim($_FILES['pic']['name']), strrpos($_FILES['pic']['name'], '.')));
 
   if ($_FILES['pic']['error'] == UPLOAD_ERR_INI_SIZE) {
     display_error(_('The file size is over the maximum allowed.'));
@@ -124,19 +160,20 @@ if (isset($_FILES['pic']) && $_FILES['pic']['name'] != '')
                display_warning( _('Only graphics files can be uploaded'));
         $upload_file ='No';
        } 
-       elseif (file_exists($filename))
+       elseif (!del_image($stock_id))
        {
-               $result = unlink($filename);
-               if (!$result) 
-               {
-                       display_error(_('The existing image could not be removed'));
-                       $upload_file ='No';
-               }
+               display_error(_('The existing image could not be removed'));
+               $upload_file ='No';
        }
-       
+
        if ($upload_file == 'Yes')
        {
                $result  =  move_uploaded_file($_FILES['pic']['tmp_name'], $filename);
+               if ($msg = check_image_file($filename)) {
+                       display_error($msg);
+                       unlink($filename);
+                       $upload_file ='No';
+               }
        }
        $Ajax->activate('details');
  /* EOF Add Image upload for New Item  - by Ori */
@@ -213,7 +250,7 @@ if (isset($_POST['addupdate']))
       $_POST['depreciation_rate'] = 0;
     }
     $move_row = get_fixed_asset_move($_POST['NewStockID'], ST_SUPPRECEIVE);
-    if (isset($_POST['depreciation_start']) && strtotime($_POST['depreciation_start']) < strtotime($move_row['tran_date'])) {
+    if ($move_row && isset($_POST['depreciation_start']) && strtotime($_POST['depreciation_start']) < strtotime($move_row['tran_date'])) {
       display_warning(_('The depracation cannot start before the fixed asset purchase date'));
     }
   }
@@ -221,11 +258,7 @@ if (isset($_POST['addupdate']))
        if ($input_error != 1)
        {
                if (check_value('del_image'))
-               {
-                       $filename = company_path().'/images/'.item_img_name($_POST['NewStockID']).".jpg";
-                       if (file_exists($filename))
-                               unlink($filename);
-               }
+                       del_image($_POST['NewStockID']);
                
                if (!$new_item) 
                { /*so its an existing one */
@@ -237,7 +270,7 @@ if (isset($_POST['addupdate']))
                                $_POST['adjustment_account'], $_POST['wip_account'], 
                                $_POST['dimension_id'], $_POST['dimension2_id'],
                                check_value('no_sale'), check_value('editable'), check_value('no_purchase'),
-                               get_post('depreciation_method'), input_num('depreciation_rate'), input_num('depreciation_factor'), get_post('depreciation_start'),
+                               get_post('depreciation_method'), input_num('depreciation_rate'), input_num('depreciation_factor'), get_post('depreciation_start', null),
                                get_post('fa_class_id'));
 
                        update_record_status($_POST['NewStockID'], $_POST['inactive'],
@@ -258,7 +291,7 @@ if (isset($_POST['addupdate']))
                                $_POST['adjustment_account'], $_POST['wip_account'], 
                                $_POST['dimension_id'], $_POST['dimension2_id'],
                                check_value('no_sale'), check_value('editable'), check_value('no_purchase'),
-                               get_post('depreciation_method'), input_num('depreciation_rate'), input_num('depreciation_factor'), get_post('depreciation_start'),
+                               get_post('depreciation_method'), input_num('depreciation_rate'), input_num('depreciation_factor'), get_post('depreciation_start', null),
                                get_post('fa_class_id'));
 
                        display_notification(_("A new item has been added."));
@@ -302,9 +335,7 @@ if (isset($_POST['delete']) && strlen($_POST['delete']) > 1)
 
                $stock_id = $_POST['NewStockID'];
                delete_item($stock_id);
-               $filename = company_path().'/images/'.item_img_name($stock_id).".jpg";
-               if (file_exists($filename))
-                       unlink($filename);
+               del_image($stock_id);
                display_notification(_("Selected item has been deleted."));
                $_POST['stock_id'] = '';
                clear_data();
@@ -390,14 +421,12 @@ function item_settings(&$stock_id, $new_item)
 
        stock_units_list_row(_('Units of Measure:'), 'units', null, $fresh_item);
 
-       check_row(_("Editable description:"), 'editable');
 
-       if (get_post('fixed_asset'))
-               hidden('no_sale', 0);
-       else
+       if (!get_post('fixed_asset')) {
+               check_row(_("Editable description:"), 'editable');
                check_row(_("Exclude from sales:"), 'no_sale');
-
-       check_row(_("Exclude from purchases:"), 'no_purchase');
+               check_row(_("Exclude from purchases:"), 'no_purchase');
+       }
 
        if (get_post('fixed_asset')) {
                table_section_title(_("Depreciation"));
@@ -464,7 +493,7 @@ function item_settings(&$stock_id, $new_item)
                gl_all_accounts_list_row(_("Depreciation cost account:"), 'cogs_account', $_POST['cogs_account']);
                gl_all_accounts_list_row(_("Depreciation/Disposal account:"), 'adjustment_account', $_POST['adjustment_account']);
        }
-       elseif (!is_service($_POST['mb_flag'])) 
+       elseif (!is_service(get_post('mb_flag')))
        {
                gl_all_accounts_list_row(_("Inventory Account:"), 'inventory_account', $_POST['inventory_account']);
                gl_all_accounts_list_row(_("C.O.G.S. Account:"), 'cogs_account', $_POST['cogs_account']);
@@ -478,35 +507,16 @@ function item_settings(&$stock_id, $new_item)
        }
 
 
-       if (is_manufactured($_POST['mb_flag']))
+       if (is_manufactured(get_post('mb_flag')))
                gl_all_accounts_list_row(_("WIP Account:"), 'wip_account', $_POST['wip_account']);
        else
                hidden('wip_account', $_POST['wip_account']);
 
        table_section_title(_("Other"));
 
-       // Add image upload for New Item  - by Joe
-       file_row(_("Image File (.jpg)") . ":", 'pic', 'pic');
-       // Add Image upload for New Item  - by Joe
-       $stock_img_link = "";
-       $check_remove_image = false;
-       if (isset($_POST['NewStockID']) && file_exists(company_path().'/images/'
-               .item_img_name($_POST['NewStockID']).".jpg")) 
-       {
-        // 31/08/08 - rand() call is necessary here to avoid caching problems.
-               $stock_img_link .= "<img id='item_img' alt = '[".$_POST['NewStockID'].".jpg".
-                       "]' src='".company_path().'/images/'.item_img_name($_POST['NewStockID']).
-                       ".jpg?nocache=".rand()."'"." height='".$SysPrefs->pic_height."' border='0'>";
-               $check_remove_image = true;
-       } 
-       else 
-       {
-               $stock_img_link .= _("No image");
-       }
+       file_row(_("Image File (.jpg)") . ":", 'pic', 'pic'); // fixme: png/gif
 
-       label_row("&nbsp;", $stock_img_link);
-       if ($check_remove_image)
-               check_row(_("Delete Image:"), 'del_image');
+       show_image(@$_POST['NewStockID']);
 
        record_status_list_row(_("Item status:"), 'inactive');
        if (get_post('fixed_asset')) {
@@ -643,7 +653,7 @@ end_form();
 
 //------------------------------------------------------------------------------------
 
-end_page();
+end_page(@$_REQUEST['popup']);
 
 function generateBarcode() {
        $tmpBarcodeID = "";