2013-10-20 42 views
0

我目前正在修改開源PHP POS,我想修改代碼而不是顯示警告並顯示0股票項目不顯示結果如果數量爲0.php pos庫存:不顯示結果,如果數量爲0

我設法將消息從正常消息更改爲JavaScript彈出,但我仍然不希望顯示該項目。因爲使用這個系統的我的員工總是忽略彈出窗口,並且在月底結束時,它顯示了很多負面項目,並且讓我感到頭痛,以便檢查和修改。因此,我正在尋求專業幫助來提供建議和幫助。我看起來很高低,並設法得到一堆代碼,我相信它可能是一個代碼。如果我錯了,請糾正我。

代碼:

function add_item($item_id,$quantity=1,$discount=0,$price=null,$description=null,$serialnumber=null) 
{ 
    //make sure item exists 
    if(!$this->CI->Item->exists($item_id)) 
    { 
     //try to get item id given an item_number 
     $item_id = $this->CI->Item->get_item_id($item_id); 

     if(!$item_id) 
      return false; 
    } 


    //Alain Serialization and Description 

    //Get all items in the cart so far... 
    $items = $this->get_cart(); 

    //We need to loop through all items in the cart. 
    //If the item is already there, get it's key($updatekey). 
    //We also need to get the next key that we are going to use in case we need to add the 
    //item to the cart. Since items can be deleted, we can't use a count. we use the highest key + 1. 

    $maxkey=0;      //Highest key so far 
    $itemalreadyinsale=FALSE;  //We did not find the item yet. 
    $insertkey=0;     //Key to use for new entry. 
    $updatekey=0;     //Key to use to update(quantity) 

    foreach ($items as $item) 
    { 
     //We primed the loop so maxkey is 0 the first time. 
     //Also, we have stored the key in the element itself so we can compare. 

     if($maxkey <= $item['line']) 
     { 
      $maxkey = $item['line']; 
     } 

     if($item['item_id']==$item_id) 
     { 
      $itemalreadyinsale=TRUE; 
      $updatekey=$item['line']; 
     } 
    } 

    $insertkey=$maxkey+1; 

    //array/cart records are identified by $insertkey and item_id is just another field. 
    $item = array(($insertkey)=> 
    array(
     'item_id'=>$item_id, 
     'line'=>$insertkey, 
     'name'=>$this->CI->Item->get_info($item_id)->name, 
     'item_number'=>$this->CI->Item->get_info($item_id)->item_number, 
     'description'=>$description!=null ? $description: $this->CI->Item->get_info($item_id)->description, 
     'serialnumber'=>$serialnumber!=null ? $serialnumber: '', 
     'allow_alt_description'=>$this->CI->Item->get_info($item_id)->allow_alt_description, 
     'is_serialized'=>$this->CI->Item->get_info($item_id)->is_serialized, 
     'quantity'=>$quantity, 
     'discount'=>$discount, 
     'price'=>$price!=null ? $price: $this->CI->Item->get_info($item_id)->unit_price 
     ) 
    ); 

    //Item already exists and is not serialized, add to quantity 
    if($itemalreadyinsale && ($this->CI->Item->get_info($item_id)->is_serialized ==0)) 
    { 
     $items[$updatekey]['quantity']+=$quantity; 
    } 
    else 
    { 
     //add to existing array 
     $items+=$item; 
    } 

    $this->set_cart($items); 
    return true; 

} 

function out_of_stock($item_id) 
{ 
    //make sure item exists 
    if(!$this->CI->Item->exists($item_id)) 
    { 
     //try to get item id given an item_number 
     $item_id = $this->CI->Item->get_item_id($item_id); 

     if(!$item_id) 
      return false; 
    } 

    $item = $this->CI->Item->get_info($item_id); 
    $quanity_added = $this->get_quantity_already_added($item_id); 

    if ($item->quantity - $quanity_added < 0) 
    { 
     return true; 
    } 

    return false; 
} 

預先感謝您! Jeff

+0

任何人都願意幫助我嗎? – Jeff

回答

0

您只顯示前端(「模板」)的代碼,不幸的是,這段代碼顯然在最後缺少了一些部分 - 至少表格行結尾應該在那裏。

但是我認爲缺少的</tr>元素會在代碼片段之後出現。

我所做的是在這裏簡單地將含條件的產品<tr>,這樣只會顯示,如果庫存數量> 0

<div id="register_wrapper"> 
<?php echo form_open("sales/change_mode",array('id'=>'mode_form')); ?> 
    <span><?php echo $this->lang->line('sales_mode') ?></span> 
<?php echo form_dropdown('mode',$modes,$mode,'onchange="$(\'#mode_form\').submit();"'); ?> 
<div id="show_suspended_sales_button"> 
    <?php echo anchor("sales/suspended/width:425", 
    "<div class='small_button'><span style='font-size:73%;'>".$this->lang->line('sales_suspended_sales')."</span></div>", 
    array('class'=>'thickbox none','title'=>$this->lang->line('sales_suspended_sales'))); 
    ?> 
