TVObciazeniaVOD.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. Lib::loadClass('RouteBase');
  3. Lib::loadClass('ProcesHelper');
  4. class Route_UrlAction_TVObciazeniaVOD extends RouteBase {
  5. private $conf = array('ID_LIST_SERVICES' => '12', 'ID_LIST_SES_B_TYPES' => '19', 'TABLE' => 'SES_TV_C');
  6. public function handleAuth() {
  7. if (!User::logged()) {
  8. throw new HttpException('Unauthorized', 401);
  9. }
  10. }
  11. public function addTVObciazenieVODAction($ID_SERVICES, $MIESIAC, $BRUTTO) {
  12. if (!preg_match("/^[[:digit:]]{4}-[[:digit:]]{2}$/",$MIESIAC)) throw new Exception("Błędna data");
  13. if (strtotime($MIESIAC) > strtotime(date("Y-m"))) throw new Exception("Błędna data");
  14. if (!preg_match("/^[[:digit:]]+(\.[[:digit:]]{1,2})?$/",$BRUTTO)) throw new Exception("Błędna kwota");
  15. if ($BRUTTO == 0) throw new Exception("Błędna kwota");
  16. if (!($ID_BILLING_USERS = DB::getPDO()->fetchValue("select ID_BILLING_USERS from SES_TV_A where ID_SERVICES='{$ID_SERVICES}'"))) throw new Exception("Błąd danych");
  17. if (!($VAT = DB::getPDO()->fetchValue("select VAT from LIST_SERVICES where ID='{$this->conf['ID_LIST_SERVICES']}'"))) throw new Exception("Błąd danych");
  18. $sqlObj = new stdClass();
  19. $sqlObj->ID_SERVICES = $ID_SERVICES;
  20. $sqlObj->ID_BILLING_USERS = $ID_BILLING_USERS;
  21. $sqlObj->TYPE = $this->conf['ID_LIST_SES_B_TYPES'];
  22. $sqlObj->VALUE1 = $MIESIAC;
  23. $sqlObj->VALUE2 = V::nettoOdBrutto($BRUTTO,$VAT);
  24. $id = DB::getDB()->ADD_NEW_OBJ($this->conf['TABLE'], $sqlObj);
  25. return $id>0;
  26. }
  27. public function defaultAction() {
  28. SE_Layout::gora();
  29. SE_Layout::menu();
  30. try {
  31. if (!($ID_SERVICES = V::get('ID_SERVICES',0,$_GET,'int'))) throw new Exception("Błąd parametru");
  32. $query = "select c.ID as ID_BILLING_USERS, c.P_NAME, c.P_NAME_SECOND, c.P_ADDRESS_STREET, c.P_ADDRESS_HOUSE, c.P_ADDRESS_HOME, c.P_ADDRESS_POST_CODE, c.P_ADDRESS_CITY, stva.S_ADDRESS_STREET from SES_TV_A stva join COMPANIES c on c.ID=stva.ID_BILLING_USERS where stva.ID_SERVICES='{$ID_SERVICES}'";
  33. $result = DB::getPDO()->fetchall($query);
  34. if (!$result) throw new Exception("Błąd danych");
  35. if (($MIESIAC = V::get('MIESIAC','',$_POST))!='' && ($BRUTTO = V::get('BRUTTO','',$_POST))) {
  36. try {
  37. if ($this->addTVObciazenieVODAction($ID_SERVICES, $MIESIAC, $BRUTTO)) SE_Layout::alert('success','Pomyślnie dodano obiążenie za VOD');
  38. else SE_Layout::alert('danger','Nie udało się dodać obciążenia za VOD - nie dodano rekordu do SES_TV_C');
  39. } catch (Exception $e) {
  40. SE_Layout::alert('danger',"Nie udało się dodać obciążenia za VOD - ".$e->getMessage());
  41. }
  42. }
  43. $query = "select t1.VALUE1 as MIESIAC, round(t1.VALUE2*(1+t2.VAT/100),2) as BRUTTO, if (t1.ID_BILLING_NUMBERS is null, '0', '1') as ROZLICZONE from {$this->conf['TABLE']} as t1 join LIST_SERVICES t2 on t2.ID='{$this->conf['ID_LIST_SERVICES']}' where t1.ID_SERVICES='{$ID_SERVICES}' and t1.TYPE='{$this->conf['ID_LIST_SES_B_TYPES']}'";
  44. $obciazenia = DB::getPDO()->fetchall($query);
  45. ?>
  46. <div class="container" style="margin-top:20px">
  47. <form class="form-horizontal" method="post">
  48. <legend>
  49. Obciążenia za VOD
  50. <span class="pull-right">
  51. ID_SERVICES: <?=$ID_SERVICES?>
  52. </span>
  53. </legend>
  54. <div class="form-group">
  55. <div class="col-sm-12">
  56. Klient: ID <?=$result[0]['ID_BILLING_USERS'].", ".$result[0]['P_NAME']." ".$result[0]['P_NAME_SECOND'].", ul. ".$result[0]['P_ADDRESS_STREET']." ".$result[0]['P_ADDRESS_HOUSE'].($result[0]['P_ADDRESS_HOME']?"/".$result[0]['P_ADDRESS_HOME']:"").", ".$result[0]['P_ADDRESS_POST_CODE']." ".$result[0]['P_ADDRESS_CITY']?><br/>
  57. Adres instalacji: <?=$result[0]['S_ADDRESS_STREET']?>
  58. </div>
  59. </div>
  60. <div class="form-group">
  61. <div class="col-sm-12">
  62. <h4>Nowe obciążenie:</h4>
  63. </div>
  64. </div>
  65. <div class="form-group">
  66. <label class="col-sm-offset-4 col-sm-2 control-label">Rok i miesiąc (RRRR-MM)</label>
  67. <div class="col-sm-2">
  68. <div class="input-group">
  69. <input type="text" id="MIESIAC" class="form-control se_type-date" name="MIESIAC" value="<?=date("Y-m")?>" maxlength="7"/>
  70. <span class="input-group-addon">
  71. <span class="glyphicon glyphicon-calendar">
  72. </span>
  73. </span>
  74. </div>
  75. </div>
  76. </div>
  77. <div class="form-group">
  78. <label class="col-sm-offset-4 col-sm-2 control-label">Kwota brutto</label>
  79. <div class="col-sm-2">
  80. <div class="input-group">
  81. <input type="text" id="BRUTTO" class="form-control" name="BRUTTO" value="0.00"/>
  82. </div>
  83. </div>
  84. <div class="col-sm-1">
  85. <button type="submit" class="btn btn-primary">Dodaj</button>
  86. </div>
  87. </div>
  88. <div class="form-group">
  89. <div class="col-sm-offset-4 col-sm-4">
  90. <br/><h4>Dotychczasowe obciążenia za VOD:</h4>
  91. <table class="table table-bordered table-hover table-striped">
  92. <thead>
  93. <tr style="text-align:center; background-color:lightgray"><td width="1">Lp.</td><td>Rok - miesiąc</td><td>Kwota brutto</td><td>Rozliczone</td></tr>
  94. </thead>
  95. <tbody>
  96. <?php
  97. if ($obciazenia) {
  98. $i = 1;
  99. foreach ($obciazenia as $x) {
  100. echo "<tr><td style='text-align:right'>".$i++."</td><td style='text-align:center'>{$x['MIESIAC']}</td><td style='text-align:right'>{$x['BRUTTO']}</td><td style='text-align:center'>".($x['ROZLICZONE']?"Tak":"Nie")."</td></tr>";
  101. }
  102. } else echo '<tr style="text-align:center"><td colspan="4">Brak obciążeń</td></tr>';
  103. ?>
  104. </tbody>
  105. <table>
  106. </div>
  107. </div>
  108. </form>
  109. </div>
  110. <script>
  111. jQuery(document.getElementById('MIESIAC')).parent().datetimepicker({
  112. format: 'YYYY-MM'
  113. , locale: 'pl'
  114. , showTodayButton: false
  115. , maxDate: '<?=date("Y-m")?>'
  116. });
  117. </script>
  118. <?php
  119. } catch (Exception $e) {
  120. SE_Layout::alert('danger',$e->getMessage());
  121. }
  122. SE_Layout::dol();
  123. }
  124. public function reinstallAction() {
  125. die('OK');
  126. }
  127. }