<?php
/**********************************************************************
***********************************************************************/
$page_security = 'SA_RECEIVE_MANUFACTURED_ITEMS';
$path_to_root = "..";
include_once($path_to_root . "/includes/ui/items_cart.inc");

include_once($path_to_root . "/includes/session.inc");

include_once($path_to_root . "/includes/date_functions.inc");
include_once($path_to_root . "/includes/data_checks.inc");

include_once($path_to_root . "/manufacturing/includes/production_receipts_ui.inc");
//include_once($path_to_root . "/inventory/includes/inventory_db.inc");
include_once($path_to_root . "/manufacturing/includes/db/production_receipts_db.inc");
include_once($path_to_root . "/reporting/includes/reporting.inc");

$js = "";
if ($SysPrefs->use_popup_windows)
	$js .= get_js_open_window(800, 500);
if (user_use_date_picker())
	$js .= get_js_date_picker();
page(_($help_context = "Receive Manufactured Items in to Inventory"), false, false, "", $js);

//-----------------------------------------------------------------------------------------------

check_db_has_costable_items(_("There are no inventory items defined in the system which can be adjusted (Purchased or Manufactured)."));

check_db_has_movement_types(_("There are no inventory movement types defined in the system. Please define at least one inventory adjustment type."));

//-----------------------------------------------------------------------------------------------

if (isset($_GET['AddedID'])) 
{
	$trans_no = $_GET['AddedID'];
	$trans_type = ST_PROD_ADD;

	display_notification_centered(_("Manufactured items receipt ".$trans_type." has been created"));
        
	display_note(get_trans_view_str($trans_type, $trans_no, _("&View this manufactured items addition")), 0, 1);

	display_note(get_gl_view_str($trans_type, $trans_no, _("View the GL &Postings for this manufactured items addition")), 0, 1);
        
        display_note(print_document_link($trans_no, _("&Print this manufactured items addition"), true, $trans_type), 0, 0);

	hyperlink_no_params($_SERVER['PHP_SELF'], _("Enter &Another manufactured item addition"));

	hyperlink_params("$path_to_root/admin/attachments.php", _("Add an Attachment"), "filterType=$trans_type&trans_no=$trans_no");

	display_footer_exit();
}
//--------------------------------------------------------------------------------------------------

function line_start_focus() {
  global 	$Ajax;

  $Ajax->activate('items_table');
  set_focus('_stock_id_edit');
}
//-----------------------------------------------------------------------------------------------

function handle_new_order()
{
	if (isset($_SESSION['manuf_items']))
	{
		$_SESSION['manuf_items']->clear_items();
		unset ($_SESSION['manuf_items']);
	}

    $_SESSION['manuf_items'] = new items_cart(ST_PROD_ADD);
	$_POST['AdjDate'] = new_doc_date();
	if (!is_date_in_fiscalyear($_POST['AdjDate']))
		$_POST['AdjDate'] = end_fiscalyear();
	$_SESSION['manuf_items']->tran_date = $_POST['AdjDate'];	
}

//-----------------------------------------------------------------------------------------------

function can_process()
{
	global $Refs;

	$adj = &$_SESSION['manuf_items'];

	if (count($adj->line_items) == 0)	{
		display_error(_("You must enter at least one non empty item line."));
		set_focus('stock_id');
		return false;
	}
	if (!$Refs->is_valid($_POST['ref'])) 
	{
		display_error( _("You must enter a reference."));
		set_focus('ref');
		return false;
	}

	if (!is_new_reference($_POST['ref'], ST_PROD_ADD)) 
	{
		display_error( _("The entered reference is already in use."));
		set_focus('ref');
		return false;
	}

	if (!is_date($_POST['AdjDate'])) 
	{
		display_error(_("The entered date for this transaction is invalid."));
		set_focus('AdjDate');
		return false;
	} 
	elseif (!is_date_in_fiscalyear($_POST['AdjDate'])) 
	{
		display_error(_("The entered date is not in fiscal year."));
		set_focus('AdjDate');
		return false;
	} 
	return true;
}

//-------------------------------------------------------------------------------

if (isset($_POST['Process']) && can_process()){

	$trans_no = add_manufactured_items($_SESSION['manuf_items']->line_items,
		$_POST['StockLocation'], $_POST['AdjDate'], ST_PROD_ADD, 1,
		$_POST['ref'], $_POST['memo_']);
        
        //return;
	new_doc_date($_POST['AdjDate']);
	$_SESSION['manuf_items']->clear_items();
	unset($_SESSION['manuf_items']);

   	meta_forward($_SERVER['PHP_SELF'], "AddedID=$trans_no");
} /*end of process credit note */

//-----------------------------------------------------------------------------------------------

function check_item_data()
{
	if (!check_num('tran_qty',0.01))
	{
		display_error(_("The quantity entered is negative or invalid."));
		set_focus('tran_qty');
		return false;
	}

   	return true;
}

//-----------------------------------------------------------------------------------------------

function handle_update_item()
{
    $id = $_POST['LineNo'];
    if($_POST['UpdateItem'] != "" && check_item_data())
    {
        $adj = &$_SESSION['manuf_items'];
        
    	$convertion_factor = $adj->line_items[$id]->convertion_factor;
        $standard_cost = $adj->line_items[$id]->standard_cost;
    
        $adj->update_cart_item($id, input_num('tran_qty')*$convertion_factor, $standard_cost, 
                null, null, null, null, null, input_num('tran_qty'));
    }
	line_start_focus();
}

//-----------------------------------------------------------------------------------------------

function handle_delete_item($id)
{
	$_SESSION['manuf_items']->remove_from_cart($id);
	line_start_focus();
}

//-----------------------------------------------------------------------------------------------

function handle_new_item()
{
	if (!check_item_data())
		return;

        $alternate_unit = get_alternate_unit_details($_POST['tran_unit']);
        $convertion_factor = $alternate_unit['convertion_factor'];
        $tran_unit = $alternate_unit['alternate_unit'];
        
	add_to_order($_SESSION['manuf_items'], $_POST['stock_id'], 
	  input_num('qty'), $tran_unit, input_num('tran_qty'), $convertion_factor);
        
	line_start_focus();
}

//-----------------------------------------------------------------------------------------------
$id = find_submit('Delete');
if ($id != -1)
	handle_delete_item($id);

if (isset($_POST['AddItem']))
	handle_new_item();

if (isset($_POST['UpdateItem']))
	handle_update_item();

if (isset($_POST['CancelItemChanges'])) {
	line_start_focus();
}
//-----------------------------------------------------------------------------------------------

if (isset($_GET['NewAdjustment']) || !isset($_SESSION['manuf_items']))
{
	handle_new_order();
}

//-----------------------------------------------------------------------------------------------
start_form();

display_production_receipt_header($_SESSION['manuf_items']);

start_outer_table(TABLESTYLE, "width=70%", 10);

display_production_receipt_items(_("Manufactured Items"), $_SESSION['manuf_items']);
production_receipt_controls();

end_outer_table(1, false);

submit_center_first('Update', _("Update"), '', null);
submit_center_last('Process', _("Process Manufactured Items"), '', 'default');

end_form();
end_page();

?>
