function populate() { $orders = new POrderLineCollection(); $orders->setParams(); $sh = new SearchHandler($orders, false); $sh->addConstraint(new Constraint('status', 'in', "('A','P')")); $sh->addConstraint(new Constraint('order_status', '!=', "X")); $sh->addConstraint(new Constraint('due_delivery_date', '<', fix_date(date(DATE_FORMAT)))); $this->setSearchLimit($sh); $sh->setOrderBy(array('due_delivery_date', 'id')); $orders->load($sh); $this->contents = $orders; }
public function _new() { $flash = Flash::Instance(); parent::_new(); // Get the Order Line Object - if loaded, this is an edit $porderline = $this->_uses[$this->modeltype]; if (!$porderline->isLoaded()) { if (empty($this->_data['order_id'])) { $flash->addError('No Purchase Order supplied'); sendBack(); } $porderline->order_id = $this->_data['order_id']; $porderline->status = $porderline->newStatus(); } $porder = DataObjectFactory::Factory('POrder'); $porder->load($porderline->order_id); $_plmaster_id = $porder->plmaster_id; if (isset($this->_data[$this->modeltype])) { // We've had an error so refresh the page $_plmaster_id = $this->_data['POrder']['plmaster_id']; $porderline->line_number = $this->_data[$this->modeltype]['line_number']; $_product_search = $this->_data[$this->modeltype]['product_search']; if (!empty($this->_data[$this->modeltype]['productline_id'])) { $_productline_id = $this->_data[$this->modeltype]['productline_id']; } else { $_productline_id = ''; } $_glaccount_id = $this->_data[$this->modeltype]['glaccount_id']; } elseif ($porderline->isLoaded()) { // $_product_search=$porderline->description; $_productline_id = $porderline->productline_id; $_glaccount_id = $porderline->glaccount_id; } else { $_product_search = 'None'; $porderline->due_despatch_date = $porder->despatch_date; $porderline->due_delivery_date = $porder->due_date; } if ($porderline->lineAwaitingDelivery()) { $porderlines = new POrderLineCollection(); $porderlines->getAuthSummary($porder->id); if (EGS_USERNAME == $porder->checkAuthLimits($porderlines)) { $this->view->set('amend_qty', true); } } $display_fields = $porderline->getDisplayFields(); if (empty($_productline_id) && isset($display_fields['product_search'])) { if ($_product_search == 'None') { $productline_options = array('' => 'None'); } else { $productline_options = $this->getProductLines($_plmaster_id, $_product_search); } } else { $productline_options = $this->getProductLines($_plmaster_id); } if (empty($_productline_id)) { $_productline_id = key($productline_options); } $this->view->set('display_fields', $display_fields); $this->view->set('product_search', $_product_search); $this->view->set('productline_options', $productline_options); $data = $this->getProductLineData($_productline_id); $this->view->set('stuom_options', $data['stuom_id']); $this->view->set('glaccount_options', $data['glaccount_id']); if (empty($_glaccount_id)) { $_glaccount_id = key($data['glaccount_id']); } $this->view->set('glcentre_options', $this->getCentre($_glaccount_id, $_productline_id)); $this->view->set('taxrate_options', $data['tax_rate_id']); $this->view->set('porder', $porder); }
public function getPOstructures() { // This gets all Purchase Order Lines if ($this->postructures) { return $this->postructures; } $polines = new POrderLineCollection(); $polines->_tablename = 'po_structure_lines'; $sh = new SearchHandler($polines, false); $sh->addConstraint(new Constraint('ststructure_id', '=', $this->id)); $sh->addConstraint(new Constraint('status', 'in', "('A', 'N', 'O', 'P')")); $sh->setOrderby('due_delivery_date'); $polines->load($sh); if ($polines) { $this->postructures = $polines; return $this->postructures; } else { return array(); } }
public function viewAwaitingDelivery() { $s_data = array(); // Set context from calling module if (isset($this->_data['plmaster_id'])) { $s_data['plmaster_id'] = $this->_data['plmaster_id']; } if (isset($this->_data['stitem_id'])) { $s_data['stitem_id'] = $this->_data['stitem_id']; } if (isset($this->_data['order_id'])) { $s_data['order_id'] = $this->_data['order_id']; } $this->setSearch('pogoodsreceivedSearch', 'confirmReceipt', $s_data); $s_data['plmaster_id'] = $this->search->getValue('plmaster_id'); $s_data['stitem_id'] = $this->search->getValue('stitem_id'); $s_data['order_id'] = $this->search->getValue('order_id'); $orderlines = new POrderLineCollection(DataObjectFactory::Factory('POrderLine')); if ($s_data['plmaster_id'] > 0 || $s_data['stitem_id'] > 0 || $s_data['order_id'] > 0) { if (isset($this->_data['orderby'])) { $sh = new SearchHandler($orderlines, true); } else { $sh = new SearchHandler($orderlines, false); } $sh->extract(); $sh->setLimit(''); $sh->addConstraint(new Constraint('status', 'in', "('A','P')")); if ($s_data['plmaster_id'] > 0) { $sh->addConstraint(new Constraint('plmaster_id', '=', $s_data['plmaster_id'])); } if ($s_data['stitem_id'] > 0) { $sh->addConstraint(new Constraint('stitem_id', '=', $s_data['stitem_id'])); } if ($s_data['order_id'] > 0) { $sh->addConstraint(new Constraint('order_id', '=', $s_data['order_id'])); } $DisplayFields = array('id'); foreach ($orderlines->getFields() as $field => $attr) { if (!$attr->ignoreField) { $DisplayFields[] = $field; } } $DisplayFields[] = 'receive_action'; $sh->setFields($DisplayFields); $orderlines->load($sh); $this->view->set('num_records', $orderlines->num_records); foreach ($orderlines as $orderline) { $orderline->getAction(); $orderline->whaction_id = $orderline->receive_action; $orderline->from_location_id = $orderline->getFromLocation($orderline->receive_action); $orderline->to_location_id = $orderline->getToLocation($orderline->receive_action); $whlocation = DataObjectFactory::Factory('WHLocation'); $whlocation->load($orderline->to_location_id); if ($whlocation->isLoaded()) { $orderline->to_location = $whlocation->whstore . '/' . $whlocation->description; } else { $orderline->to_location = ''; } $orderline->to_bin_list = $orderline->getToBin($orderline->receive_action); } } $this->_templateName = $this->getTemplateName('confirmreceipt'); $this->view->set('porderlines', $orderlines); $sidebar = new SidebarController($this->view); $actions = array(); $actions['viewnotes'] = array('link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'index'), 'tag' => 'view goods received notes'); $sidebar->addList('Actions', $actions); $this->view->set('page_title', $this->getPageName('Confirm Delivery of Order', '')); $this->view->register('sidebar', $sidebar); $this->view->set('sidebar', $sidebar); // Override output button - there is no point to it here $this->printaction = ''; }
public function save(&$errors = array()) { // use_sorder_delivery == true makes no sense if a sales order link is not selected if (!$this->sales_order_id) { $this->use_sorder_delivery = 'f'; } $linestatuses = $this->getLineStatuses(); $linestatus = $linestatuses['count']; if (($this->someLinesReceived($linestatus) || $this->someLinesInvoiced($linestatus)) && !$this->allLinesReceivedOrInvoiced($linestatus)) { $this->status = $this->partReceivedStatus(); } elseif ($this->allLinesCancelled($linestatus)) { $this->status = $this->cancelStatus(); } elseif ($this->allLinesReceived($linestatus) || $this->allLinesReceivedOrInvoiced($linestatus) && !$this->allLinesInvoiced($linestatus)) { $this->status = $this->receivedStatus(); } elseif ($this->allLinesInvoiced($linestatus)) { $this->status = $this->invoiceStatus(); } elseif ($this->allLinesAwaitingDelivery($linestatus) && $this->status != $this->acknowledgedStatus()) { $this->status = $this->orderSentStatus(); } elseif ($this->allLinesNew($linestatus)) { $this->status = $this->newStatus(); } $prev_net_value = $this->base_net_value; $po_line = DataObjectFactory::Factory('POrderLine'); $cc = new ConstraintChain(); $cc->add(new Constraint('order_id', '=', $this->id)); $cc->add(new Constraint('status', '!=', $po_line->cancelStatus())); $totals = $po_line->getSumFields(array('net_value', 'twin_net_value', 'base_net_value'), $cc, 'po_lines'); unset($totals['numrows']); // set the correct totals back to the order header foreach ($totals as $field => $value) { $this->{$field} = bcadd($value, 0); } // Check the authorisation limits on the order if ($this->type != 'T' && $prev_net_value != $this->base_net_value) { $porderlines_summary = new POrderLineCollection($po_line); $porderlines_summary->getAuthSummary($this->id); $this->authorised_by = $this->checkAuthLimits($porderlines_summary); if (!is_null($this->authorised_by) && EGS_USERNAME == $this->authorised_by && $this->base_net_value > 0 && $porderlines_summary->count() > 0) { $this->type = 'O'; $this->date_authorised = date(DATE_FORMAT); } elseif ($this->type == 'O') { $this->type = 'R'; $this->authorised_by = $this->date_authorised = null; $awaitingauth = new POAwaitingAuthCollection(); $awaitingauth->loadBy(null, $this->id); $awaitingauth->deleteAll(); $result = $this->saveAuthList($porderlines_summary, $errors); } } $db = DB::Instance(); $db->StartTrans(); $result = parent::save(); if (!$result) { $errors[] = 'Error saving order header : ' . $db->errorMsg(); $db->FailTrans(); } $db->CompleteTrans(); return $result; }