fmsystem-commits
[Top][All Lists]
Advanced

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

[Fmsystem-commits] [17149] property: calculate tax refund on paid invoic


From: sigurdne
Subject: [Fmsystem-commits] [17149] property: calculate tax refund on paid invoices
Date: Tue, 10 Oct 2017 08:05:38 -0400 (EDT)

Revision: 17149
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=17149
Author:   sigurdne
Date:     2017-10-10 08:05:37 -0400 (Tue, 10 Oct 2017)
Log Message:
-----------
property: calculate tax refund on paid invoices

Modified Paths:
--------------
    trunk/property/inc/class.soinvoice.inc.php
    trunk/property/inc/class.uiinvoice.inc.php
    trunk/property/setup/phpgw_no.lang

Modified: trunk/property/inc/class.soinvoice.inc.php
===================================================================
--- trunk/property/inc/class.soinvoice.inc.php  2017-10-10 09:08:58 UTC (rev 
17148)
+++ trunk/property/inc/class.soinvoice.inc.php  2017-10-10 12:05:37 UTC (rev 
17149)
@@ -675,6 +675,13 @@
                                $ecodimb = isset($data['ecodimb']) ? 
$data['ecodimb'] : '';
                        }
 
+                       $this->db->query('SELECT id, percent FROM fm_ecomva', 
__LINE__, __FILE__);
+                       $tax_codes = array(0 => 0);
+                       while ($this->db->next_record())
+                       {
+                               $tax_codes[$this->db->f('id')] = 
$this->db->f('percent');
+                       }
+
                        $where = 'AND';
 
                        if ($b_account_class)
@@ -738,12 +745,12 @@
                        $start_periode = date('Ym', $start_date);
                        $end_periode = date('Ym', $end_date);
 
-                       $sql = "SELECT district_id,periode,sum(godkjentbelop) 
as consume {$select_account_class}"
+                       $sql = "SELECT district_id,periode,sum(godkjentbelop) 
as consume, mvakode as tax_code {$select_account_class}"
                                . " FROM  fm_ecobilagoverf {$this->join} 
fm_location1 ON (fm_ecobilagoverf.loc1 = fm_location1.loc1) "
                                . " {$this->join} fm_part_of_town ON 
(fm_location1.part_of_town_id = fm_part_of_town.id) "
                                . " {$this->join} fm_b_account ON 
(fm_ecobilagoverf.spbudact_code = fm_b_account.id) "
                                . " WHERE (periode >='{$start_periode}' AND 
periode <= '{$end_periode}' {$filtermethod})"
-                               . " GROUP BY district_id,periode 
$group_account_class"
+                               . " GROUP BY district_id,periode,mvakode 
$group_account_class"
                                . " ORDER BY periode";
                        //echo $sql;
 
@@ -750,44 +757,139 @@
                        $this->db->query($sql, __LINE__, __FILE__);
                        $this->total_records = $this->db->num_rows();
 
