示例#1
0
 public static function pay_subscription($subscription_id, $month, $account_from, $finish_month = false)
 {
     /* Pak de rekeningnummer van CityPark. */
     $account_to = Config::$bank_account;
     /* Haal de maand prijs op en vermenigvuldig dit met $month. */
     $amount = $month * Settings::get('citypark_subscription_month_cost');
     /* Kijken of we de laatste paar dagen moeten berekenen. */
     if ($finish_month) {
         /* Haal totaal aantal dagen op van deze maand. */
         $days_in_month = Date('t');
         /* Bereken het resterende aantal dagen op van deze maand. */
         $days = $days_in_month - Date('j');
         /* Bereken de kosten van 1 dag deze maand. */
         $amount_one_day = $amount / $days_in_month;
         /* Bereken de kosten van de overgebleven dagen. */
         $amount_left = $amount_one_day * $days;
         /* Rond het getal af omhoog, en replace een eventuele komma met een punt. */
         $amount = str_replace(',', '.', round($amount_left, 2, PHP_ROUND_HALF_UP));
     }
     /* Kijken of de transactie is gelukt. */
     if (Bank_api::transfer($amount, $account_from, $account_to)) {
         /* Succesvol overgemaakt, update query maken. */
         $update = Database::query("UPDATE subscription SET last_paid = NOW() WHERE sub_number = " . Database::escape($subscription_id));
         /* Kijken of de query is gelukt. */
         if ($update) {
             /* Customer ID ophalen. */
             $select = Database::query("SELECT customer_id FROM subscription WHERE sub_number = " . Database::escape($subscription_id) . " LIMIT 1");
             /* Kijken of de select query gelukt is. */
             if ($select) {
                 /* Haal de customer ID op. */
                 $cid = $select->fetch_object()->customer_id;
                 /* Probeer onderstaande. */
                 try {
                     /* Nieuw invoice object aanmaken. */
                     $invoice = new Invoice();
                     /* Nieuw factuur aanmaken. */
                     $invoice_id = $invoice->new_invoice($cid);
                     /* Factuur regel aanmaken. */
                     /* $amount bevat in dit geval de prijs wat er betaald is. */
                     $invoice->add_item('Abonnement kosten', 'Van ' . Date('d-m-Y') . ' tot ' . Date('t-m-Y') . '.', '1', $amount);
                     /* Factuur als betaald instellen. */
                     $invoice->set_paid();
                 } catch (Exception $e) {
                     /* Er ging wat fout bij het aanmaken van het factuur. */
                     throw new Exception($e->getMessage());
                 }
                 /* Return een true. */
                 return true;
             } else {
                 /* Foutmelding. */
                 throw new Exception('Er ging wat fout bij het ophalen van uw gegevens voor het factuur.<br />' . Database::error());
             }
         } else {
             /* Query is gefaalt, gooi foutmelding. */
             throw new Exception('Er ging wat fout bij het updaten van de betaling in de database.<br />' . Database::error());
         }
     } else {
         /* Kon niet overmaken. */
         return false;
     }
 }
示例#2
0
 private function invoice_subscription()
 {
     /* Selecteer alle abonnees. */
     $select = Database::query("SELECT s.*, c.email, ci.bank_account FROM subscription AS s INNER JOIN customer AS c ON c.id = s.customer_id INNER JOIN customer_info AS ci ON ci.customer_id = s.customer_id");
     /* Kijken of query gelukt is. */
     if ($select) {
         /* Kijken of er abonnees zijn. */
         if ($select->num_rows != 0) {
             /* Haal de prijs op van de abonneekosten. */
             $sub_price = Settings::get('citypark_subscription_month_cost');
             /* Loop elke abonnee bij langs. */
             while ($obj = $select->fetch_object()) {
                 /* Maak een invoice object aan. */
                 $obj->invoice = new Invoice();
                 /* Maak nieuw factuur aan. */
                 $obj->invoice->new_invoice($obj->customer_id, 'subscription');
                 /* Voeg een item toe aan het factuur, met daarin de abonnement kosten van nu (eerste van de maand) tot en met einde deze maand. */
                 $obj->invoice->add_item('Abonnement kosten', 'Van 01-' . Date('m-Y') . ' tot en met ' . Date('t-m-Y') . '.', '1', $sub_price);
                 /* Haal aantal gratis minuten op, en zet deze in het object. */
                 $obj->free_minutes = Settings::get('citypark_guest_free_minutes');
                 /* Geef obj als current sub in. */
                 $this->current_sub = $obj;
                 /* Bereken de gastenpas kosten. */
                 $this->invoice_guest_pass($obj);
                 /* Haal totaal bedrag op. */
                 $price = $obj->invoice->get_total_price();
                 /* Proberen te betalen. */
                 if (Bank_api::transfer($price, $obj->bank_account, Config::$bank_account)) {
                     /* Stel factuur als betaald in. */
                     $obj->invoice->set_paid();
                     /* Mail success. */
                     Email::send_mail($obj->email, 'CityPark - Factuur aangemaakt en betaald', 'Er is zojuist een factuur aangemaakt waarin de kosten van het abonnement en de eventuele kosten van het gebruik van de gasten pas. Het factuur is succesvol betaald.<br /><br />U kun het factuur downloaden en bekijken in het klanten paneel.');
                 } else {
                     /* Mail foutmelding. */
                     Email::send_mail($obj->email, 'CityPark - Factuur aangemaakt en niet betaald', 'Er is zojuist een factuur aangemaakt waarin de kosten van het abonnement en de eventuele kosten van het gebruik van de gasten pas<br /><br />Het factuur kon niet worden betaald. Binnen een aantal dagen proberen wij het verschuldigde bedrag nogmaals van uw rekeningnummer af te schrijven.<br /><br />U kun het factuur downloaden en bekijken in het klanten paneel.');
                 }
             }
         }
     } else {
         /* MySQL Foutmelding. */
         die('Error [invoice_subscription]: ' . Database::error());
     }
 }