Source for file costs.php

Documentation is available at costs.php

  1. <?php
  2. /**
  3. * User/Instrument class matrix
  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. /** uses fields */
  21. require_once 'inc/formslib/joinmatrix.php';
  22. require_once 'inc/formslib/textfield.php';
  23. require_once 'inc/formslib/currencyfield.php';
  24.  
  25. /**
  26. * User/Instrument class matrix
  27. *
  28. * @package    Bumblebee
  29. * @subpackage DBObjects
  30. */
  31. class ClassCost extends DBRow {
  32.  
  33.   function ClassCost($id) {
  34.     $this->DBRow('userclass', $id);
  35.     $this->editable = 1;
  36.     $this->use2StepSync = 1;
  37.  
  38.     $conf = ConfigReader::getInstance();
  39.  
  40.     $f = new IdField('id', T_('UserClass ID'));
  41.     $f->editable = 0;
  42.     $f->duplicateName = 'userclass';
  43.     $this->addElement($f);
  44.     $f = new TextField('name', T_('Name'));
  45.     $attrs = array('size' => '48');
  46.     $f->setAttr($attrs);
  47.     $f->required = 1;
  48.     $f->isValidTest = 'is_nonempty_string';
  49.     $this->addElement($f);
  50.  
  51.     $f = new JoinMatrix('costs', 'id',
  52.                        'userclass',       'id', 'userclass',
  53.                        'instrumentclass', 'id', 'instrumentclass',
  54.                        'classlabel', T_('Cost settings'),
  55.                        T_('Costs for each class of user corresponding to each instrument type'));
  56.     $userfield  = new TextField('name', T_('User Class'), T_('Classes of users'));
  57.     $instrfield = new TextField('name', T_('Instrument Class'), T_('Classes of instrument'));
  58.     //$instrfield->setFormat('id', '%s', array('name'), ' (%40.40s)', $classexample);
  59.     $f->addKeys($userfield,$instrfield);
  60.  
  61.     $cost = new CurrencyField('costfullday',
  62.                               sprintf(T_('Full day cost (%s)'),
  63.                                   sprintf($conf->value('language', 'money_format', '$%s'), '')),
  64.                           T_('Cost of instrument use for a full day'));
  65.     $attrs = array('size' => '6');
  66.     $cost->setAttr(array_merge($attrs,
  67.                     array('float' => true,
  68.                       'precision' => $conf->value('language', 'money_decimal_places', 2))));
  69.     $f->addElement($cost);
  70.     $hours= new TextField('hourfactor', T_('Hourly rate multiplier'),
  71.                           T_('Proportion of daily rate charged per hour'));
  72.     $attrs = array('size' => '6', 'float' => true, 'precision' => 3);
  73.     $hours->setAttr($attrs);
  74.     $f->addElement($hours);
  75.     $halfs= new TextField('halfdayfactor', T_('Half-day rate multiplier'),
  76.                           T_('Proportion of daily rate charged per half-day'));
  77.     $halfs->setAttr($attrs);
  78.     $f->addElement($halfs);
  79.     $discount= new TextField('dailymarkdown', T_('Daily bulk discount %'),
  80.                           T_('Discount for each successive day\'s booking'));
  81.     $discount->setAttr($attrs);
  82.     $f->addElement($discount);
  83.     $f->colspan = 2;
  84.     $f->editable = 1;
  85.     //$f->joinSetup('instrumentclass', array('minspare' => 0));
  86.     $f->setKey($id);
  87.     $this->addElement($f);
  88.  
  89.     $this->fill($id);
  90.     $this->dumpheader = 'Cost object';
  91.     #preDump($this);
  92.   }
  93.  
  94.   function display() {
  95.     return $this->displayAsTable();
  96.   }
  97.  

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