<?php
/**********************************************************************
    Copyright (C) FrontAccounting, LLC.
	Released under the terms of the GNU General Public License, GPL, 
	as published by the Free Software Foundation, either version 3 
	of the License, or (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
include_once($path_to_root . "/includes/ui.inc");
include_once($path_to_root . "/includes/ui/items_cart.inc");

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

function add_to_order(&$order, $new_item, $new_item_qty, $standard_cost, $batch_no=null, $exp_date = null)
{
    //if ($order->find_cart_item($new_item))
         //display_error(_("For Part :") . $new_item . " " . "This item is already on this document. You can change the quantity on the existing line if necessary.");
	//else
         $order->add_to_cart (count($order->line_items), $new_item, $new_item_qty, $standard_cost, null, $batch_no, $exp_date );
}

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

function display_order_header(&$order)
{
	global $Ajax, $Refs, $SysPrefs;

	start_outer_table(TABLESTYLE2, "width='70%'"); // outer table
	table_section(1);

	locations_list_row(_("Location:"), 'StockLocation', null, false, true, $order->fixed_asset);
    date_row(_("Date:"), 'AdjDate', '', true);
	file_system_list_row(_("File System:"), 'file_system', null, false, true);

	table_section(2, "50%");

	ref_row(_("Reference:"), 'ref', '', $Refs->get_next(ST_CUNSUMPTION, null, array('location'=>get_post('StockLocation'), 'date'=>get_post('AdjDate'))),
		 false, ST_CUNSUMPTION);

	gl_all_accounts_list_row(_("Cunsume Account"),'gl_code_id', null,false,false,false,true);
    	$sub_accounts = is_subledger_account(get_post('gl_code_id'));
    // 	display_error($sub_accounts);
	// $has_subaccounts = $order->has_sub_accounts();
	if ($sub_accounts)
		{
			// for home currency postings show all customers
    	// display_error($order->currency." = ".get_company_currency());
    	// $order->currency=get_company_currency();
		   label_cell(_("Counter Party"));
			$sel_cur = get_post('currency', $order->currency);
		 subledger_list_cells(null, 'person_id', get_post('gl_code_id'), null, false, false,
				get_company_currency() == $sel_cur  ? null : $sel_cur);
		 $Ajax->activate('_page_body');
		}

	if (get_company_pref('use_dimension'))
		dimensions_list_row(_($SysPrefs->prefs['dim1_name']), 'dimension_id', null, true, _('Default'), false, 1);

	if (get_company_pref('use_dimension') == 2)
		dimensions_list_row(_($SysPrefs->prefs['dim2_name']), 'dimension2_id', null, true, _('Default'), false, 2);

	end_outer_table(1); // outer table
}

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

function display_adjustment_items($title, &$order)
{
	global $path_to_root;
	$kv_batch = get_company_pref('kv_batch');
	$kv_exp_date = get_company_pref('kv_exp_date');
	display_heading($title);
    div_start('items_table');
	start_table(TABLESTYLE, "width='80%'");
	$th = array(_("Item Code"), _("Item Description"), _("Quantity"), _("Unit"),_("Price"), '');
	if (!$order->fixed_asset && count($order->line_items)) $th[] = '';
	
	if(!$order->fixed_asset){
		if($kv_exp_date){
				array_splice( $th, 2, 0, _("Batch No") );
				array_splice( $th, 3, 0, _("Exp Date") );
			}elseif($kv_batch){
				array_splice( $th, 2, 0, _("Batch No") );
				//array_splice( $th, 3, 0, _("") );
			}
	}
	table_header($th);
	$k = 0;  //row colour counter

	$low_stock = $order->check_qoh($_POST['StockLocation'], $_POST['AdjDate'], true);
	$id = find_submit('Edit');
	    $sm_qty=0;
	foreach ($order->line_items as $line_no=>$stock_item)
	{

		if ($id != $line_no)
		{
			if (in_array($stock_item->stock_id, $low_stock))
				start_row("class='stockmankobg'");	// notice low stock status
			else 
				alt_table_row_color($k);

			if ($order->fixed_asset)
				label_cell($stock_item->stock_id);
			else
				view_stock_status_cell($stock_item->stock_id);
    		label_cell($stock_item->item_description);
			if (!$order->fixed_asset) {
			if($kv_exp_date){
				label_cell($stock_item->batch_no);
				label_cell($stock_item->exp_date);
			}elseif($kv_batch )		
				label_cell($stock_item->batch_no);
			}
    		qty_cell($stock_item->quantity, false, get_qty_dec($stock_item->stock_id));
    		label_cell($stock_item->units);
    			label_cell($stock_item->standard_cost);
    			
    			      $sm_qty+=$stock_item->quantity;

	     	if (!$order->fixed_asset)
				edit_button_cell("Edit$line_no", _("Edit"),	_('Edit document line'));
			delete_button_cell("Delete$line_no", _("Delete"), _('Remove line from document'));
    		end_row();
		}
		else
		{
			adjustment_edit_item_controls($order, $line_no, $kv_batch, $kv_exp_date);
		}
	}

	if ($id == -1)
		adjustment_edit_item_controls($order, -1, $kv_batch, $kv_exp_date);
		
				label_cell("Total QTY : ".$sm_qty,"colspan=8");

    end_table();
	if ($low_stock)
		display_note(_("Marked items have insufficient quantities in stock as on day of transfer".(($kv_batch || $kv_exp_date) ? ' With the respective Batch' : '' ).'.'), 0, 1, "class='stockmankofg'");
	div_end();
}

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

function adjustment_edit_item_controls(&$order, $line_no=-1, $kv_batch=0, $kv_exp_date=0)
{
	global $Ajax;
	start_row();

	$id = find_submit('Edit');
	if ($line_no != -1 && $line_no == $id)
	{
		$_POST['stock_id'] = $order->line_items[$id]->stock_id;
		$_POST['qty'] = qty_format($order->line_items[$id]->quantity, $order->line_items[$id]->stock_id, $dec);
		$_POST['units'] = $order->line_items[$id]->units;

		hidden('stock_id', $_POST['stock_id']);
		label_cell($_POST['stock_id']);
		label_cell($order->line_items[$id]->item_description);
		hidden('batch_no', $order->line_items[$id]->batch_no);
		hidden('exp_date', $order->line_items[$id]->exp_date);
		if($kv_exp_date){
			label_cell($order->line_items[$id]->batch_no);
			label_cell($order->line_items[$id]->exp_date);
		}elseif($kv_batch)
			label_cell($order->line_items[$id]->batch_no);
	    $Ajax->activate('items_table');
	}
	else
	{
		if ($order->fixed_asset)
			stock_disposable_fa_list_cells(null, 'stock_id', null, false, true, $order->line_items);
		else
			stock_costable_items_list_cells(null, 'stock_id', null, false, true);

		if (list_updated('stock_id')) {
			$Ajax->activate('units');
			$Ajax->activate('qty');
			$Ajax->activate('items_table');
		}
		
		/* Changes for the Batch System -kvvaradha */ 
	if(!$order->fixed_asset){
		if($kv_batch || $kv_exp_date )
			kv_batch_list_cells(null, 'batch_no', null, true, false ,false ,$_POST['StockLocation']);
		else
			hidden('batch', 0);
		if(list_updated('stock_id') || list_updated('batch_no') || get_post('batch_no')){				
			if($kv_batch || $kv_exp_date) {
				if(get_post('batch_no') != '' || get_post('batch_no') != null ){
					$sql0 =" SELECT SUM(qty) AS Stock, exp_date FROM ".TB_PREF."stock_moves WHERE batch_no=".db_escape(get_post('batch_no'))." AND stock_id=".db_escape(get_post('stock_id'));  
					$res = db_query($sql0, "can't execute the query");
					$row_res = db_fetch_row($res);		
					$_POST['qty'] = $row_res[0];
					$exp_date = sql2date($row_res[1]);	
					hidden('exp_date', $exp_date);
					if($kv_exp_date)
						label_cell($exp_date);						
				} else {					
					$_POST['qty'] = 0;
					if($kv_exp_date)
						date_cells(null, 'exp_date', null);
				}
			}else {		
				if($kv_exp_date)
						date_cells(null, 'exp_date', null);
				$_POST['qty'] = 0;
			}
			$Ajax->activate('items_table');
		}	else 
			$_POST['qty'] = 0;
	 }
    	$item_info = get_item_edit_info($_POST['stock_id']);

		$dec = $item_info['decimals'];
   		$_POST['qty'] = number_format2(0, $dec);
   		// $_POST['std_cost'] = price_decimal_format($item_info["material_cost"], $dec2);
   		// display_error($_POST['std_cost']);
   		// get_betch_price($myrow['batch_no'],$bom_item["stock_id"]);	
		$_POST['units'] = $item_info["units"];
	}
   		$_POST['std_cost'] = price_decimal_format(get_betch_price($_POST["batch_no"],$_POST['stock_id'],true), $dec2);

	if ($order->fixed_asset) {
		hidden('qty', 1);
		qty_cell(1, false, 0);
	} else
		small_qty_cells(null, 'qty', $_POST['qty'], null, null, $dec);

	label_cell($_POST['units'], '', 'units');

	label_cell($_POST['std_cost']);
	hidden('std_cost',$_POST['std_cost']);
	if ($id != -1)
	{
		button_cell('UpdateItem', _("Update"),
				_('Confirm changes'), ICON_UPDATE);
		button_cell('CancelItemChanges', _("Cancel"),
				_('Cancel changes'), ICON_CANCEL);
		hidden('LineNo', $line_no);
 		set_focus('qty');
	}
	else
	{
		submit_cells('AddItem', _("Add Item"), "colspan=2",
		    _('Add new item to document'), true);
	}

	end_row();
}


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

function adjustment_options_controls()
{
	  echo "<br>";
	  start_table();

	  textarea_row(_("Memo"), 'memo_', null, 50, 3);

	  end_table(1);
}


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

