function init() { parent::init(); $this->addExpression('total_credit', function ($m, $q) { $credit = $m->add('xepan\\commerce\\Model_Credit')->addCondition('customer_id', $m->getElement('id'))->addCondition('type', 'add'); return $q->expr('IFNULL([0],0)', [$credit->sum('amount')]); })->type('money'); $this->addExpression('total_consumed', function ($m, $q) { $credit = $m->add('xepan\\commerce\\Model_Credit')->addCondition('customer_id', $m->getElement('id'))->addCondition('type', 'consumed'); return $q->expr('IFNULL([0],0)', [$credit->sum('amount')]); })->type('money'); $this->addExpression('remaining_credit_amount')->set(function ($m, $q) { return $q->expr('[total_credit] - [total_consumed]', ['total_credit' => $m->getElement('total_credit'), 'total_consumed' => $m->getElement('total_consumed')]); })->type('money'); }
function init() { parent::init(); if ($this->customer) { $this->addCondition('id', $this->customer); } $this->addExpression('draft_odr_count')->set(function ($m, $q) { $so = $this->add('xepan\\commerce\\Model_SalesOrder'); $so->addCondition('contact_id', $m->getElement('id')); $so->addCondition('status', 'Draft'); if ($this->from_date) { $so->addCondition('created_at', '>', $this->from_date); $so->addCondition('created_at', '<', $this->to_date); } return $so->count(); }); $this->addExpression('submitted_odr_count')->set(function ($m, $q) { $so = $this->add('xepan\\commerce\\Model_SalesOrder'); $so->addCondition('contact_id', $m->getElement('id')); $so->addCondition('status', 'Submitted'); if ($this->from_date) { $so->addCondition('created_at', '>', $this->from_date); $so->addCondition('created_at', '<', $this->to_date); } return $so->count(); }); $this->addExpression('approved_odr_count')->set(function ($m, $q) { $so = $this->add('xepan\\commerce\\Model_SalesOrder'); $so->addCondition('contact_id', $m->getElement('id')); $so->addCondition('status', 'Approved'); if ($this->from_date) { $so->addCondition('created_at', '>', $this->from_date); $so->addCondition('created_at', '<', $this->to_date); } return $so->count(); }); $this->addExpression('inprogress_odr_count')->set(function ($m, $q) { $so = $this->add('xepan\\commerce\\Model_SalesOrder'); $so->addCondition('contact_id', $m->getElement('id')); $so->addCondition('status', 'InProgress'); if ($this->from_date) { $so->addCondition('created_at', '>', $this->from_date); $so->addCondition('created_at', '<', $this->to_date); } return $so->count(); }); $this->addExpression('canceled_odr_count')->set(function ($m, $q) { $so = $this->add('xepan\\commerce\\Model_SalesOrder'); $so->addCondition('contact_id', $m->getElement('id')); $so->addCondition('status', 'Canceled'); if ($this->from_date) { $so->addCondition('created_at', '>', $this->from_date); $so->addCondition('created_at', '<', $this->to_date); } return $so->count(); }); $this->addExpression('completed_odr_count')->set(function ($m, $q) { $so = $this->add('xepan\\commerce\\Model_SalesOrder'); $so->addCondition('contact_id', $m->getElement('id')); $so->addCondition('status', 'Completed'); if ($this->from_date) { $so->addCondition('created_at', '>', $this->from_date); $so->addCondition('created_at', '<', $this->to_date); } return $so->count(); }); $this->addExpression('onlineunpaid_odr_count')->set(function ($m, $q) { $so = $this->add('xepan\\commerce\\Model_SalesOrder'); $so->addCondition('contact_id', $m->getElement('id')); $so->addCondition('status', 'OnlineUnpaid'); if ($this->from_date) { $so->addCondition('created_at', '>', $this->from_date); $so->addCondition('created_at', '<', $this->to_date); } return $so->count(); }); $this->addExpression('redesign_odr_count')->set(function ($m, $q) { $so = $this->add('xepan\\commerce\\Model_SalesOrder'); $so->addCondition('contact_id', $m->getElement('id')); $so->addCondition('status', 'Redesign'); if ($this->from_date) { $so->addCondition('created_at', '>', $this->from_date); $so->addCondition('created_at', '<', $this->to_date); } return $so->count(); }); $this->addExpression('draft_inv_count')->set(function ($m, $q) { $si = $this->add('xepan\\commerce\\Model_SalesInvoice'); $si->addCondition('contact_id', $m->getElement('id')); $si->addCondition('status', 'Draft'); if ($this->from_date) { $si->addCondition('created_at', '>', $this->from_date); $si->addCondition('created_at', '<', $this->to_date); } return $si->count(); }); $this->addExpression('submitted_inv_count')->set(function ($m, $q) { $si = $this->add('xepan\\commerce\\Model_SalesInvoice'); $si->addCondition('contact_id', $m->getElement('id')); $si->addCondition('status', 'Submitted'); if ($this->from_date) { $si->addCondition('created_at', '>', $this->from_date); $si->addCondition('created_at', '<', $this->to_date); } return $si->count(); }); $this->addExpression('redesign_inv_count')->set(function ($m, $q) { $si = $this->add('xepan\\commerce\\Model_SalesInvoice'); $si->addCondition('contact_id', $m->getElement('id')); $si->addCondition('status', 'Redesign'); if ($this->from_date) { $si->addCondition('created_at', '>', $this->from_date); $si->addCondition('created_at', '<', $this->to_date); } return $si->count(); }); $this->addExpression('due_inv_count')->set(function ($m, $q) { $si = $this->add('xepan\\commerce\\Model_SalesInvoice'); $si->addCondition('contact_id', $m->getElement('id')); $si->addCondition('status', 'Due'); if ($this->from_date) { $si->addCondition('created_at', '>', $this->from_date); $si->addCondition('created_at', '<', $this->to_date); } return $si->count(); }); $this->addExpression('paid_inv_count')->set(function ($m, $q) { $si = $this->add('xepan\\commerce\\Model_SalesInvoice'); $si->addCondition('contact_id', $m->getElement('id')); $si->addCondition('status', 'Paid'); if ($this->from_date) { $si->addCondition('created_at', '>', $this->from_date); $si->addCondition('created_at', '<', $this->to_date); } return $si->count(); }); $this->addExpression('canceled_inv_count')->set(function ($m, $q) { $si = $this->add('xepan\\commerce\\Model_SalesInvoice'); $si->addCondition('contact_id', $m->getElement('id')); $si->addCondition('status', 'Canceled'); if ($this->from_date) { $si->addCondition('created_at', '>', $this->from_date); $si->addCondition('created_at', '<', $this->to_date); } return $si->count(); }); }
function init() { parent::init(); if ($this->customer_id) { $this->addCondition('id', $this->customer_id); } $this->addExpression('total_jobcards')->set(function ($m, $q) { $jc = $this->add('xepan\\production\\Model_Jobcard', ['table_alias' => 'total_job_count'])->addCondition('customer_id', $m->getElement('id')); if ($this->from_date) { $jc->addCondition('created_at', '>=', $this->from_date); $jc->addCondition('created_at', '<', $this->app->nextDate($this->to_date)); } return $jc->count(); }); $this->addExpression('ToReceived')->set(function ($m, $q) { $jc = $this->add('xepan\\production\\Model_Jobcard', ['table_alias' => 'total_to_received_count'])->addCondition('customer_id', $m->getElement('id'))->addCondition('status', 'ToReceived'); if ($this->from_date) { $jc->addCondition('created_at', '>=', $this->from_date); $jc->addCondition('created_at', '<', $this->app->nextDate($this->to_date)); } return $jc->count(); }); $this->addExpression('Received')->set(function ($m, $q) { $jc = $this->add('xepan\\production\\Model_Jobcard', ['table_alias' => 'total_received_count'])->addCondition('customer_id', $m->getElement('id'))->addCondition('status', 'Received'); if ($this->from_date) { $jc->addCondition('created_at', '>=', $this->from_date); $jc->addCondition('created_at', '<', $this->app->nextDate($this->to_date)); } return $jc->count(); }); $this->addExpression('Processing')->set(function ($m, $q) { $jc = $this->add('xepan\\production\\Model_Jobcard', ['table_alias' => 'total_Processing_count'])->addCondition('customer_id', $m->getElement('id'))->addCondition('status', 'Processing'); if ($this->from_date) { $jc->addCondition('created_at', '>=', $this->from_date); $jc->addCondition('created_at', '<', $this->app->nextDate($this->to_date)); } return $jc->count(); }); $this->addExpression('Forwarded')->set(function ($m, $q) { $jc = $this->add('xepan\\production\\Model_Jobcard', ['table_alias' => 'total_Forwarded_count'])->addCondition('customer_id', $m->getElement('id'))->addCondition('status', 'Forwarded'); if ($this->from_date) { $jc->addCondition('created_at', '>=', $this->from_date); $jc->addCondition('created_at', '<', $this->app->nextDate($this->to_date)); } return $jc->count(); }); $this->addExpression('Completed')->set(function ($m, $q) { $jc = $this->add('xepan\\production\\Model_Jobcard', ['table_alias' => 'total_Completed_count'])->addCondition('customer_id', $m->getElement('id'))->addCondition('status', 'Completed'); if ($this->from_date) { $jc->addCondition('created_at', '>=', $this->from_date); $jc->addCondition('created_at', '<', $this->app->nextDate($this->to_date)); } return $jc->count(); }); $this->addExpression('Cancelled')->set(function ($m, $q) { $jc = $this->add('xepan\\production\\Model_Jobcard', ['table_alias' => 'total_Cancelled_count'])->addCondition('customer_id', $m->getElement('id'))->addCondition('status', 'Cancelled'); if ($this->from_date) { $jc->addCondition('created_at', '>=', $this->from_date); $jc->addCondition('created_at', '<', $this->app->nextDate($this->to_date)); } return $jc->count(); }); $this->addExpression('Rejected')->set(function ($m, $q) { $jc = $this->add('xepan\\production\\Model_Jobcard', ['table_alias' => 'total_Rejected_count'])->addCondition('customer_id', $m->getElement('id'))->addCondition('status', 'Rejected'); if ($this->from_date) { $jc->addCondition('created_at', '>=', $this->from_date); $jc->addCondition('created_at', '<', $this->app->nextDate($this->to_date)); } return $jc->count(); }); }