Example #1
0
 function updateStatus($old_status, $new_status, $username)
 {
     $design_current_status = $this->sub_status != '' ? "{$this->status}-{$this->sub_status}" : $this->status;
     if ($design_current_status == $old_status) {
         $sda = array();
         $temp_new_status = explode('-', $new_status);
         $temp_old_status = explode('-', $old_status);
         $new_main_status = $temp_new_status[0];
         $old_main_status = $temp_old_status[0];
         $new_sub_status = isset($temp_new_status[1]) ? $temp_new_status[1] : 'null';
         $old_sub_status = isset($temp_old_status[1]) ? $temp_old_status[1] : 'null';
         $sda['status'] = $new_main_status;
         $sda['sub_status'] = $new_sub_status;
         //will automatically reset sub_status when its moved to status that have no sub status
         tep_db_perform('designs', $sda, 'update', "designs_id={$this->id}");
         $this->status = $new_main_status;
         $this->sub_status = $new_sub_status == 'null' ? null : $new_sub_status;
         $timestamp = $this->addStatusHistory($new_status, $username);
         $long_timestamp = date('Y-m-d H:i:s');
         if ($old_status == '2' && $new_status == '11') {
             //REQUEST TO PULLEDRACK
             $this->setTargetDateStart($timestamp);
         } elseif ($old_status == '11' && $new_status == '2') {
             //PULLEDRACK BACK TO REQUEST
             $this->setTargetDateStart('CLEAR');
             //            } elseif ($old_status=='3' && $new_status=='5') {   //DRAFTS TO SAMPLINGS
         } elseif ($old_status == '3' && $new_main_status == '5') {
             //DRAFTS TO SAMPLINGS
             //                $drafts = $this->retrieveDrafts("approve_status='A'");
             $drafts = $this->retrieveDrafts("approve_status!='R'");
             if (count($drafts) == 0) {
                 use_class('design_draft');
                 $draft = new design_draft();
                 $draft->create($this->id, $this->name, $this->colors_request, $this->followers->list_raw);
                 $draft->uploadImage('1', DIR_WS_IMAGES . $this->image_1, basename($this->image_1));
                 //$draft->setApproveStatus('A', 'auto-set');
             }
         } elseif ($old_status == '8' && $new_status == '9') {
             //FINALIZE TO DONE
             $this->setTargetDateEnd($timestamp);
             $drafts = $this->retrieveDrafts("approve_status!='R'");
             $drafts_ids = array();
             foreach ($drafts as $d) {
                 $drafts_ids[] = $d['drafts_id'];
             }
             $products = $this->retrieveProducts();
             //ADD TO WATCHLSIT
             $products_ids = array();
             //to be used by ADD ATTRIBUTES
             $products_ids_nosample = array();
             $products_ids_sample = array();
             use_class('minierp_users');
             use_class('elements_preorder');
             use_class('elements_order');
             use_class('products_articles');
             use_class('products_minierp');
             use_class('elements_stock');
             $class_mu = new minierp_users();
             $class_pm = new products_minierp();
             $class_pa = new products_articles();
             $class_es = new elements_stock();
             $use_elements = array();
             $eao = 2;
             //element adjust order
             foreach ($products as $p) {
                 if (in_array($p['drafts_id'], $drafts_ids) && $p['finalized_time'] != '' && $p['finalized_by'] != '') {
                     $products_ids[] = $p['products_id'];
                     if ($p['create_sample'] == '1') {
                         $products_ids_sample[] = $p['products_id'];
                     } else {
                         $products_ids_nosample[] = $p['products_id'];
                     }
                     foreach ($this->watched_by as $wl_user_id) {
                         if ($wl_user_id > 0) {
                             $class_mu->addToWatchlist($wl_user_id, $p['products_id']);
                         }
                     }
                     // #BEGIN CALCULATE NEW ELEMENT SOURCE
                     // first check category
                     $tpdbq_products_use_elements = $class_pm->retrieveElementsUsage($p['products_id']);
                     foreach ($tpdbq_products_use_elements as $row_pue) {
                         $use_elements[] = array('elements_id' => $row_pue['elements_id'], 'quantity' => (int) $row_pue['quantity'] * $eao);
                     }
                     $tpdbq_products_articles = $class_pa->retrieveList($p['products_id'], "active_status='1'");
                     foreach ($tpdbq_products_articles as $row_pa) {
                         $tpdbq_products_articles_use_elements = $class_pm->retrieveElementsUsage($p['products_id'], $row_pa['products_articles_id']);
                         foreach ($tpdbq_products_articles_use_elements as $row_pue) {
                             $use_elements[] = array('elements_id' => $row_pue['elements_id'], 'quantity' => (int) $row_pue['quantity'] * $eao);
                         }
                     }
                     // #END CALCULATE NEW ELEMENT SOURCE
                 }
             }
             // merge same element id
             $merge_use_elements = array();
             foreach ($use_elements as $use_element) {
                 $eid = $use_element['elements_id'];
                 $qty = $use_element['quantity'];
                 if (!isset($merge_use_elements[$eid])) {
                     $merge_use_elements[$eid] = $qty;
                 } else {
                     if ($qty > $merge_use_elements[$eid]) {
                         $merge_use_elements[$eid] = $qty;
                     }
                 }
             }
             // check to stock and
             // insert to element preorder
             //echo "</pre>merge<pre>";var_dump($merge_use_elements);
             // dari sini gk dibaca
             foreach ($merge_use_elements as $eid => $qty) {
                 $epreorder = new elements_preorder($eid);
                 $elstock = $class_es->retrieveOne(WAREHOUSE_ID_ELEMENTS, $eid);
                 $tot_qty_el_preorder = elements_preorder::openOrdersQuantity($eid);
                 $tot_qty_el_order = elements_order::openOrdersQuantity($eid);
                 $total = $elstock['stock'] + $tot_qty_el_preorder + $tot_qty_el_order;
                 if ($total < $qty) {
                     $stock = $qty - $total;
                     $epreorder->addOrder($stock, null, "New Design " . $this->id);
                 }
             }
             //ADD ATTRIBUTES
             if (count($products_ids) > 0 && ($this->styles_id_F > 0 || $this->styles_id_L > 0)) {
                 use_class('styles');
                 $class_s = new styles();
                 if ($this->styles_id_F > 0) {
                     $class_s->addProduct($this->styles_id_F, $products_ids, $username);
                 }
                 if ($this->styles_id_L > 0) {
                     $class_s->addProduct($this->styles_id_L, $products_ids, $username);
                 }
             }
             //FINALLY, ACTIVATE THE PRODUCTS
             if (count($products_ids_nosample) > 0) {
                 $class_pm->activateProducts($products_ids_nosample, true);
             }
             if (count($products_ids_sample) > 0) {
                 $class_pm->activateProducts($products_ids_sample, true, true);
             }
         } elseif ($old_status == '11' && $new_status == '10-0') {
             //PULLRACK TO SOURCING
             $this->updateField('is_sourcing', 1);
             $n_drafts = $this->retrieveDrafts("approve_status!='R'");
             if (count($n_drafts) == 0) {
                 use_class('design_draft');
                 $draft = new design_draft();
                 $draft->create($this->id, $this->name);
                 $draft->uploadImage('1', DIR_WS_IMAGES . $this->image_1, basename($this->image_1));
                 //$element = $draft->createElement('', $this->name, 0, '', 0, date('Y-m-d H:i:s'), 'auto', '0');  //we not auto create this, since we already used sub_status on design level
             }
         } elseif ($old_status == '10-0' && $new_status == '11') {
             //SOURCING BACK TO PULLRACK
             $this->updateField('is_sourcing', 'null');
         }
         //INCREMENT FOR GRAPH DATASOURCE
         //            if($old_status==3 && ($new_status==4||$new_status==5)) {
         if ($old_status == 3 && ($new_status == 4 || $new_main_status == 5)) {
             //COUNT NUMBER OF DESIGN MOVED OUT
             $this->addDataToField($long_timestamp, 'design_drafts', 1);
         }
         //            if($new_status>5){
         if ($new_main_status > 5) {
             //COUNT NUMBER OF PRODUCTS MOVED OUT
             $q = "SELECT COUNT(dp.designs_id) total_products FROM designs_products dp";
             $q .= " INNER JOIN designs_drafts dd ON dd.drafts_id = dp.drafts_id AND dd.approve_status != 'R'";
             $q .= " WHERE dp.designs_id = " . $this->id;
             $q .= " GROUP BY dp.designs_id";
             $dbq = tep_db_query($q);
             $res = tep_db_fetch_array($dbq);
             $total_products = $res['total_products'] > 0 ? $res['total_products'] : 0;
             //                if($old_status==5 && $new_status==6) $this->addDataToField($long_timestamp, 'design_samplings', $total_products);
             if ($old_main_status == 5 && $new_main_status == 14) {
                 $this->addDataToField($long_timestamp, 'design_samplings', $total_products);
             }
             //                if($old_status==6 && $new_status==12) $this->addDataToField($long_timestamp, 'design_graphics', $total_products);
             if ($old_main_status == 14 && $new_status == 12) {
                 $this->addDataToField($long_timestamp, 'design_graphics', $total_products);
             }
             if ($old_status == 12 && $new_status == 7) {
                 $this->addDataToField($long_timestamp, 'design_product_qc', $total_products);
             }
             if ($old_status == 7 && $new_status == 8) {
                 $this->addDataToField($long_timestamp, 'design_details', $total_products);
             }
             if ($old_status == 8 && $new_status == 9) {
                 $this->addDataToField($long_timestamp, 'design_finalize', $total_products);
             }
         }
         /*NO NEED ANYMORE, SINCE WE ALREADY SAVED sub_status ON DESIGN LEVEL
           if($new_status==10) {
               if($old_status=='1' && $this->isSourcingNewElements()) $this->addStatusHistory("10-0", $username);
               elseif($old_status=='6' && $this->isSourcingNewElements()) $this->addStatusHistory("10-0", $username);
               elseif($old_status=='4') $this->addStatusHistory("10-1", $username);
               elseif($old_status=='5') $this->addStatusHistory("10-7", $username);
           }
            */
     }
 }
 /**
  * Post action for function drawAttributes()
  * @global Object $class_s styles object, will be auto created if none found
  */
 function drawAttributesPostAction()
 {
     global $class_s;
     if (!is_object($class_s)) {
         use_class('styles');
         $class_s = new styles();
     }
     if (isset($_POST['me_action'])) {
         if ($_POST['me_action'] == 'ATTRIBUTEADD') {
             $products_id = $_POST['products_id'];
             $attr_id = $_POST['attr_id'];
             $attr_name = tep_db_prepare_input($_POST['attr_name']);
             $attr_group = $_POST['attr_group'];
             $result = array();
             $result['products_id'] = $products_id;
             $result['attr_group'] = $attr_group;
             $result['attr_id'] = $attr_id;
             if ($class_s->addProduct($attr_id, $products_id, $session_userinfo['username'])) {
                 $result['attr_html'] = $this->drawSingleAttribute($products_id, $attr_id, $attr_name, $attr_group);
             } else {
                 $result['error'] = 'Adding prohibited, this attribute is closed!';
             }
             ajaxReturn($result);
             exit;
         } elseif ($_POST['me_action'] == 'ATTRIBUTEREMOVE') {
             //products_id: products_id, attr_id: attr_id, attr_group: attr_group
             $products_id = $_POST['products_id'];
             $attr_id = $_POST['attr_id'];
             $attr_group = $_POST['attr_group'];
             $result = array();
             $result['products_id'] = $products_id;
             $result['attr_group'] = $attr_group;
             $result['attr_id'] = $attr_id;
             if (!$class_s->remProduct($attr_id, $products_id, $session_userinfo['username'])) {
                 $result['error'] = 'Removing prohibited, this attribute is closed!';
             }
             ajaxReturn($result);
             exit;
         }
     }
 }
     exit;
 } elseif ($_POST['me_action'] == 'LOADPRODUCT') {
     $pid = tep_db_prepare_input($_POST['pid']);
     $pos = tep_db_prepare_input($_POST['pos']) + 1;
     $curgroup_id = tep_db_prepare_input($_POST['curgroup_id']);
     echo utf8_encode(loadProductRow($pid, $pos, $curgroup_id));
     exit;
 } elseif ($_POST['me_action'] == 'ADDATTRIBUTESPERPRODUCT') {
     $pid = tep_db_prepare_input($_POST['pid']);
     $pos = tep_db_prepare_input($_POST['pos']);
     $curgroup_id = tep_db_prepare_input($_POST['curgroup_id']);
     $newattr = array_unique($_POST['newattr']);
     $added = array();
     foreach ($newattr as $aid) {
         if ($aid > 0) {
             $class_s->addProduct($aid, $pid, $session_userinfo['username']);
             $style = $class_s->retrieveDescription($aid, '2');
             $added[] = $style['name'];
         }
     }
     echo utf8_encode(loadProductRow($pid, $pos, $curgroup_id));
     exit;
 } elseif ($_POST['me_action'] == 'ADDARTICLESALLPRODUCTS') {
     $products_ids = explode(',', tep_db_prepare_input($_POST['pids']));
     $newattr = array_unique($_POST['newattr']);
     $added = array();
     $added_success = array();
     $added_failed = array();
     foreach ($newattr as $aid) {
         if ($aid > 0) {
             //$class_s->addProduct($aid, $products_ids, $session_userinfo['username']);
 $languages_id = '2';
 $draft = new design_draft(null, $products_id);
 $products_to_update = array();
 $products_to_update[] = $products_id;
 if ($make_template == "1") {
     $uf_products = $draft->retrieveProducts("finalized_time IS NULL AND finalized_by IS NULL");
     foreach ($uf_products as $ufp) {
         if (!in_array($ufp['products_id'], $products_to_update)) {
             $products_to_update[] = $ufp['products_id'];
         }
     }
     foreach ($products_to_update as $pid) {
         if ($att_colls != null) {
             removeProducts($pid, $att_symbols, $att_topics);
             foreach ($att_colls_array as $att_colls_id) {
                 $class_s->addProduct($att_colls_id, $pid, $username);
             }
         } elseif ($att_colls == null) {
             removeProducts($pid, $att_symbols, $att_topics);
         }
         if ($att_symbols != null) {
             removeProducts($pid, $att_colls, $att_topics);
             foreach ($att_symbols_array as $att_symbols_id) {
                 $class_s->addProduct($att_symbols_id, $pid, $username);
             }
         } elseif ($att_symbols == null) {
             removeProducts($pid, $att_colls, $att_topics);
         }
         if ($att_topics != null) {
             removeProducts($pid, $att_colls, $att_symbols);
             foreach ($att_topics_array as $att_topics_id) {