fmsystem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fmsystem-commits] [6581] rental: updates for regulation solution, ch


From: Joakim Hop
Subject: [Fmsystem-commits] [6581] rental: updates for regulation solution, changed logic for calcuation of regulation and show affected contract of a regulation
Date: Thu, 11 Nov 2010 14:51:21 +0000

Revision: 6581
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=6581
Author:   joakim_hop
Date:     2010-11-11 14:51:20 +0000 (Thu, 11 Nov 2010)
Log Message:
-----------
rental:  updates for regulation solution, changed logic for calcuation of 
regulation and show affected contract of a regulation

Modified Paths:
--------------
    trunk/rental/inc/class.soadjustment.inc.php
    trunk/rental/inc/class.socontract.inc.php
    trunk/rental/inc/class.uiadjustment.inc.php
    trunk/rental/inc/model/class.contract.inc.php
    trunk/rental/setup/phpgw_no.lang
    trunk/rental/templates/base/contracts_for_regulation_list.php

Modified: trunk/rental/inc/class.soadjustment.inc.php
===================================================================
--- trunk/rental/inc/class.soadjustment.inc.php 2010-11-11 08:58:39 UTC (rev 
6580)
+++ trunk/rental/inc/class.soadjustment.inc.php 2010-11-11 14:51:20 UTC (rev 
6581)
@@ -140,11 +140,11 @@
                        $adjustment->get_new_price(),
                        $adjustment->get_percent(),
                        $adjustment->get_interval(),
-            $adjustment->get_adjustment_date(),
-            '\''.$adjustment->get_adjustment_type().'\'',
-            ($adjustment->is_manual() ? "true" : "false"),
-            ($adjustment->is_executed() ? "true" : "false"),
-            $adjustment->get_year()
+                       $adjustment->get_adjustment_date(),
+                       '\''.$adjustment->get_adjustment_type().'\'',
+                       ($adjustment->is_manual() ? "true" : "false"),
+                       ($adjustment->is_executed() ? "true" : "false"),
+                       $adjustment->get_year()
                );
 
                $query ="INSERT INTO rental_adjustment (" . join(',', $cols) . 
") VALUES (" . join(',', $values) . ")";
@@ -188,7 +188,6 @@
        
        public function run_adjustments()
        {
-               //TODO: 
                /* check if there are incomplete adjustments (for today)
                 * gather all adjustable contracts with 
                 *              interval = adjustment interval and this year = 
last adjusted + interval
@@ -199,12 +198,12 @@
                 * update adjustment -> set is_executed to true
                 * update price book elements according to type if interval=1
                 */
-               $current_date = strtotime('now'); //TODO: fix this
-               $prev_day = mktime(0,0,0,date('m'),date('d')-1,date('Y'));
+               
+               $prev_day = mktime(0,0,0,date('m'),date('d'),date('Y'));
                $next_day = mktime(0,0,0,date('m'),date('d')+1,date('Y'));
 
                //get incomplete adjustments for today
-               $adjustments_query = "SELECT * FROM rental_adjustment WHERE NOT 
is_executed AND (adjustment_date < {$next_day} AND adjustment_date > 
{$prev_day})";
+               $adjustments_query = "SELECT * FROM rental_adjustment WHERE NOT 
is_executed AND (adjustment_date < {$next_day} AND adjustment_date >= 
{$prev_day})";
                //var_dump($adjustments_query);
                $result = $this->db->query($adjustments_query);
                //var_dump("etter spr");
@@ -264,8 +263,8 @@
                        //gather all adjustable contracts
                        $adjustable_contracts = "SELECT id, adjustment_share, 
date_start, adjustment_year FROM rental_contract ";
                        $adjustable_contracts .= "WHERE location_id = 
'{$adjustment->get_responsibility_id()}' AND adjustable ";
-                       $adjustable_contracts .= "AND (";
-                       $adjustable_contracts .= "(adjustment_interval = 
{$adjustment->get_interval()} AND (adjustment_year + 
{$adjustment->get_interval()}) = {$adjustment->get_year()})";
+                       $adjustable_contracts .= "AND adjustment_interval = 
{$adjustment->get_interval()} ";
+                       $adjustable_contracts .= "AND (((adjustment_year + 
{$adjustment->get_interval()}) <= {$adjustment->get_year()})";
                        $adjustable_contracts .= " OR ";
                        $adjustable_contracts .= "(adjustment_year IS NULL OR 
adjustment_year = 0)";
                        $adjustable_contracts .= ")";
@@ -279,7 +278,10 @@
                                $adj_year = 
$this->unmarshal($this->db->f('adjustment_year', true), 'int');
                                $start_year = date('Y', $date_start);
 
