<?php /* PROJECTS $Id: addedit.php,v 1.56 2003/09/11 02:47:22 gregorerhardt Exp $ */
$invoice_id = intval( dPgetParam( $_REQUEST, "invoice_id", 0 ) );
$project_id = intval( dPgetParam( $_REQUEST, "project_id", 0 ) );

// check permissions for this record
// Done automatically in index.php
//$canEdit = !getDenyEdit( $m, $project_id);
if (!$canEdit) {
	$AppUI->redirect( "m=public&a=access_denied" );
}

// format dates
$df = $AppUI->getPref('SHDATEFORMAT');

$start_date = new CDate( $row->project_start_date );

$end_date = intval( $row->project_end_date ) ? new CDate( $row->project_end_date ) : null;
$actual_end_date = intval( $row->project_actual_end_date ) ? new CDate( $row->project_actual_end_date ) : null;

// setup the title block
$ttl = $invoice_id > 0 ? "Edit Invoice" : "New Invoice";
$titleBlock = new CTitleBlock( $ttl, 'applet3-48.png', $m, "$m.$a" );
$titleBlock->addCrumb( "?m=projects", "projects list" );
if ($project_id != 0)
  $titleBlock->addCrumb( "?m=projects&a=view&project_id=$project_id", "view this project" );
$titleBlock->addCrumb( '?m=invoice', 'view all invoices' );
$titleBlock->show();

$task_id=(int)$_REQUEST["task_id"];
if($task_id == '') {
	$task_id=0;
}

$q = new DBQuery;
$q->addQuery('task_log_id');
$q->addTable('invoice_task_queue');
$temp_billed = db_loadColumn($q->prepare());
$billed = '';
foreach ($temp_billed as $task_log)
	$billed .= $task_log . ', ';
if (!empty($billed))
	$billed = '(' . substr($billed, 0, -2) . ')';