</div> 
</form> 
<?php echo form_open("sales/add",array('id'=>'add_item_form')); ?> 
<label id="item_label" for="item"> 

<?php 
if($mode=='sale') 
{ 
echo $this->lang->line('sales_find_or_scan_item'); 
} 
else 
{ 
    echo $this->lang->line('sales_find_or_scan_item_or_receipt'); 
} 
?> 
</label> 
<?php echo form_input(array('name'=>'item','id'=>'item','size'=>'40'));?> 
<div id="new_item_button_register" > 
     <?php echo anchor("items/view/-1/width:360", 
     "<div class='small_button'><span>".$this->lang->line('sales_new_item')   </span></div>", 
     array('class'=>'thickbox none','title'=>$this->lang- >line('sales_new_item'))); 
     ?> 
    </div> 

</form> 
<table id="register"> 
<thead> 
<tr> 
<th style="width:11%;"><?php echo $this->lang->line('common_delete'); ?></th> 
<th style="width:30%;"><?php echo $this->lang->line('sales_item_number'); ?></th> 
<th style="width:30%;"><?php echo $this->lang->line('sales_item_name'); ?></th> 
<th style="width:11%;"><?php echo $this->lang->line('sales_price'); ?></th> 
<th style="width:11%;"><?php echo $this->lang->line('sales_quantity'); ?></th> 
<th style="width:11%;"><?php echo $this->lang->line('sales_discount'); ?></th> 
<th style="width:15%;"><?php echo $this->lang->line('sales_total'); ?></th> 
<th style="width:11%;"><?php echo $this->lang->line('sales_edit'); ?></th> 
</tr> 
</thead> 
<tbody id="cart_contents"> 
<?php 
if(count($cart)==0) 
{ 
?> 
<tr><td colspan='8'> 
<div class='warning_message' style='padding:7px;'><?php echo $this->lang- >line('sales_no_items_in_cart'); ?></div> 
</tr></tr> 
<?php 
} 
else 
{ 
    foreach(array_reverse($cart, true) as $line=>$item) 
{ 
    $cur_item_info = $this->Item->get_info($item['item_id']); 

    // THIS IS THE CONDITION WHERE I CHECK THE AVAILABILITY STATE 
    if ($cur_item_info->quantity > 0) { 
     echo form_open("sales/edit_item/$line"); 
?> 
    <tr> 
    <td><?php echo anchor("sales/delete_item/$line",'['.$this->lang->line('common_delete').']');?></td> 
    <td><?php echo $item['item_number']; ?></td> 
    <td style="align:center;"><?php echo $item['name']; ?><br /> [<?php echo $cur_item_info->quantity; ?> in stock]</td> 



     <?php if ($items_module_allowed) 
     { 
     ?> 
      <td><?php echo form_input(array('name'=>'price','value'=>$item['price'],'size'=>'6'));?></td> 
    <?php 
    } 
    else 
    { 
    ?> 
     <td><?php echo $item['price']; ?></td> 
     <?php echo form_hidden('price',$item['price']); ?> 
    <?php 
    } 
    ?> 

    <td> 
    <?php 
     if($item['is_serialized']==1) 
     { 
      echo $item['quantity']; 
      echo form_hidden('quantity',$item['quantity']); 
     } 
     else 
     { 
      echo form_input(array('name'=>'quantity','value'=>$item['quantity'],'size'=>'2')); 
     } 
    ?> 
    </td> 
    </tr> 
<?php 
    // I assumed that there must be a table row closer (above) 
    } // end if quantity > 0 
?> 

HTH

+0

測試了代碼,雖然它沒有顯示在註冊部分,但是當我繼續結帳時顯示在收據上...請教 – Jeff

+0

我在這裏看不到收據的代碼,但要走的路是同樣的 - 找到一段代碼,將行放在收據上,添加與寄存器部分相同的條件,然後設置;-) – ErnestV

+0

我想我發佈了錯誤的代碼,我再次研究,發現這一點。我認爲這可能是核心代碼... – Jeff

0

關於新的代碼 - 你有一個名爲「out_of_stock」的函數,我會試着在add_item的開始處調用這個函數。請注意,這只是一個猜測,因爲我不知道你的店鋪系統的固有特徵:

function add_item($item_id,$quantity=1,$discount=0,$price=null,$description=null,$serialnumber=null) 
{ 
//make sure item exists 
if(!$this->CI->Item->exists($item_id)) 
{ 
    //try to get item id given an item_number 
    $item_id = $this->CI->Item->get_item_id($item_id); 

    if(!$item_id) 
     return false; 
} 

// add the out-of-stock check here 
if (out_ot_stock($item_id)) { 
    return false; 
} 

// continue with the rest of code