Ignore:
Timestamp:
Mar 16, 2014, 1:33:22 AM (11 years ago)
Author:
chronos
Message:
  • Přidáno: Při úpravě ve formuláři pro typ OneToMany přidána možnost přidat novou vztaženou položku.
  • Přidáno: Možnost předefinovat předvolené hodnoty nových položek formuláře. Použito především pro vztažené položky typu OneToMany.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Modules/Finance/Manage.php

    r629 r639  
    66  var $ShortTitle = 'Správa financí';
    77  var $ParentClass = 'PageFinance';
    8  
     8
    99  function Show()
    1010  {
    1111    $Output = '';
    12     if(!$this->System->User->CheckPermission('Finance', 'Manage')) 
     12    if(!$this->System->User->CheckPermission('Finance', 'Manage'))
    1313      return('Nemáte oprávnění');
    1414
    15     if(array_key_exists('Operation', $_GET)) $Operation = $_GET['Operation']; 
     15    if(array_key_exists('Operation', $_GET)) $Operation = $_GET['Operation'];
    1616      else $Operation = '';
    1717    switch($Operation)
     
    3939    return($Output);
    4040  }
    41  
     41
    4242  function GetBillingPeriod($Period)
    4343  {
     
    4646    $PeriodTo = mktime(0, 0, 0, date('n') + $MonthCount - 1, date('t', mktime(0, 0, 0, date('n') + $MonthCount - 1, 1, date('Y'))) , date('Y'));
    4747    return(array('From' => $PeriodFrom, 'To' => $PeriodTo, 'MonthCount' => $MonthCount));
    48   } 
     48  }
    4949
    5050  function ShowMonthlyPayment()
     
    6262      'FinanceBillingPeriod.Id=Member.BillingPeriodNext WHERE (Member.Blocked = 0)'.
    6363      'AND (Member.BillingPeriodNext > 1) AND (MemberPayment.MonthlyTotal != 0)';
    64    
     64
    6565    $DbResult = $this->Database->query('SELECT COUNT(*) FROM ('.$SQL.') AS T');
    6666    $DbRow = $DbResult->fetch_row();
    67     $PageList = GetPageList($DbRow[0]);   
     67    $PageList = GetPageList($DbRow[0]);
    6868
    6969    $Output = $PageList['Output'];
    7070    $Output .= '<table class="WideTable" style="font-size: small;">';
    71    
     71
    7272    $TableColumns = array(
    73       array('Name' => 'SubjectName', 'Title' => 'Jméno'), 
    74       array('Name' => 'Monthly', 'Title' => 'Platba'), 
    75       array('Name' => 'Cash', 'Title' => 'Kredit'), 
    76       array('Name' => 'LastDate', 'Title' => 'Poslední fakturace'), 
    77       array('Name' => 'ServicesNextMonth', 'Title' => 'Služby'), 
    78       array('Name' => 'BillingPeriodName', 'Title' => 'Perioda'), 
     73      array('Name' => 'SubjectName', 'Title' => 'Jméno'),
     74      array('Name' => 'Monthly', 'Title' => 'Platba'),
     75      array('Name' => 'Cash', 'Title' => 'Kredit'),
     76      array('Name' => 'LastDate', 'Title' => 'Poslední fakturace'),
     77      array('Name' => 'ServicesNextMonth', 'Title' => 'Služby'),
     78      array('Name' => 'BillingPeriodName', 'Title' => 'Perioda'),
    7979    );
    8080    $Order = GetOrderTableHeader($TableColumns, 'SubjectName', 0);
     
    8282
    8383    $Query = $SQL.' '.$Order['SQL'].$PageList['SQLLimit'];
    84    
     84
    8585    $DbResult = $this->Database->query($Query);
    86     while($Row = $DbResult->fetch_assoc()) 
    87     { 
     86    while($Row = $DbResult->fetch_assoc())
     87    {
    8888      $Output .= '<tr>'.
    8989      '<td>'.$Row['SubjectName'].'</td>'.
     
    100100    return($Output);
    101101  }
    102  
     102
    103103  function InsertInvoice($Subject, $TimeCreation, $TimeDue, $Items,
    104104  $DocumentLine, $PeriodFrom, $PeriodTo)
    105105  {
    106106    global $LastInsertTime;
    107    
     107
    108108    $Year = date('Y', $TimeCreation);
    109109    $BillCode = $this->System->Modules['Finance']->GetNextDocumentLineNumber($DocumentLine, $Year);
     
    124124    return($InvoiceId);
    125125  }
    126  
     126
    127127  function ProduceInvoices()
    128128  {
    129129    $Output = '';
    130    
     130
    131131    // Generuj účetní položky
    132132    $DbResult = $this->Database->query('SELECT Member.*, MemberPayment.MonthlyTotal AS MonthlyTotal, '.
     
    169169          $MonthlyTotal -= $Member['MonthlyPlus'];
    170170        }
    171         $PayPerPeriod = $MonthlyTotal * $Period['MonthCount']; 
     171        $PayPerPeriod = $MonthlyTotal * $Period['MonthCount'];
    172172        if($PayPerPeriod != 0)
    173173        {
    174174          $TimePeriodText = date('j.n.Y', $Period['From']).' - '.date('j.n.Y', $Period['To']);
    175175          $Output .= $TimePeriodText.': '.$MonthlyTotal.' * '.$Period['MonthCount'].' = '.$PayPerPeriod.'<br />';
    176           $this->InsertInvoice($Member['Subject'], time(), time() + 3600 * 24 * INVOICE_DUE_DAYS, 
    177             $InvoiceItems, INVOICE_OUT_DOC_LINE, $Period['From'], $Period['To']);
    178    
     176          $this->InsertInvoice($Member['Subject'], time(), time() + 3600 * 24 * INVOICE_DUE_DAYS,
     177            $InvoiceItems, DOC_LINE_INVOICE_OUT, $Period['From'], $Period['To']);
     178
    179179          $Output .= $this->SendPaymentEmail($Member['Id']);
    180180        } else $Output .= '<br />';
    181         $this->Database->update('Member', 'Id='.$Member['Id'], 
     181        $this->Database->update('Member', 'Id='.$Member['Id'],
    182182          array('BillingPeriodLastDate' => TimeToMysqlDateTime($Period['To'])));
    183183      } else $Output .= '<br />';
    184     } 
     184    }
    185185    return($Output);
    186186  }
    187  
     187
    188188  function TableUpdatePeriod($Table)
    189189  {
     
    212212    }
    213213    $this->Database->delete($Table, '`Action` IS NOT NULL');
    214   } 
    215  
     214  }
     215
    216216  function ProcessMonthlyPayment()
    217217  {
     
    221221    $Finance = &$this->System->Modules['Finance'];
    222222    $Finance->LoadMonthParameters(0);
    223    
     223
    224224    // Načti poslední měsíční přehled a nastavení
    225225    $DbResult = $this->Database->select('FinanceMonthlyOverall', '*', '1 ORDER BY Date DESC LIMIT 1');
     
    227227
    228228    $Output -= 'Datum: '.date('j.n.Y').'<br />';
    229    
     229
    230230    $DateParts = explode('-', $Overall['Date']);
    231231    $MonthLast = $DateParts[1];
     
    242242    $TotalDeviceCost = $Row[0];
    243243    $Output .= 'Celková cena zařízení: Zařízení('.$TotalDeviceCost;
    244    
     244
    245245    $DbResult = $this->Database->query('SELECT SUM(Price) FROM NetworkSegment');
    246246    $Row = $DbResult->fetch_row();
    247247    $TotalSegmentDeviceCost = $Row[0];
    248248    $Output .= '), Segmenty('.$TotalSegmentDeviceCost;
    249    
     249
    250250    $DbResult = $this->Database->query('SELECT SUM(NetworkDevice) FROM MemberPayment');
    251251    $Row = $DbResult->fetch_row();
    252252    $TotalMemberDeviceCost = $Row[0];
    253253    $Output .= '), Členové('.$TotalMemberDeviceCost.')<br />';
    254    
     254
    255255    $DbResult = $this->Database->query('SELECT SUM(Cash) FROM MemberPayment');
    256256    $Row = $DbResult->fetch_row();
    257257    $TotalMemberCash = $Row[0];
    258     $Output .= 'Stav pokladny: Členové('.$TotalMemberCash.')';   
     258    $Output .= 'Stav pokladny: Členové('.$TotalMemberCash.')';
    259259
    260260    $DbResult = $this->Database->query('SELECT SUM(Product.Consumption) AS Consumption FROM StockItem '.
     
    272272    {
    273273      $Output .= 'Odečítám měsíční poplatek...<br />';
    274       $Output .= $this->ProduceInvoices();   
    275      
     274      $Output .= $this->ProduceInvoices();
     275
    276276      // Update finance charge
    277277      $Output .= 'Měním aktuální parametry sítě...<br>';
     
    281281      $DbResult = $this->Database->query('SELECT * FROM FinanceCharge WHERE Action IS NULL LIMIT 1');
    282282      $Charge = $DbResult->fetch_assoc();
    283       $this->Database->insert('FinanceMonthlyOverall', array('Date' => 'NOW()', 
    284         'Money' => $Finance->Internet, 'kWh' => $Finance->kWh, 
    285         'Administration' => $Finance->Sprava, 'AdministrationTotal' => $SpravaCelkem, 
    286         'ConsumptionTotal' => $TotalConsumptionCost, 'TotalPaid' => $Finance->TotalPaid, 
    287         'BaseTariffPrice' => $Charge['BaseTariffPrice'], 
     283      $this->Database->insert('FinanceMonthlyOverall', array('Date' => 'NOW()',
     284        'Money' => $Finance->Internet, 'kWh' => $Finance->kWh,
     285        'Administration' => $Finance->Sprava, 'AdministrationTotal' => $SpravaCelkem,
     286        'ConsumptionTotal' => $TotalConsumptionCost, 'TotalPaid' => $Finance->TotalPaid,
     287        'BaseTariffPrice' => $Charge['BaseTariffPrice'],
    288288        'TopTariffPrice' => $Charge['TopTariffPrice'], 'MemberCount' => $Finance->InternetUsers));
    289289
    290290      // Update services
    291291      $Output .= 'Aktualizuji služby....<br>';
    292       $this->TableUpdatePeriod('Service');   
     292      $this->TableUpdatePeriod('Service');
    293293      // Update customer service selections
    294294      $Output .= 'Aktualizuji výběr služeb zákazníků....<br>';
    295       $this->TableUpdatePeriod('ServiceCustomerRel');     
    296      
     295      $this->TableUpdatePeriod('ServiceCustomerRel');
     296
    297297      $Finance->RecalculateMemberPayment();
    298298      //CreateMonthlyOverallBill();
     
    300300
    301301      // Restart traffic shaping
    302       //$this->Database->update('NetworkConfiguration', 'Id = 3', array('Changed' => 1));     
     302      //$this->Database->update('NetworkConfiguration', 'Id = 3', array('Changed' => 1));
    303303      //flush();
    304304      //$this->GenerateBills();
     
    306306    return($Output);
    307307  }
    308  
     308
    309309  function SendPaymentEmail($MemberId, $FileId = '')
    310310  {
    311311    global $Config;
    312    
     312
    313313    $DbResult = $this->Database->select('Member', '*', 'Id='.$MemberId);
    314314    $Member = $DbResult->fetch_assoc();
    315315
    316316    $DbResult = $this->Database->select('MemberPayment', '*', 'Member='.$MemberId);
    317     $MemberPayment = $DbResult->fetch_assoc();   
     317    $MemberPayment = $DbResult->fetch_assoc();
    318318
    319319    $DbResult = $this->Database->select('Subject', 'Name', 'Id='.$Member['Subject']);
    320     $Subject = $DbResult->fetch_assoc();     
    321    
    322     $DbResult = $this->Database->select('User', '*', 'Id='.$Member['ResponsibleUser']);   
     320    $Subject = $DbResult->fetch_assoc();
     321
     322    $DbResult = $this->Database->select('User', '*', 'Id='.$Member['ResponsibleUser']);
    323323    $User = $DbResult->fetch_assoc();
    324    
     324
    325325    $DbResult = $this->Database->select('Subject', '*', '`Id`='.$Config['Finance']['MainSubjectId']);
    326     $MainSubject = $DbResult->fetch_assoc(); 
    327    
     326    $MainSubject = $DbResult->fetch_assoc();
     327
    328328    $DbResult = $this->Database->query('SELECT FinanceBankAccount.*, CONCAT(FinanceBankAccount.Number, "/", FinanceBank.Code) AS NumberFull FROM FinanceBankAccount '.
    329329      'JOIN FinanceBank ON FinanceBank.Id=FinanceBankAccount.Bank '.
    330330      'WHERE (FinanceBankAccount.`Subject`='.$Config['Finance']['MainSubjectId'].') AND (FinanceBankAccount.`Use`=1)');
    331331    $MainSubjectAccount = $DbResult->fetch_assoc();
    332        
     332
    333333    if($User['Email'] != '')
    334334    {
     
    357357      while($DbRow = $DbResult->fetch_assoc())
    358358      {
    359         $Text = $DbRow['Text'];       
     359        $Text = $DbRow['Text'];
    360360        $Content .= '<tr><td style="border-style: solid; border-width: 1px; padding: 1px 5px 1px 5px; text-align: center;">'.HumanDate($DbRow['Time']).'</td>'.
    361361          '<td style="border-style: solid; border-width: 1px; padding: 1px 5px 1px 5px; text-align: center;">'.$Text.'</td>'.
     
    364364      $Content .= '</table><br />'."\n".
    365365      'Pro aktuální informace, prohlížení elektronických dokladů a možnost změny údajů se prosím přihlašte na stránkách <a href="http://'.$Config['Web']['Host'].$Config['Web']['RootFolder'].'">http://'.$Config['Web']['Host'].$Config['Web']['RootFolder'].'</a>.<br /><br />'."\n";
    366        
     366
    367367      $Content .= '<br />Tento email je generován automaticky. V případě zjištění nesrovnalostí napište zpět.';
    368       $this->System->ModuleManager->Modules['EmailQueue']->AddItem($User['Name'].' <'.$User['Email'].'>', $Title, $Content, 
     368      $this->System->ModuleManager->Modules['EmailQueue']->AddItem($User['Name'].' <'.$User['Email'].'>', $Title, $Content,
    369369         $Config['Web']['Admin'].' <'.$Config['Web']['AdminEmail'].'>');
    370370      $Output = '';
    371371    } else $Output = 'Uživatel '.$User['Name'].' nemá email.';
    372372  }
    373  
     373
    374374  function GenerateBills()
    375375  {
    376376    $Output = '';
    377    
     377
    378378    // FinanceInvoice
    379379    $DbResult = $this->Database->query('SELECT * FROM `FinanceInvoice` WHERE (`BillCode` <> "") '.
     
    420420        $Output .= '.';
    421421      } else $Output .= 'Soubor "'.$FullFileName.'" se nepodařilo uložit.';
    422     }   
     422    }
    423423    return($Output);
    424424  }
Note: See TracChangeset for help on using the changeset viewer.