<?php
class Repeating
{
public static function _validate($f, $n)
{
return true;
}
public static function generate_date($date, $next)
{
}
public static function confirm($id)
{
$d = ORM::for_table('sys_repeating')->find($id);
if ($d) {
$date = date('Y-m-d');
$type = $d['type'];
$amount = $d['amount'];
$account = $d['account'];
$a = Account::where('account', $d['account'])
->first();
$cbal = $a['balance'];
if ($type == 'Income') {
$nbal = $cbal + $amount;
$cr = $amount;
$dr = 0.0;
} else {
$nbal = $cbal - $amount;
$dr = $amount;
$cr = 0.0;
}
$a->balance = $nbal;
$a->save();
$t = new Transaction();
$t->account = $account;
$t->type = $type;
$t->payee = $d['payee'];
$t->amount = $amount;
$t->category = $d['category'];
$t->method = $d['method'];
$t->ref = $d['ref'];
$t->description = $d['description'];
$t->date = $date;
$t->dr = $dr;
$t->cr = $cr;
$t->bal = $nbal;
$t->save();
$d->pdate = $date;
$d->status = 'Cleared';
$d->save();
return true;
}
return false;
}
public static function partial($id, $amount)
{
$d = ORM::for_table('sys_repeating')->find($id);
if ($d) {
$actual_amount = $d['amount'];
if ($actual_amount == $amount) {
self::confirm($id);
}
if ($actual_amount < $amount) {
return false;
}
if (!is_numeric($amount)) {
return false;
}
if ($amount < 0) {
return false;
}
$date = date('Y-m-d');
$type = $d['type'];
$namount = $actual_amount - $amount;
$account = $d['account'];
$a = Account::where('account', $d['account'])
->first();
$cbal = $a['balance'];
if ($type == 'Income') {
$nbal = $cbal + $amount;
$cr = $amount;
$dr = 0.0;
} else {
$nbal = $cbal - $amount;
$dr = $amount;
$cr = 0.0;
}
$a->balance = $nbal;
$a->save();
$t = new Transaction();
$t->account = $account;
$t->type = $type;
$t->payee = $d['payee'];
$t->amount = $amount;
$t->category = $d['category'];
$t->method = $d['method'];
$t->ref = $d['ref'];
$t->description = $d['description'];
$t->date = $date;
$t->dr = $dr;
$t->cr = $cr;
$t->bal = $nbal;
$t->save();
//update the amount
$d->amount = $namount;
$d->save();
return true;
} else {
return false;
}
}
public static function mark_paid($id)
{
$d = ORM::for_table('sys_repeating')->find($id);
if ($d) {
$date = date('Y-m-d');
$d->pdate = $date;
$d->status = 'Cleared';
$d->save();
return true;
}
return false;
}
public static function delete_single($id)
{
$d = ORM::for_table('sys_repeating')->find($id);
if ($d) {
$d->delete();
return true;
}
return false;
}
public static function delete_multiple($id)
{
$d = ORM::for_table('sys_repeating')->find($id);
if ($d) {
$description = $d['description'];
ORM::for_table('sys_repeating')
->where('description', $description)
->delete_many();
return true;
} else {
return false;
}
}
}