-                       $consume = array();
+                       $_consume = array();
 
                        while ($this->db->next_record())
                        {
-                               $consume[] = array
-                                       (
-                                       'consume' => 
round($this->db->f('consume')),
-                                       'period' => $this->db->f('periode'),
-                                       'district_id' => 
$this->db->f('district_id'),
-                                       'account_class' => $b_account_class ? 
$b_account_class : $this->db->f('b_account_class'),
+                               $consume = $this->db->f('consume');
+                               $period = (int)$this->db->f('periode');
+                               $district_id = (int)$this->db->f('district_id');
+                               $account_class = $b_account_class ? 
$b_account_class : $this->db->f('b_account_class');
+                               $tax_code       = (int)$this->db->f('tax_code');
+                               $refund = $consume - ($consume / (1 + 
($tax_codes[$tax_code] / 100)));
+
+                               $_consume[$tax_code][] = array(
+                                       'consume' => $consume,
+                                       'refund'        => $refund,
+                                       'period' => $period,
+                                       'district_id' => $district_id,
+                                       'account_class' => $account_class,
+                                       );
+                       }
+
+                       $map = array();
+                       foreach ($_consume as $_tax_code => $entry)
+                       {
+                               $account_class = $entry[0]['account_class'];
+                               $district_id = $entry[0]['district_id'];
+                               $period = $entry[0]['period'];
+                               $_consume = 0;
+                               $_refund = 0;
+
+                               foreach ($entry as $values)
+                               {
+                                       if($account_class != 
$values['account_class'] && $account_class != $values['district_id'] && 
$account_class != $values['period'] )
+                                       {
+                                               continue;
+                                       }
+                                       $_consume += $values['consume'];
+                                       $_refund += $values['refund'];
+                               }
+
+                               
$map["{$entry[0]['account_class']}_{$entry[0]['district_id']}_{$entry[0]['period']}"]
 = array(
+                                       'consume' => round($_consume),
+                                       'refund' => round($_refund),
+                                       'period' => $entry[0]['period'],
+                                       'district_id' => 
$entry[0]['district_id'],
+                                       'account_class' => 
$entry[0]['account_class'],
                                        'paid' => 'x'
                                );
                        }
 
-                       $sql = "SELECT district_id,periode,sum(godkjentbelop) 
as consume {$select_account_class}"
+                       $__consume = array();
+                       foreach ($map as $key => $value)
+                       {
+                               $__consume[] = $value;
+                       }
+
+                       $sql = "SELECT district_id,periode,sum(godkjentbelop) 
as consume, mvakode as tax_code {$select_account_class}"
                                . " FROM  fm_ecobilag {$this->join} 
fm_location1 ON (fm_ecobilag.loc1 = fm_location1.loc1) "
                                . " {$this->join} fm_part_of_town ON 
(fm_location1.part_of_town_id = fm_part_of_town.id) "
                                . " {$this->join} fm_b_account ON 
(fm_ecobilag.spbudact_code = fm_b_account.id) "
                                . " WHERE (1=1 {$filtermethod})"
-                               . " GROUP BY district_id,periode 
$group_account_class"
+                               . " GROUP BY district_id,periode,mvakode 
$group_account_class"
                                . " ORDER BY periode";
 
                        $this->db->query($sql, __LINE__, __FILE__);
                        $this->total_records += $this->db->num_rows();
 
+                       $_consume = array();
+
                        while ($this->db->next_record())
                        {
-                               $consume[] = array
-                                       (
-                                       'consume' => 
round($this->db->f('consume')),
-                                       'period' => $this->db->f('periode'),
-                                       'district_id' => 
$this->db->f('district_id'),
-                                       'account_class' => $b_account_class ? 
$b_account_class : $this->db->f('b_account_class'),
+                               $consume = $this->db->f('consume');
+                               $period = (int)$this->db->f('periode');
+                               $district_id = (int)$this->db->f('district_id');
+                               $account_class = $b_account_class ? 
$b_account_class : $this->db->f('b_account_class');
+                               $tax_code       = (int)$this->db->f('tax_code');
+                               $refund = $consume - ($consume / (1 + 
($tax_codes[$tax_code] / 100)));
+
+                               $_consume[$tax_code][] = array(
+                                       'consume' => $consume,
+                                       'refund'        => $refund,
+                                       'period' => $period,
+                                       'district_id' => $district_id,
+                                       'account_class' => $account_class,
+                                       );
+                       }
+
+                       $map = array();
+                       foreach ($_consume as $_tax_code => $entry)
+                       {
+                               $account_class = $entry[0]['account_class'];
+                               $district_id = $entry[0]['district_id'];
+                               $period = $entry[0]['period'];
+                               $_consume = 0;
+                               $_refund = 0;
+
+                               foreach ($entry as $values)
+                               {
+                                       if($account_class != 
$values['account_class'] && $account_class != $values['district_id'] && 
$account_class != $values['period'] )
+                                       {
+                                               continue;
+                                       }
+                                       $_consume += $values['consume'];
+                                       $_refund += $values['refund'];
+                               }
+
+                               
$map["{$entry[0]['account_class']}_{$entry[0]['district_id']}_{$entry[0]['period']}"]
 = array(
+                                       'consume' => round($_consume),
+                                       'refund' => round($_refund),
+                                       'period' => $entry[0]['period'],
+                                       'district_id' => 
$entry[0]['district_id'],
+                                       'account_class' => 
$entry[0]['account_class'],
                                        'paid' => ''
                                );
                        }
 
-                       return $consume;
+                       foreach ($map as $key => $value)
+                       {
+                               $__consume[] = $value;
+                       }
+
+//                     while ($this->db->next_record())
+//                     {
+//                             $consume[] = array
+//                                     (
+//                                     'consume' => 
round($this->db->f('consume')),
+//                                     'period' => $this->db->f('periode'),
+//                                     'district_id' => 
$this->db->f('district_id'),
+//                                     'account_class' => $b_account_class ? 
$b_account_class : $this->db->f('b_account_class'),
+//                                     'paid' => ''
+//                             );
+//                     }
+//
+                       return $__consume;
                }
 
                function check_for_updates( $values )

Modified: trunk/property/inc/class.uiinvoice.inc.php
===================================================================
--- trunk/property/inc/class.uiinvoice.inc.php  2017-10-10 09:08:58 UTC (rev 
17148)
+++ trunk/property/inc/class.uiinvoice.inc.php  2017-10-10 12:05:37 UTC (rev 
17149)
@@ -2487,14 +2487,14 @@
 
                        $uicols = array
                                (
-                               'input_type' => array('varchar', 'varchar', 
'varchar', 'link', 'varchar'),
-                               'type' => array('text', 'text', 'text', 'url', 
'text'),
-                               'col_name' => array('district_id', 'period', 
'account_class', 'consume', 'paid'),
-                               'name' => array('district_id', 'period', 
'account_class', 'consume', 'paid'),
-                               'formatter' => array('', '', '', 
'formatLinkIndexInvoice', ''),
+                               'input_type' => array('varchar', 'varchar', 
'varchar', 'link', 'varchar', 'varchar'),
+                               'type' => array('text', 'text', 'text', 'url', 
'text', 'text'),
+                               'col_name' => array('district_id', 'period', 
'account_class', 'consume','refund', 'paid'),
+                               'name' => array('district_id', 'period', 
'account_class', 'consume','refund', 'paid'),
+                               'formatter' => array('', '', '', 
'formatLinkIndexInvoice', '', ''),
                                'descr' => array(lang('District'), 
lang('Period'), lang('Budget account'),
-                                       lang('Consume'), lang('paid')),
-                               'className' => array('center', 'center', 
'center', 'right', 'center')
+                                       lang('Consume'),lang('refund'), 
lang('paid')),
+                               'className' => array('center', 'center', 
'center', 'right', 'right', 'center')
                        );
 
                        $count_uicols_name = count($uicols['name']);

Modified: trunk/property/setup/phpgw_no.lang
===================================================================
--- trunk/property/setup/phpgw_no.lang  2017-10-10 09:08:58 UTC (rev 17148)
+++ trunk/property/setup/phpgw_no.lang  2017-10-10 12:05:37 UTC (rev 17149)
@@ -2241,4 +2241,5 @@
 clear contact  property        no      Fjern kontakperson
 deadline for start     property        no      Frist for oppstart
 deadline for execution property        no      Frist for ferdigstillelse
-outside contract       property        no      Utenfor rammeavtale
\ No newline at end of file
+outside contract       property        no      Utenfor rammeavtale
+refund property        no      Refusjon
\ No newline at end of file




reply via email to

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