/programo/iloj/objektoj_pseuxdopagoj.php

https://github.com/ePaul/aligilo · PHP · 200 lines · 83 code · 27 blank · 90 comment · 4 complexity · f95d6922a4af75d58e3b377d8c5fd45b MD5 · raw file

  1. <?php
  2. // ĉĝĥĵŝŭ
  3. /**
  4. * diversaj objektoj rilataj al (individuaj) Pagoj, rabatoj, krompagoj,
  5. * komune nomitaj "pseŭdopagoj".
  6. *
  7. * @package aligilo
  8. * @subpackage iloj
  9. * @author Martin Sawitzki, Paul Ebermann
  10. * @version $Id$
  11. * @copyright 2001-2004 Martin Sawitzki,
  12. * 2004-2009 Paul Ebermann.
  13. * (de februaro 2009 sub nomo objektoj_pseuxdopagoj.php, antaŭe
  14. * objektoj_diversaj.php, iam eĉ pli frue objektoj.php.)
  15. * Uzebla laŭ kondiĉoj de GNU Ĝenerala Publika Permesilo (GNU GPL)
  16. */
  17. /**
  18. */
  19. /**
  20. * superklaso de ĉiuj pago-similaj klasoj.
  21. *
  22. * - ID
  23. * - partoprenoID
  24. * - kvanto
  25. * - valuto
  26. * - tipo (kialo)
  27. * - dato
  28. * - entajpantoID
  29. *
  30. */
  31. class PseuxdoPago extends Objekto {
  32. /**
  33. * identigilo, pri kiu klaso temas.
  34. * - krom
  35. * - pago
  36. * - rabato
  37. */
  38. var $klaso;
  39. function PseuxdoPago($id, $klaso){
  40. $tabelnomo = $GLOBALS['pp_tabelnomoj'][$klaso];
  41. $this->Objekto($id, $tabelnomo);
  42. $this->klaso = $klaso;
  43. }
  44. /**
  45. * kalkulas, kiom validas la pago/rabato/... en nia cxefa
  46. * valuto.
  47. */
  48. function enCxefaValuto() {
  49. if ($this->datoj['valuto'] == CXEFA_VALUTO) {
  50. return $this->datoj['kvanto'];
  51. }
  52. list($kurzo, $dato) =
  53. eltrovu_kurzon($this->datoj['valuto'],
  54. $this->datoj['dato']);
  55. if (!$kurzo) {
  56. darf_nicht_sein("mankas kurzo por " .
  57. $this->datoj['valuto'] . " je " .
  58. $this->datoj['dato']);
  59. }
  60. return $this->datoj['kvanto'] * $kurzo;
  61. }
  62. }
  63. /**
  64. * Pagoj de la unuopaj partoprenantoj/partoprenoj -
  65. * kaj antaŭpagoj kaj surlokaj pagoj.
  66. *
  67. * Tabelo "pagoj".
  68. *
  69. * - ID
  70. * - partoprenoID
  71. * - kvanto (kiom da)
  72. * - valuto
  73. * - dato
  74. * - tipo
  75. */
  76. class Pago extends PseuxdoPago
  77. {
  78. /* konstruilo */
  79. function Pago($id=0)
  80. {
  81. $this->PseuxdoPago($id,"pago");
  82. }
  83. }
  84. /**
  85. * Individuaj Rabatoj de unuopaj partoprenoj.
  86. *
  87. * - ID
  88. * - partoprenoID
  89. * - kvanto
  90. * - valuto
  91. * - tipo (kialo)
  92. * - dato
  93. * - entajpantoID
  94. *
  95. * tabelo "rabatoj".
  96. */
  97. class Individua_rabato extends PseuxdoPago
  98. {
  99. /** konstruilo */
  100. function Individua_rabato($id=0)
  101. {
  102. $this->PseuxdoPago($id,"rabato");
  103. }
  104. }
  105. /**
  106. * individuaj krompagoj de unuopaj partoprenantoj.
  107. *
  108. * - ID
  109. * - partoprenoID
  110. * - kvanto
  111. * - valuto
  112. * - tipo (kialo)
  113. * - dato
  114. * - entajpantoID
  115. *
  116. */
  117. class Individua_krompago extends PseuxdoPago {
  118. /**
  119. * konstruilo
  120. */
  121. function Individua_krompago($id=0) {
  122. $this->PseuxdoPago($id, "krom");
  123. }
  124. }
  125. function donu_pseuxdopagon($tipo, $id) {
  126. $klasonomo = $GLOBALS['pp_klasonomoj'][$tipo];
  127. return new $klasonomo($id);
  128. }
  129. /**
  130. * kreas tabelon de ĉiuj pseŭdopagoj por iu partoprenanto.
  131. * @param asciistring $tipo la tipo de pseŭdopago
  132. * (pago, rabato, krom)
  133. * @param int $partoprenoID
  134. * @param asciistring $rajto se estas tiu rajto, ni montras ligon
  135. * por redakti en la unua kolumno.
  136. */
  137. function tabelu_pseuxdopagojn_por($tipo, $partoprenoID, $rajto)
  138. {
  139. $sql =
  140. datumbazdemando(array("ID", "kvanto", "valuto", "tipo",
  141. "dato"),
  142. $GLOBALS['pp_tabelnomoj'][$tipo],
  143. array("partoprenoID" => $partoprenoID));
  144. $kolumnoj = array(array('ID','','&ndash;>','z',
  145. "pago-detaloj.php?klaso=" . $tipo .
  146. "&id=XXXXX",''),
  147. array('dato','dato','XXXXX','l','','-1'),
  148. array('kvanto','sumo','XXXXX','r','','-1'),
  149. array('valuto', 'val.', "XXXXX", 'r', '', -1),
  150. array("tipo","tipo",'XXXXX','l','','-1'),
  151. );
  152. if (!rajtas($rajto)) {
  153. array_shift($kolumnoj);
  154. }
  155. sercxu($sql,
  156. array("dato","desc"),
  157. $kolumnoj,
  158. array(array('','',array('&sum; XX','N','z'))),
  159. $tipo."j-partrezultoj",
  160. 0,0,"",'','ne');
  161. }
  162. $GLOBALS['pp_klasonomoj'] =
  163. array('pago' => 'Pago',
  164. 'rabato' => 'Individua_rabato',
  165. 'krom' => 'Individua_krompago');
  166. $GLOBALS['pp_kotizokalkulkategorio'] =
  167. array('pago' => "pagoj",
  168. 'rabato' => "rabato",
  169. "krom" => "krompago");
  170. $GLOBALS['pp_tabelnomoj'] =
  171. array('pago' => "pagoj",
  172. 'rabato' => "individuaj_rabatoj",
  173. 'krom' => "individuaj_krompagoj");