/**
  * Edit stock for product
  *
  * @access public
  */
 public function display_edit()
 {
     parent::display_edit();
     $template = Template::get();
     $classname = \Skeleton\Package\Stock\Config::$object_stock_interface;
     $product = $classname::get_by_id($_GET['id']);
     if (isset($_POST['product_supplier_id'])) {
         try {
             $product_supplier = \Skeleton\Package\Stock\Supplier::get_by_id($_POST['product_supplier_id']);
             \Skeleton\Package\Stock\Supplier::set_for_object($product, $product_supplier);
         } catch (\Exception $e) {
             $product_supplier = null;
             \Skeleton\Package\Stock\Supplier::set_for_object($product);
         }
         Session::set_sticky('updated', true);
         Session::redirect($this->get_module_path() . '?action=edit&id=' . $product->id);
     }
     $suppliers = \Skeleton\Package\Stock\Supplier::get_all();
     $template->assign('suppliers', $suppliers);
     $supplier = \Skeleton\Package\Stock\Supplier::get_for_object($product);
     $template->assign('product_supplier', $supplier);
     try {
         $stock = \Skeleton\Package\Stock\Stock::get_last_by_object($product);
         $template->assign('stock', $stock->total);
     } catch (\Exception $e) {
         $template->assign('stock', 0);
     }
     $backorder = \Skeleton\Package\Stock\Purchase\Order\Item::get_backorder($product);
     $template->assign('backorder', $backorder);
     $count_backorder = \Skeleton\Package\Stock\Purchase\Order\Item::count_backorder($product);
     $template->assign('count_backorder', $count_backorder);
     if (class_exists('\\Skeleton\\Package\\Delivery\\Item')) {
         $to_deliver = \Skeleton\Package\Delivery\Item::get_undelivered_by_deliverable($product);
         $to_deliver_overview = [];
         foreach ($to_deliver as $delivery_item) {
             if (!isset($to_deliver_overview[$delivery_item->delivery_id])) {
                 $to_deliver_overview[$delivery_item->delivery_id] = 0;
             }
             $to_deliver_overview[$delivery_item->delivery_id]++;
         }
         $template->assign('to_deliver_overview', $to_deliver_overview);
         $template->assign('to_deliver', $to_deliver);
     }
     $pager = new Pager('\\Skeleton\\Package\\Stock\\Stock');
     $pager->add_sort_permission('created');
     $pager->add_sort_permission('id');
     $pager->add_condition('stock_object_id', $product->id);
     $pager->set_sort('id');
     $pager->set_direction('desc');
     $pager->page();
     $template->assign('pager', $pager);
 }
 /**
  * Create step 2
  *
  * @access public
  */
 public function display_create_step2()
 {
     if (!isset($_POST['supplier_id']) and !isset($_SESSION['skeleton-package-stock']['po']['supplier_id'])) {
         Session::redirect($this->get_module_path() . '?action=create');
     }
     if (!isset($_SESSION['skeleton-package-stock']['po'])) {
         $_SESSION['skeleton-package-stock']['po'] = [];
     }
     if (isset($_POST['supplier_id'])) {
         $_SESSION['skeleton-package-stock']['po']['supplier_id'] = $_POST['supplier_id'];
         unset($_SESSION['skeleton-package-stock']['po']['items']);
         $supplier = Supplier::get_by_id($_SESSION['skeleton-package-stock']['po']['supplier_id']);
         $purchase_list = $supplier->get_purchase_list();
         foreach ($purchase_list as $item) {
             $this->add_to_basket($item, 1, $item->get_purchase_price());
         }
     }
     $supplier = Supplier::get_by_id($_SESSION['skeleton-package-stock']['po']['supplier_id']);
     $classname = \Skeleton\Package\Stock\Config::$object_stock_interface;
     $pager = new Pager($classname);
     $pager->add_join('object_supplier', 'object_id', $classname::trait_get_database_table() . '.id');
     $pager->add_condition('object_supplier.supplier_id', $supplier->id);
     $pager->add_condition('object_supplier.object_classname', $classname);
     $fields = $classname::get_object_fields();
     $search_fields = [];
     foreach ($fields as $field) {
         if (substr($field['field'], -3) == '_id') {
             continue;
         }
         if ($field['field'] == 'id') {
             continue;
         }
         $search_fields[] = $field['field'];
     }
     if (isset($_POST['search'])) {
         $pager->set_search($_POST['search'], $search_fields);
     }
     $pager->page();
     $template = Template::get();
     $template->assign('supplier', $supplier);
     $template->assign('pager', $pager);
 }
 /**
  * get supplier
  *
  * @access public
  * @return \Skeleton\Package\Stock\Supplier $supplier
  */
 public function get_supplier()
 {
     return \Skeleton\Package\Stock\Supplier::get_by_id($this->supplier_id);
 }