Example #1
0
 public static function useDefault($search_data = null, &$errors = array(), $defaults = null)
 {
     $search = new pogoodsreceivedSearch($defaults);
     // Search by Customer
     $search->addSearchField('plmaster_id', 'Supplier', 'select', 0, 'advanced');
     $supplier = new PLSupplier();
     $options = array('0' => 'All');
     $suppliers = $supplier->getAll(null, false, true);
     $options += $suppliers;
     $search->setOptions('plmaster_id', $options);
     // Search by Stock Item
     $search->addSearchField('stitem_id', 'Stock Item', 'select', 0, 'advanced');
     $stitems = new STItem();
     $options = array('0' => 'All');
     $stitems = $stitems->getAll();
     $options += $stitems;
     $search->setOptions('stitem_id', $options);
     // Search by Despatch Number
     $search->addSearchField('gr_number', 'goods_received_number', 'equal', '', 'advanced');
     // Search by Order Number
     $search->addSearchField('order_number', 'order_number', 'equal', '', 'advanced');
     // Search by Invoice Number
     $search->addSearchField('invoice_number', 'invoice_number', 'equal', '', 'advanced');
     // Search by Received Date
     $search->addSearchField('received_date', 'delivery_date_between', 'between', '', 'advanced');
     // Search by Status
     $search->addSearchField('status', 'status', 'select', '', 'basic');
     $poreceivedline = new POReceivedLine();
     $options = array_merge(array('' => 'All'), $poreceivedline->getEnumOptions('status'));
     $search->setOptions('status', $options);
     $search->setSearchData($search_data, $errors);
     return $search;
 }
    public function view()
    {
        if (!$this->loadData()) {
            $this->dataError();
            sendBack();
        }
        $transaction = $this->_uses[$this->modeltype];
        $id = $this->_data['id'];
        $this->view->set('transaction', $transaction);
        $link = '';
        switch ($transaction->process_name) {
            case 'D':
                $despatchline = new SOdespatchline();
                $despatchline->loadBy('despatch_number', $transaction->process_id);
                if ($despatchline->isLoaded()) {
                    $link = '"module":"despatch"
						  ,"controller":"sodespatchlines"
						  ,"action":"view"
						  ,"id":"' . $despatchline->id . '"';
                }
                break;
            case 'GR':
                $poreceivedline = new POReceivedLine();
                $poreceivedline->loadBy('gr_number', $transaction->process_id);
                if ($poreceivedline->isLoaded()) {
                    $link = '"module":"goodsreceived"
						  ,"controller":"poreceivedlines"
						  ,"action":"view"
						  ,"id":"' . $poreceivedline->id . '"';
                }
                break;
            case 'SC':
            case 'SI':
                $link = '"module":"sales_invoicing"
					  ,"controller":"sinvoices"
					  ,"action":"view"
					  ,"id":"' . $transaction->process_id . '"';
                break;
            case 'SO':
                $link = '"module":"sales_order"
					  ,"controller":"sorders"
					  ,"action":"view"
					  ,"id":"' . $transaction->process_id . '"';
                break;
            case 'WO':
                $link = '"module":"manufacturing"
					  ,"controller":"mfworkorders"
					  ,"action":"view"
					  ,"id":"' . $transaction->process_id . '"';
                break;
        }
        $this->view->set('linkto', $link);
        $sidebar = new SidebarController($this->view);
        $sidebarlist = array();
        if ($transaction->status == 'E') {
            $sidebarlist['backflusherrors'] = array('tag' => 'All Backflush Errors', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'index', 'status' => 'E'));
        }
        $sidebarlist['alltransactions'] = array('tag' => 'All Transactions', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'index'));
        $sidebarlist['transactions_for_location'] = array('tag' => 'transactions_for_location', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'index', 'whlocation_id' => $transaction->whlocation_id, 'from' => fix_date(date(DATE_FORMAT, strtotime($transaction->created))), 'to' => fix_date(date(DATE_FORMAT, strtotime("+1 day", strtotime($transaction->created))))));
        $sidebarlist['transactions_for_item'] = array('tag' => 'transactions_for_item', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'index', 'stitem_id' => $transaction->stitem_id, 'from' => fix_date(date(DATE_FORMAT, strtotime($transaction->created))), 'to' => fix_date(date(DATE_FORMAT, strtotime("+1 day", strtotime($transaction->created))))));
        $sidebar->addList('Show', $sidebarlist);
        if ($transaction->status == 'E') {
            $sidebarlist = array();
            $sidebarlist['resolve'] = array('tag' => 'Resolve Transaction', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'changeStatus', 'id' => $id, 'status' => 'R'));
            $sidebarlist['cancel'] = array('tag' => 'Cancel Transaction', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'changeStatus', 'id' => $id, 'status' => 'C'));
            $sidebar->addList('Actions', $sidebarlist);
        }
        $this->view->register('sidebar', $sidebar);
        $this->view->set('sidebar', $sidebar);
    }
 public function save_grnote()
 {
     $flash = Flash::Instance();
     $db = DB::Instance();
     $db->StartTrans();
     $gr_note = $this->_data['gr_note'];
     $errors = array();
     $received = array();
     $receivedline = array();
     foreach ($this->_data['poreceivedlines'] as $key => $value) {
         $orderline = DataObjectFactory::Factory('POrderLine');
         $orderline->load($key);
         if ($orderline) {
             $order = DataObjectFactory::Factory('SOrder');
             $order->load($orderline->order_id);
             if ($order) {
                 $receivedline['order_id'] = $order->id;
                 $receivedline['orderline_id'] = $orderline->id;
                 $receivedline['plmaster_id'] = $order->plmaster_id;
                 $receivedline['stuom_id'] = $orderline->stuom_id;
                 $receivedline['item_description'] = $orderline->description;
                 $receivedline['tax_rate_id'] = $orderline->tax_rate_id;
                 if ($orderline->stitem_id) {
                     $receivedline['stitem_id'] = $orderline->stitem_id;
                 }
                 if ($orderline->productline_id) {
                     $receivedline['productline_id'] = $orderline->productline_id;
                 }
                 $receivedline['received_qty'] = $orderline->os_qty;
                 $receivedline['received_date'] = date(DATE_FORMAT);
                 $receivedline['status'] = 'N';
                 $received[$order->id][] = $receivedline;
             }
         }
     }
     foreach ($received as $header) {
         foreach ($header as $line) {
             $line['gr_note'] = $gr_note;
             $saveline = POReceivedLine::Factory($line, $errors, 'POReceivedLine');
             if ($saveline) {
                 $result = $saveline->save();
                 if (!$result) {
                     $flash->addError('Error creating goods received note');
                     $db->FailTrans();
                     sendBack();
                 }
             }
             $orderline = DataObjectFactory::Factory('POrderLine');
             $result = $orderline->update($line['orderline_id'], 'gr_note', $gr_note);
             if ($result === false) {
                 $flash->addError('Error updating order line');
                 $db->FailTrans();
                 sendBack();
             }
         }
     }
     if (count($errors) === 0 && $db->CompleteTrans()) {
         $flash->addMessage('Goods Received Notes added successfully');
         sendTo($this->name, 'index', $this->_modules);
     } else {
         $flash->addErrors($errors);
         $db->FailTrans();
         sendBack();
     }
 }