-                               if(($adj_year != null && $adj_year > 0) || 
(($adj_year == null || $adj_year == 0) && ($start_year + 
$adjustment->get_interval() == $adjustment->get_year())))
+                               $contract = 
rental_socontract::get_instance()->get_single($contract_id);
+
+                               $firstJanAdjYear = 
mktime(0,0,0,1,1,$adjustment->get_year());
+                               if($contract->is_active($firstJanAdjYear) && 
(($adj_year != null && $adj_year > 0) || (($adj_year == null || $adj_year == 0) 
&& ($start_year + $adjustment->get_interval() <= $adjustment->get_year()))))
                                {
                                        //update adjustment_year on contract
                                        
rental_socontract::get_instance()->update_adjustment_year($contract_id, 
$adjustment->get_year());
@@ -374,5 +376,22 @@
                }
                return true;
        }
+       
+       public function newer_executed_regulation_exists($adjustment){
+               $columns = "id";
+               $table = "rental_adjustment";
+               $conditions = "is_executed='true'".
+                                       "AND adjustment_date > 
{$adjustment->get_adjustment_date()}".
+                                       "AND 
adjustment_interval={$adjustment->get_interval()}".
+                                       "AND 
responsibility_id={$adjustment->get_responsibility_id()}";
+               $sql = "Select $columns from $table where $conditions"; 
+               
+               $result = $this->db->query($sql);
+               
+               if($this->db->num_rows() > 0){
+                       return true;
+               }
+               return false;
+       }
 }
 ?>

Modified: trunk/rental/inc/class.socontract.inc.php
===================================================================
--- trunk/rental/inc/class.socontract.inc.php   2010-11-11 08:58:39 UTC (rev 
6580)
+++ trunk/rental/inc/class.socontract.inc.php   2010-11-11 14:51:20 UTC (rev 
6581)
@@ -179,12 +179,19 @@
                        $adjustment_interval = 
$this->marshal($filters['adjustment_interval'],'int');
                        $adjustment_year = 
$this->marshal($filters['adjustment_year'],'int');
                        
-                       if($this->marshal($filters['adjustment_is_executed'])){
+                       if($filters['adjustment_is_executed']){
                                $filter_clauses[] = "contract.adjustment_year = 
{$adjustment_year}";
                        }
                        else{
-                               $filter_clauses[] = "contract.adjustment_year + 
{$adjustment_interval} = {$adjustment_year}";
+                               $filter_clauses[] = "contract.adjustment_year + 
{$adjustment_interval} <= {$adjustment_year}";
                        }
+                       
+                       $firstJanAdjYear = mktime(0,0,0,1,1,$adjustment_year);
+                       
+                       //make sure the contracts are active
+                       $filter_clauses[] = "(contract.date_end is null OR 
contract.date_end >= {$firstJanAdjYear})";
+                       $filter_clauses[] = "contract.date_start is not null 
AND contract.date_start <= {$firstJanAdjYear}";
+                       
                        $filter_clauses[] = "contract.adjustable IS true";
                        $filter_clauses[] = "contract.adjustment_interval = 
{$adjustment_interval}";
                        

Modified: trunk/rental/inc/class.uiadjustment.inc.php
===================================================================
--- trunk/rental/inc/class.uiadjustment.inc.php 2010-11-11 08:58:39 UTC (rev 
6580)
+++ trunk/rental/inc/class.uiadjustment.inc.php 2010-11-11 14:51:20 UTC (rev 
6581)
@@ -96,7 +96,7 @@
                {
                        default:
                                $value['ajax'][] = false;
-                               $value['actions'][] = 
html_entity_decode(self::link(array('menuaction' => 'rental.uiadjustment.view', 
'id' => $value['id'])));
+                               $value['actions'][] = 
html_entity_decode(self::link(array('menuaction' => 
'rental.uiadjustment.show_affected_contracts', 'id' => $value['id'])));
                                $value['labels'][] = lang('show');
                                $value['ajax'][] = false;
                                $value['actions'][] = 
html_entity_decode(self::link(array('menuaction' => 'rental.uiadjustment.edit', 
'id' => $value['id'])));
@@ -107,9 +107,9 @@
                                $value['ajax'][] = false;
                                $value['actions'][] = 
html_entity_decode(self::link(array('menuaction' => 
'rental.uiadjustment.delete', 'id' => $value['id'])));
                                $value['labels'][] = lang('delete');
-                               $value['ajax'][] = false;
-                               $value['actions'][] = 
html_entity_decode(self::link(array('menuaction' => 
'rental.uiadjustment.show_affected_contracts', 'id' => $value['id'])));
-                               $value['labels'][] = 
lang('show_affected_contracts');
+                               //$value['ajax'][] = false;
+                               //$value['actions'][] = 
html_entity_decode(self::link(array('menuaction' => 
'rental.uiadjustment.show_affected_contracts', 'id' => $value['id'])));
+                               //$value['labels'][] = 
lang('show_affected_contracts');
                                
                        }
        }