$q->clear();
$q->addQuery('
	task_log.task_log_id as task_log_id,
	task_log_task,
	task_log_name,
	task_log_description,
	task_log_creator,
	task_log_hours,
	task_log_date,
	billingcode_name');
$q->addTable('task_log');
$q->addTable('tasks');
$q->addTable('projects');
$q->leftJoin('billingcode', 'b', 'billingcode_id = task_log_costcode');
$q->addWhere('tasks.task_project = project_id'); 
if (!empty($billed))
	$q->addWhere('task_log_id not in ' . $billed);
$q->addWhere('tasks.task_id = task_log_task');
$q->addWhere('project_id = ' . $project_id);

if (!empty($_POST["start_date"])) {
	$actual_start_date=strtotime($_REQUEST["start_date"]);
	$start_date=new CDate($actual_start_date);
	$q->addWhere('task_log_date > \'' . $_REQUEST['inv_start_date'] . "'");
}
if (!empty($_POST['end_date']))
{
	$actual_end_date=strtotime($_REQUEST["end_date"]);
	$end_date=new CDate($actual_end_date);
	$q->addWhere("task_log_date < '" . $_REQUEST['inv_end_date'] . "' ");
}
if ($task_id != 0)
	$q->addWhere('task_log_task = ' . $task_id);

//$sql .= "ORDER BY task_log_name";
$tasks_log = $q->loadList();

$q->clear();
$q->addQuery('
	task_queue_id,
	task_log_id,
	task_amount');
$q->addTable('invoice_task_queue');
$q->addWhere('task_invoice = ' . $invoice_id);
$q->addOrder('task_log_id DESC');
$tasks = $q->loadList();

$q->clear();
$q->addQuery('task_id, task_name');
$q->addTable('tasks');
$q->addTable('task_log');
$q->addWhere('task_id = task_log_task');
if (!empty($billed)) 
	$q->addWhere('task_log_id not in ' . $billed);
//AND task_percent_complete  > 0
$q->addWhere('task_project = ' . $project_id);
$q->addGroup('task_id HAVING count(task_log_task) > 0');
$q->addOrder('task_name ASC');

$task_list=array("0"=>"Select Task");
$ptrc = $q->exec();
$nums=db_num_rows($ptrc);
echo db_error();
for ($x=0; $x < $nums; $x++) {
	$row = db_fetch_assoc( $ptrc );
	$task_list[$row["task_id"]] = $row["task_name"];
}

$q->clear();
$q->addQuery('project_company');
$q->addTable('projects');
$q->addWhere('project_id = '. $project_id);

//$tmpprj=db_exec($sql);
//$row=db_fetch_assoc($tmpprj);
//$company_id=$row["project_company"];
$company_id = $q->loadResult();


$q->clear();
$q->addQuery('
        billingcode_id,
        billingcode_name,
        billingcode_value');
$q->addTable('billingcode');
$q->addWhere('company_id = ' . $company_id);
$q->addOrder('billingcode_name ASC');

$billingcodes = $q->loadList();

function showtask(&$a) {
        global $AppUI, $project_id, $billingcodes;
        $df = $AppUI->getPref( 'SHDATEFORMAT' );

$q = new DBQuery;
$q->addQuery('
        task_log_id,
        task_log_task,
        task_log_name,
        task_log_description,
        task_log_costcode,
        task_log_creator,
        task_log_hours,
        task_log_date,
        task_log_task');
$q->addTable('task_log');
$q->addWhere('task_log_id = ' . $a['task_log_id']); 
$q->addOrder('task_log_name ASC');

$tmptasks=$q->exec();
$tasks=db_fetch_assoc($tmptasks);

$q->clear();
$q->addQuery('
        contact_first_name,
        contact_last_name');
$q->addTable('contacts');
$q->leftJoin('users', 'u', 'user_contact = contact_id');
$q->addWhere('user_id = ' . $tasks['task_log_creator']);

$tmpuser=$q->exec();
$username=db_fetch_assoc($tmpuser);

if ($a["task_amount"] == "0") {
        $costdesc="None";
        for ($x=0; $x < count($billingcodes); $x++) {
                if ($billingcodes[$x]["billingcode_id"] == $tasks["task_log_costcode"]) {
                        $costdesc=$billingcodes[$x]["billingcode_name"];
                        $rate=$billingcodes[$x]["billingcode_value"];
                }
        }
        $amount=round($rate * $tasks["task_log_hours"],2);
} else {
        $costdesc="Fixed Price";
        $amount=round($a["task_amount"],2);
}

        $s = "\n<tr>";
        $s .= '<td><a href="./index.php?m=tasks&a=view&task_id=' . $tasks["task_log_task"] . '"><img src="./images/icons/pencil.gif" border="0" alt="Edit"></a></td>';
	$s .= "<td><a href=\"javascript:delIt2({$a['task_queue_id']});\" title=\"".$AppUI->_('delete')."\"><img src=\"./images/icons/stock_delete-16.png\" border=\"0\" alt=\"Delete\"></a></td>";
	$tdate = new CDate($tasks['task_log_date']);
	$s .= '<td nowrap align="center">' . $tdate->format($df) . '</td>';
        $alt = htmlspecialchars( $tasks["task_log_name"] );
        $s .= '<td align=left>&nbsp;<a href="./index.php?m=tasks&a=view&task_id=' . $tasks["task_log_task"] . '" title="' . $alt . '">' . $tasks["task_log_name"] . '</a></td>';
        $s .= '<td nowrap="nowrap" align=center>'.$username["contact_first_name"].' '.$username["contact_last_name"].'</td>';
        $s .= '<td nowrap="nowrap" align=center>'.$tasks["task_log_hours"].'</td>';
        $s .= '<td nowrap="nowrap">'.$costdesc.'</td>';
        $s .= '<td nowrap="nowarap">' . dPgetConfig('currency_symbol').$amount.'</td>';
        $s .= '</tr>';
	$s .= '<tr>';
	$s .= '<td colspan="2">&nbsp;</td>';
	$s .= '<td colspan="5">';
	$s .= $tasks["task_log_description"];
	$s .= '</td>';
	$s .= "</tr>\n";
        echo $s;

	return $amount;
}

function showtasklog(&$a) {
        global $AppUI, $project_id;
        $df = $AppUI->getPref( 'SHDATEFORMAT' );

$q = new DBQuery;
$q->addQuery('
        contact_first_name,
        contact_last_name');
$q->addTable('contacts');
$q->leftJoin('users', 'u', 'user_contact = contact_id');
$q->addWhere('user_id = ' . $a['task_log_creator']);

$tmpuser=$q->exec();
$username=db_fetch_assoc($tmpuser);

$q->clear();
$q->addQuery('task_invoice');
$q->addTable('invoice_task_queue');
$q->addWhere('task_log_id = ' . $a['task_log_id']);

$tmpcheck=$q->exec();
$check=db_fetch_assoc($tmpcheck);

$date = new CDate($a['task_log_date']);
	$s='
	<tr valign="top">
		<td><input type="checkbox" name="num_'.$a["task_log_id"].'"></td>
		<td nowrap>'.$date->format($df).'</td>
		
		<td>'.$a["task_log_description"].'</td>
        	<td nowrap>'.$username["contact_first_name"].' '.$username["contact_last_name"].'</td>
        	<td nowrap>'.$a['task_log_hours'].'</td>
        	<td nowrap>'.$a['billingcode_name'].'</td>
        	<td align="right" nowrap="nowrap">$<input type="text" name="fixed_'.$a['task_log_id'].'" size="6">
	</tr>
	';
	if (trim($check['task_invoice']) == '') 
		echo $s;
}


?>
<link rel="stylesheet" type="text/css" media="all" href="lib/calendar/calendar-dp.css" title="blue" />
<!-- import the calendar script -->
<script type="text/javascript" src="<?php echo $AppUI->cfg['base_url'];?>lib/calendar/calendar.js"></script>
<!-- import the language module -->
<script type="text/javascript" src="<?php echo $AppUI->cfg['base_url'];?>lib/calendar/lang/calendar-<?php echo $AppUI->user_locale; ?>.js"></script>

<script language="javascript">

function submitIt() {
	var f = document.editFrm;
	var msg = '';

	/*
	if (f.project_end_date.value > 0 && f.project_end_date.value < f.project_start_date.value) {
		msg += "\n<?php echo $AppUI->_('projectsBadEndDate1');?>";
	}
	if (f.project_actual_end_date.value > 0 && f.project_actual_end_date.value < f.project_start_date.value) {
		msg += "\n<?php echo $AppUI->_('projectsBadEndDate2');?>";
	}
	*/
	if (msg.length < 1) {
		f.submit();
	} else {
		alert(msg);
	}
}

function delIt2(id) {
        if (confirm( "<?php echo $AppUI->_('doDelete', UI_OUTPUT_JS).' '.$AppUI->_('Invoice Item', UI_OUTPUT_JS).'?';?>" )) {
                document.frmDelete2.task_queue_id.value = id;
                document.frmDelete2.submit();
        }
}

function changeIt() {
	var f=document.changeMe;
	f.submit();
}

function searchIt() {
	document.searchMe.submit();
}

function changeStat() {
        var f=document.frmStatus;
        f.submit();
}

var calendarField = '';
var calWin = null;

function popCalendar( field ){
        calendarField = field;
        idate = eval( 'document.searchMe.' + field + '.value' );
        window.open( 'index.php?m=public&a=calendar&dialog=1&callback=setCalendar&date=' + idate, 'calwin', 'top=250,left=250,width=250, height=220, scollbars=false' );
}

/**
 *      @param string Input date in the format YYYYMMDD
 *      @param string Formatted date
 */
function setCalendar( idate, fdate ) {
        fld_date = eval( 'document.searchMe.inv_' + calendarField );
        fld_fdate = eval( 'document.searchMe.' + calendarField );
        fld_date.value = idate;
        fld_fdate.value = fdate;
}

function checkUncheckAll(theElement) {
 //documentation for this script at http://www.shawnolson.net/a/693/
     var theForm = theElement.form, z = 0;
     while (theForm[z].name != 'checkall') {
	if (theForm[z].type == 'checkbox')
	      theForm[z].checked = theElement.checked;
      z++;
     }
    }

</script>

<table border="0" cellpadding="4" cellspacing="0" width="100%" class="std">
<form name="frmDelete2" action="./index.php?m=invoice" method="post">
        <input type="hidden" name="dosql" value="do_invoice_aed">
        <input type="hidden" name="del" value="1" />
        <input type="hidden" name="task_queue_id" value="0" />
	<input type="hidden" name="invoice_project" value="<?php echo $project_id;?>" />
	<input type="hidden" name="task_invoice" value="<?php echo $invoice_id;?>" />
</form>

<table cellspacing="0" cellpadding="4" border="0" width="40%" class="std" valign="top">
<form name="statusFrm" action="./index.php?m=invoice" method="post">
        <input type="hidden" name="dosql" value="do_invoice_aed" />
	<input type="hidden" name="del" value="0" />
        <input type="hidden" name="invoice_project" value="<?php echo $project_id;?>" />
        <input type="hidden" name="task_invoice" value="<?php echo $invoice_id;?>" />
	<input type="hidden" name="invoice_id" value="<?php echo $invoice_id;?>" />
        <input type="hidden" name="project_creator" value="<?php echo $AppUI->user_id;?>" />
<tr valign="top" width="90%">
<td align="left">
Invoices will not be editable once the status changes from Open for Editing.
</td>
</tr>
<tr valign="top" width="90%">
<td align="right">Invoice Status&nbsp;
	<select name="stat" size="1" class="text">
	<option value="0">Open for Editing</option>
	<option value="1">Pending Payment</option>
	<option value="2">Paid</option>
	</select>
</td>
</tr>
<tr>
<td align="right">
<input class="button" type="submit" name="submit" value="<?php echo $AppUI->_('submit');?>"/>
</td>
</tr>
</form>
</table>


<br>


<table width="100%" border="0" cellpadding="2" cellspacing="1" class="tbl">
<tr>
        <th width="10">&nbsp;</th>
	<th width="15">&nbsp;</td>
        <th><?php echo $AppUI->_('Date');?></th>
        <th><?php echo $AppUI->_('Task Name');?></th>
        <th width="250" nowrap="nowrap"><?php echo $AppUI->_('Task Creator');?></th>
        <th width="100" nowrap="nowrap"><?php echo $AppUI->_('Task Hours');?></th>
        <th width="100" nowrap="nowrap"><?php echo $AppUI->_('Billing Code');?></th>
	<th width="100" nowrap="nowrap"><?php echo $AppUI->_('Amount');?></th>
</tr>
<?php
$myamount=0;
for ($s=0; $s < count($tasks); $s++) {
        $tnums=count($tasks);
        if ($tnums) {
                $tmpamount=0;
                $tmpamount = showtask( $tasks[$s], 1 );
                $myamount=$myamount + $tmpamount;
        }
}
?>
<tr>
        <td colspan=6 align=right><b>Total</b></td>
        <td>$<?php echo $myamount ?></td>
</tr>
</table>

<table cellspacing="0" cellpadding="4" border="0" width="70%" class="std">
<tr valign="top" width="90%">

<form name="searchMe" action="./index.php?m=invoice&a=addedit" method="post">
        <input type="hidden" name="invoice_project" value="<?php echo $project_id;?>" />
        <input type="hidden" name="project_id" value="<?php echo $project_id;?>" />
        <input type="hidden" name="invoice_id" value="<?php echo $invoice_id;?>" />
        <input type="hidden" name="task_invoice" value="<?php echo $invoice_id;?>" />
        <input type="hidden" name="project_creator" value="<?php echo $AppUI->user_id;?>" />
<td align="right" nowrap="nowrap"><?php echo $AppUI->_('Start Date');?>
<input type="hidden" name="inv_start_date" value="" class="text" />
<input type="text" name="start_date" value="" class="text" />
<a href="#" onClick="popCalendar('start_date')">
<img src="./images/calendar.gif" width="24" height="12" alt="<?php echo $AppUI->_('Calendar');?>" border="0" />
</a>
</td>

<td align="right" nowrap="nowrap"><?php echo $AppUI->_('End Date');?>
<input type="hidden" name="inv_end_date" value="" class="text" />
<input type="text" name="end_date" value="" class="text" />
<a href="#" onClick="popCalendar('end_date')">
<img src="./images/calendar.gif" width="24" height="12" alt="<?php echo $AppUI->_('Calendar');?>" border="0" />
</a>
</td>
<td>
		<input class="button" type="button" name="btnFuseSearch" value="<?php echo $AppUI->_('search');?>" onClick="searchIt();" />
</td>
</tr>
</form>

<form name="changeMe" action="./index.php?m=invoice&a=addedit" method="post">
        <input type="hidden" name="invoice_project" value="<?php echo $project_id;?>" />
	<input type="hidden" name="project_id" value="<?php echo $project_id;?>" />
	<input type="hidden" name="invoice_id" value="<?php echo $invoice_id;?>" />
        <input type="hidden" name="task_invoice" value="<?php echo $invoice_id;?>" />
        <input type="hidden" name="project_creator" value="<?php echo $AppUI->user_id;?>" />
<tr>
<td align="right" nowrap="nowrap"><?php echo $AppUI->_('Task Name');?>
<?php echo arraySelect( $task_list, 'task_id', 'size="1" class="text" onchange="changeIt();"', $obj->task_status, true );?></td>
</form>

</tr>
<tr>
        <td colspan="2" align="right">
                <input class="button" type="button" name="btnFuseAction" value="<?php echo $AppUI->_('Add selected tasks log to invoice');?>" onClick="submitIt();" />
        </td>
</tr>
<?php
if (isset($_POST['start_date']))
{
?>
<tr><td colspan="2"><?= 'Dates between: ' . $_POST['start_date'] . ' and ' . $_POST['end_date'] . '<br />'?></td></tr>;
<?php
}
?>
</table>
<table width="100%" border="0" cellpadding="2" cellspacing="1" class="tbl">
<tr>
	<th><?= $AppUI->_('Select') ?></th>
        <th><?php echo $AppUI->_('Date');?></th>
        <th><?php echo $AppUI->_('Log Summary');?></th>
        <th nowrap="nowrap"><?php echo $AppUI->_('Creator');?></th>
        <th nowrap="nowrap"><?php echo $AppUI->_('Hours');?></th>
        <th nowrap="nowrap"><?php echo $AppUI->_('Billing Code');?></th>
        <th nowrap="nowrap"><?php echo $AppUI->_('Fixed Amount');?></th>
</tr>
<form name="editFrm" action="./index.php?m=invoice" method="post">
        <input type="hidden" name="dosql" value="do_invoice_aed" />
        <input type="hidden" name="invoice_project" value="<?php echo $project_id;?>" />
        <input type="hidden" name="task_invoice" value="<?php echo $invoice_id;?>" />
        <input type="hidden" name="project_creator" value="<?php echo $AppUI->user_id;?>" />
<?php
//echo '<tr><td>'; print_r($tasks_log); echo '</td></tr>';
	for ($s=0; $s < count($tasks_log); $s++) {
		showtasklog( $tasks_log[$s],1);
	}
?>
<tr><td><input type="checkbox" name="checkall" onclick="checkUncheckAll(this);"/>all</td></tr>
</form>
</table>

* <?php echo $AppUI->_('requiredField');?>