Example #1
0
 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');
 }
Example #2
0
 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();
     });
 }
Example #3
0
 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();
     });
 }