@@ -271,9 +271,17 @@
        {
                $adjustment_id = (int)phpgw::get_var('id');
                $adjustment = 
rental_soadjustment::get_instance()->get_single($adjustment_id);
+
+               //if there exist another regulation that has been exectued 
after current regulation with the same filters, the affected list will be out 
of date.
+               $show_affected_list = true;
+               if($adjustment->is_executed()){
+                       
if(rental_soadjustment::get_instance()->newer_executed_regulation_exists($adjustment))$show_affected_list
 = false;
+               }
+
                $this->render('contracts_for_regulation_list.php', 
array('adjustment_id' => $adjustment_id, 
                                                                                
                                                        'adjustment' => 
$adjustment,
-                                                                               
                                                        'cancel_link' => 
self::link(array('menuaction' => 'rental.uiadjustment.index'))));
+                                                                               
                                                        'cancel_link' => 
self::link(array('menuaction' => 'rental.uiadjustment.index')),
+                                                                               
                                                        'show_affected_list' => 
$show_affected_list));
        }
        
        public function run_adjustments()

Modified: trunk/rental/inc/model/class.contract.inc.php
===================================================================
--- trunk/rental/inc/model/class.contract.inc.php       2010-11-11 08:58:39 UTC 
(rev 6580)
+++ trunk/rental/inc/model/class.contract.inc.php       2010-11-11 14:51:20 UTC 
(rev 6581)
@@ -995,9 +995,11 @@
                        }
                }
                
-               public function is_active()
+               public function is_active($date)
                {
-                       $ts = strtotime(date('Y-m-d')); // timestamp for today
+                       $ts = $date;
+                       if(!$ts)
+                               $ts = strtotime(date('Y-m-d')); // timestamp 
for today
                        
                        $date_start = 
$this->get_contract_date()->get_start_date();
                        $date_end = $this->get_contract_date()->get_end_date();

Modified: trunk/rental/setup/phpgw_no.lang
===================================================================
--- trunk/rental/setup/phpgw_no.lang    2010-11-11 08:58:39 UTC (rev 6580)
+++ trunk/rental/setup/phpgw_no.lang    2010-11-11 14:51:20 UTC (rev 6581)
@@ -20,6 +20,7 @@
 adjustment_is_executed rental  no      Reguleringen er utført
 adjustment_is_not_executed     rental  no      Reguleringen er ikke utført
 adjustment_list        rental  no      Reguleringer
+adjustment_list_out_of_date    rental  no      Det er kjørt en nyere 
regulering for samme utvalg av kontrakter
 adjustment_share       rental  no      Reguleringsandel
 adjustment_type        rental  no      Reguleringstype
 adjustment_year        rental  no      Sist regulert

Modified: trunk/rental/templates/base/contracts_for_regulation_list.php
===================================================================
--- trunk/rental/templates/base/contracts_for_regulation_list.php       
2010-11-11 08:58:39 UTC (rev 6580)
+++ trunk/rental/templates/base/contracts_for_regulation_list.php       
2010-11-11 14:51:20 UTC (rev 6581)
@@ -42,19 +42,26 @@
        </div>
        <div style="float: left; width: 100%;">
        <?php
-               $list_form = false; 
-               $list_id = 'contracts_for_adjustment';
-               $url_add_on = '&amp;type='.$list_id.'&amp;id='.$adjustment_id;
-               $editable = false;
-               $extra_cols = array(
-                       array("key" => "type", "label" => 
lang('responsibility'), "index" => 3),
-                       array("key" => "composite", "label" => 
lang('composite'), "sortable"=>'true', "index" => 4),
-                       array("key" => "party", "label" => lang('party'), 
"sortable"=>'true', "index" => 5),
-                       array("key" => "adjustment_interval", "label" => 
lang('adjustment_interval'), "sortable"=>false),
-                       array("key" => "adjustment_share", "label" => 
lang('adjustment_share'), "sortable"=>false),
-                       array("key" => "adjustment_year", "label" => 
lang('adjustment_year'), "sortable"=>false)
-               );
-               include('contract_list_partial.php'); 
+               if($show_affected_list){
+                       $list_form = false; 
+                       $list_id = 'contracts_for_adjustment';
+                       $url_add_on = 
'&amp;type='.$list_id.'&amp;id='.$adjustment_id;
+                       $editable = false;
+                       $extra_cols = array(
+                               array("key" => "type", "label" => 
lang('responsibility'), "index" => 3),
+                               array("key" => "composite", "label" => 
lang('composite'), "sortable"=>'true', "index" => 4),
+                               array("key" => "party", "label" => 
lang('party'), "sortable"=>'true', "index" => 5),
+                               array("key" => "adjustment_interval", "label" 
=> lang('adjustment_interval'), "sortable"=>false),
+                               array("key" => "adjustment_share", "label" => 
lang('adjustment_share'), "sortable"=>false),
+                               array("key" => "adjustment_year", "label" => 
lang('adjustment_year'), "sortable"=>false)
+                       );
+                       include('contract_list_partial.php');
+               }
+               else{
        ?>
+               <h3><?php echo lang("adjustment_list_out_of_date")?></h3>
+       <?php
+               }
+       ?>
        </div>
 </div>
\ No newline at end of file




reply via email to

[Prev in Thread] Current Thread [Next in Thread]