Пример #1
0
 public function getNumber()
 {
     $config = ActiveRecordModel::getApplication()->getConfig();
     $startAt = $config->get('SequentialInvoiceNumber_START_AT');
     $prefix = $config->get('SequentialInvoiceNumber_PREFIX');
     $suffix = $config->get('SequentialInvoiceNumber_SUFFIX');
     // get last finalized order
     $last = array_pop(ActiveRecord::getRecordSetArray('CustomerOrder', $this->getSelectFilter()));
     $lastNumber = $last ? $last['invoiceNumber'] : $startAt;
     if (substr($lastNumber, 0, strlen($prefix)) == $prefix) {
         $lastNumber = substr($lastNumber, strlen($prefix));
     }
     if (substr($lastNumber, -1 * strlen($suffix)) == $suffix) {
         $lastNumber = substr($lastNumber, 0, -1 * strlen($suffix));
     }
     preg_match('/[0-9]+/', $lastNumber, $matches);
     $lastNumber = array_shift($matches);
     if ($lastNumber < $startAt) {
         $lastNumber = $startAt;
     }
     // avoid selecting the same order if the invoice number is already taken
     $this->getSelectFilter()->mergeCondition(neq('CustomerOrder.ID', $last['ID']));
     $lastNumber += max($config->get('SequentialInvoiceNumber_STEP'), 1);
     $lastNumber = str_pad($lastNumber, $config->get('SequentialInvoiceNumber_MIN_LENGTH'), '0', STR_PAD_LEFT);
     $lastNumber = $prefix . $lastNumber . $suffix;
     return $lastNumber;
 }
Пример #2
0
<?php

use org\rhaco\store\db\Q;
\test\model\NewDao::create_table();
$obj = new \test\model\NewDao();
neq(null, $obj);
\test\model\NewDao::find_delete();
eq(0, \test\model\NewDao::find_count());
$obj = new \test\model\NewDao();
$obj->save();
$obj = new \test\model\NewDao();
$obj->value(null);
$obj->save();
$obj = new \test\model\NewDao();
$obj->value('');
$obj->save();
eq(1, \test\model\NewDao::find_count(Q::eq('value', '')));
eq(2, \test\model\NewDao::find_count(Q::eq('value', null)));
eq(3, \test\model\NewDao::find_count());
$r = array(null, null, '');
$i = 0;
foreach (\test\model\NewDao::find(Q::order('id')) as $o) {
    eq($r[$i], $o->value());
    $i++;
}
Пример #3
0
<?php

