Source for file specialcosts.php

Documentation is available at specialcosts.php

  1. <?php
  2. /**
  3. * Special costs for project/instrument usage editing
  4. *
  5. @author    Stuart Prescott
  6. @copyright  Copyright Stuart Prescott
  7. @license    http://opensource.org/licenses/gpl-license.php GNU Public License
  8. @version    $Id$
  9. @package    Bumblebee
  10. @subpackage DBObjects
  11. */
  12.  
  13. /** Load ancillary functions */
  14. require_once 'inc/typeinfo.php';
  15.  
  16. require_once 'inc/bb/configreader.php';
  17.  
  18. /** parent object */
  19. require_once 'inc/formslib/dbrow.php';
  20. require_once 'inc/formslib/idfield.php';
  21. require_once 'inc/formslib/textfield.php';
  22. require_once 'inc/formslib/referencefield.php';
  23. require_once 'inc/formslib/joindata.php';
  24.  
  25. /**
  26. * Special costs for project/instrument usage editing
  27. *
  28. @package    Bumblebee
  29. @subpackage DBObjects
  30. */
  31. class SpecialCost extends DBRow {
  32.  
  33.   function SpecialCost($id$project$instrument{
  34.     //$this->DEBUG=10;
  35.     $this->DBRow('projectrates'$project'projectid');
  36.     $this->editable = 1;
  37.     $this->ignoreId = 1;
  38.     $this->autonumbering = 0;
  39.     $this->restriction = 'instrid='.qw($instrument).' AND projectid='.qw($project);
  40.     //$this->use2StepSync = 1;
  41.  
  42.     $conf ConfigReader::getInstance();
  43.  
  44.     $f new ReferenceField('projectid'T_('Project'));
  45.     $f->extraInfo('projects''id''name');
  46.     $f->value $project;
  47.     $f->editable 0;
  48.     $f->duplicateName 'project';
  49.     $this->addElement($f);
  50.     $f new ReferenceField('instrid'T_('Instrument'));
  51.     $f->extraInfo('instruments''id''name');
  52.     $f->value $instrument;
  53.     $f->editable 0;
  54.     $f->duplicateName 'instrument';
  55.     $this->addElement($f);
  56.  
  57.     $f new JoinData('costs',
  58.                       'id'$id,
  59.                       'costsettings'T_('Charging settings:'));
  60.     //$f->protoRow->DEBUG = 10;
  61.     $f->protoRow->autonumbering 1;
  62.     //$f->DEBUG=10;
  63.     $f->reportFields[array('id' => 'rate');
  64.  
  65.     $rate new IdField('id'T_('Rate ID')T_('Rate ID'));
  66.     $rate->value $id;
  67.     $f->addElement($rate);
  68.     $cost new CurrencyField('costfullday',
  69.                               sprintf(T_('Full day cost (%s)'),
  70.                                       sprintf($conf->value('language''money_format''$%s')'')),
  71.                               T_('Cost of instrument use for a full day')false);
  72.     $attrs array('size' => '6');
  73.     $cost->setAttr(array_merge($attrs,
  74.                    array('float' => true,
  75.                          'precision' => $conf->value('language''money_decimal_places'2))));
  76.     $f->addElement($cost);
  77.     $hoursnew TextField('hourfactor'T_('Hourly rate multiplier'),
  78.                           T_('Proportion of daily rate charged per hour'));
  79.     $attrs array('size' => '6''float' => true'precision' => 3);
  80.     $hours->setAttr($attrs);
  81.     $f->addElement($hours);
  82.     $halfsnew TextField('halfdayfactor'T_('Half-day rate multiplier'),
  83.                           T_('Proportion of daily rate charged per half-day'));
  84.     $halfs->setAttr($attrs);
  85.     $f->addElement($halfs);
  86.     $discountnew TextField('dailymarkdown'T_('Daily bulk discount %'),
  87.                           T_('Discount for each successive day&#39;s booking'));
  88.     $discount->setAttr($attrs);
  89.     $f->addElement($discount);
  90.  
  91.     $f->joinSetup('id'array('total' => 1));
  92.     $f->colspan 2;
  93.  
  94.     $this->addElement($f);
  95.  
  96.     $this->fill($id);
  97.     $this->dumpheader = 'Cost object';
  98.     $this->insertRow = ($id == -1);
  99.     #preDump($this);
  100.   }
  101.  
  102.   function delete($unused=null{
  103.     //delete our association in the costing table first
  104.     //preDump($this);
  105.     $result $this->fields['costsettings']->rows[0]->delete();
  106.     $this->errorMessage .= $this->fields['costsettings']->rows[0]->errorMessage;
  107.     if ($result == STATUS_OK{
  108.       //then gracefully delete ourselves
  109.       $result |= parent::delete();
  110.     }
  111.     return $result;
  112.   }
  113.  
  114.   function display({
  115.     return $this->displayAsTable();
  116.   }
  117.  

Documentation generated on Tue, 06 Mar 2007 10:01:58 +0000 by phpDocumentor 1.3.0