\test\db\UniqueCodeDigit::create_table();
\test\db\UniqueCodeDigit::find_delete();
$obj = new \test\db\UniqueCodeDigit();
eq(null, $obj->code1());
eq(null, $obj->code2());
eq(null, $obj->code3());
$obj->save();
foreach (\test\db\UniqueCodeDigit::find() as $o) {
    neq(null, $o->code1());
    neq(null, $o->code2());
    neq(null, $o->code3());
    eq(32, strlen($o->code1()));
    eq(10, strlen($o->code2()));
    eq(40, strlen($o->code3()));
    eq(true, ctype_digit($o->code1()));
    eq(true, ctype_digit($o->code2()));
    eq(true, ctype_digit($o->code3()));
    neq('000', substr($o->code2(), 0, 3));
    neq('000', substr($o->code2(), -3));
}
Пример #4
0
\test\model\UniqueCodeIgnore::find_delete();
$i = 0;
while (true) {
    try {
        $obj = new \test\model\UniqueCodeIgnore();
        eq(null, $obj->code1());
        $obj->save();
        break;
    } catch (\org\rhaco\store\db\exception\GenerateUniqueCodeRetryLimitOverException $e) {
        if ($i++ > 1000) {
            throw $e;
        }
    }
}
foreach (\test\model\UniqueCodeIgnore::find() as $o) {
    neq(null, $o->code1());
    eq(1, strlen($o->code1()));
    eq(true, ctype_digit($o->code1()));
    eq('9', $o->code1());
}
\test\model\DoublePrimary::create_table();
\test\model\DoublePrimary::find_delete();
$obj = new \test\model\DoublePrimary();
$obj->id1(1)->id2(1)->value("hoge")->save();
$p = new \test\model\DoublePrimary();
eq("hoge", $p->id1(1)->id2(1)->sync()->value());
\test\model\LimitVerify::create_table();
\test\model\LimitVerify::find_delete();
$obj = new \test\model\LimitVerify();
$obj->value1("123");
$obj->value2(3);
Пример #5
0
eq(2, sizeof($result));
eq("2008/12/24 10:00:00", $result[0]->fm_updated());
$c = 0;
for ($i = 0; $i < 10; $i++) {
    $a = $b = array();
    foreach (\test\model\Find::find_all(Q::random_order()) as $o) {
        $a[] = $o->id();
    }
    foreach (\test\model\Find::find_all(Q::random_order()) as $o) {
        $b[] = $o->id();
    }
    if ($a === $b) {
        $c++;
    }
}
neq(10, $c);
$result = \test\model\Find::find_all(Q::ob(Q::b(Q::eq("value1", "abc")), Q::b(Q::eq("value2", "EDC"))));
eq(2, sizeof($result));
eq("EDC", \test\model\Find::find_get(Q::eq("value1", "jkl"))->value2());
$i = 0;
$r = array("abc", "def", "ghi", "jkl");
foreach (\test\model\RefFind::find() as $obj) {
    eq(isset($r[$i]) ? $r[$i] : null, $obj->value());
    $i++;
}
eq(4, $i);
$i = 0;
$r = array("abc");
foreach (\test\model\RefRefFind::find() as $obj) {
    eq(isset($r[$i]) ? $r[$i] : null, $obj->value());
    $i++;
Пример #6
0
<?php

\test\db\UniqueCode::create_table();
\test\db\UniqueCode::find_delete();
$obj = new \test\db\UniqueCode();
eq(null, $obj->code1());
eq(null, $obj->code2());
eq(null, $obj->code3());
$obj->save();
foreach (\test\db\UniqueCode::find() as $o) {
    neq(null, $o->code1());
    neq(null, $o->code2());
    neq(null, $o->code3());
    eq(32, strlen($o->code1()));
    eq(10, strlen($o->code2()));
    eq(40, strlen($o->code3()));
}
Пример #7
0
<?php

$b = new \testman\Browser();
$b->do_get(url('test_index::csrf'));
eq(200, $b->status());
meq('<result>', $b->body());
$b->do_post(url('test_index::csrf'));
eq(403, $b->status());
meq('<error>', $b->body());
$b->do_get(url('test_index::csrf'));
eq(200, $b->status());
meq('<result>', $b->body());
$no = null;
if (\org\rhaco\Xml::set($xml, $b->body(), 'csrftoken')) {
    $no = $xml->value();
}
neq(null, $no);
$b->vars('csrftoken', $no);
$b->do_post(url('test_index::csrf'));
eq(200, $b->status());
meq('<result>', $b->body());
$b->do_get(url('test_index::csrf_template'));
eq(200, $b->status());
meq('<form><input type="hidden" name="csrftoken"', $b->body());
meq('<form method="post"><input type="hidden" name="csrftoken"', $b->body());
meq('<form method="get"><input type="hidden" name="csrftoken"', $b->body());
meq(sprintf('<form action="%s"><input type="hidden" name="csrftoken"', url('test_index::csrf')), $b->body());
meq('<form action="http://localhost"><input type="text" name="aaa" /></form>', $b->body());
Пример #8
0
 public function neq($column, $value)
 {
     $this->model->setCondition(neq($column, $value));
     return $this;
 }
Пример #9
0
<?php

\test\db\DateTime::create_table();
\test\db\AddNowDateTime::find_delete();
$obj = new \test\db\AddNowDateTime();
eq(null, $obj->ts());
eq(null, $obj->date());
eq(null, $obj->idate());
$obj->save();
foreach (\test\db\AddNowDateTime::find() as $o) {
    neq(null, $o->ts());
    neq(null, $o->date());
    neq(null, $o->idate());
}
Пример #10
0
\test\db\AddDateTime::create_table();
\test\db\AddDateTime::find_delete();
$obj = new \test\db\AddDateTime();
eq(null, $obj->ts());
eq(null, $obj->date());
eq(null, $obj->idate());
$obj->save();
foreach (\test\db\AddDateTime::find() as $o) {
    neq(null, $o->ts());
    neq(null, $o->date());
    neq(null, $o->idate());
}
\test\db\AutoNow::create_table();
\test\db\AutoNow::find_delete();
$obj = new \test\db\AutoNow();
eq(null, $obj->ts());
eq(null, $obj->date());
eq(null, $obj->idate());
$obj->save();
$b = null;
foreach (\test\db\AutoNow::find() as $o) {
    $b = $o->ts();
    neq(null, $o->ts());
    neq(null, $o->date());
    neq(null, $o->idate());
    sleep(1);
    $o->save();
}
foreach (\test\db\AutoNow::find() as $o) {
    neq($b, $o->ts());
}
Пример #11
0
<?php

function same($left, $right)
{
    echo $left === $right ? "true\n" : "false\n";
}
function eq($left, $right)
{
    echo $left == $right ? "true\n" : "false\n";
}
function neq($left, $right)
{
    echo $left != $right ? "true\n" : "false\n";
}
same(false, 0);
neq(0, "b");
eq(true, -1);