hbsprogram.com

thủ thuật wordpress ,vps và mình thích thì mình viết thôi

Xin chào các bạn .Nếu ai đó đã từng làm kho hoặc đóng hàng sẽ rất hay gặp trường hợp đi lại nhiều lần để đóng hàng .Giả sử đơn hàng A và đơn hàng B trùng 1 số mã hàng như bình thường sẽ đóng hết hàng gói A sau đó sẽ đến đóng B .Tốc độ sẽ giảm vì thời gian  đi đến  kệ lấy hàng đóng từng đơn 1

Ý tưởng đặt ra là chúng ta sẽ tạo ra bước trung gian lấy tất cả hàng cần đóng thành 1 kho phụ để đóng .Có 2 tác dụng 1 là giảm sai sót khi đóng hàng .Đến cuối ngày đóng hết mà dư hay thiếu là có vấn đề .Thứ 2 tăng tốc độ đóng hàng tăng lên đáng kể

Dầu tiên trong model chúng ta cần xử lý việc lấy toàn bộ sản phẩm ở đơn hàng đang đóng :

public function getItems_packing($warehouse_id = NULL, $status = 'packing') {

        $this->db->select('sale_items.product_name,sale_items.product_code,sale_items.quantity,product_variants.name as name_bienthe');
        $this->db->join('sale_items', 'deliveries.sale_id=sale_items.sale_id', 'left');
        $this->db->join('product_variants', 'sale_items.option_id=product_variants.id', 'left');
        $this->db->order_by('sale_items.product_code', 'asc');
        if ($warehouse_id) {
            $this->db->where('sale_items.warehouse_id', $warehouse_id);
        }
        $this->db->where('deliveries.status', $status);

        $q = $this->db->get('deliveries');
        
        if ($q->num_rows() > 0) {
        
            foreach (($q->result()) as $key => $value) {
                $data[$key] = $value;
            }
            
            for ($i = 0; $i < count($data) - 1; $i++) {
                for ($j = $i + 1; $j < count($data); $j++) {
                    if ($data[$i]->name_bienthe == $data[$j]->name_bienthe) {

                        $data[$i]->quantity = $data[$i]->quantity + $data[$j]->quantity;
                        $data[$j]->quantity = 0;
                    }
                }
            }
            $data = array_filter($data);
            return $data;
        }
        return FALSE;
    }

Ở trong Controller :

// số lượng lấy mẫu hàng tạo thành giỏ phụ để trước khi đóng đơn 
    public function deliveries_pick() {
        $warehouse_id = $this->session->userdata('warehouse_id');
        $this->sma->checkPermissions('deliveries');
        $data = $this->sales_model->getItems_packing();
        foreach ($data as $key => $value) {
            if ((int) $value->quantity == 0) {
                unset($data[$key]);
            }
        }
        
        $this->data['data'] = $data;
        $meta = array('page_title' => 'Lấy hàng', 'bc' => $bc);
        $this->page_construct('sales/deliveries_pick', $meta, $this->data);
    }

Ở views chúng ta

<div class="box">
    <div class="box-header">
        <h2 class="blue"><i class="fa-fw fa fa-plus"></i>Lấy hàng theo từng mã </h2>
        
        
    </div>
    <div class="tab-content col-md-6">
            
               <table class="table table-striped table-bordered">
                             <thead>
                               <tr>
                                 <th scope="col">Tên sản phẩm</th>
                                 <th scope="col">Mã sản phẩm</th>
                                 <th scope="col">Biến thể</th>
                                 <th scope="col">Số lượng</th>
                               </tr>
                             </thead>
                             
                             <tbody>
                                  <?php foreach ($data as $key=>$value) { 
                                    
                                    ?>
                                    <tr>
                                             <th scope="col"><?= $value->product_name ?></th>
                                             <th scope="col"><?= $value->product_code ?></th>
                                            <th scope="col"><?= $value->name_bienthe ?></th>
                                             <th scope="col"><?= (int)$value->quantity;?></th>
                                            
                                     </tr>
                                 <?php
                                     }
                                   ?>
                             </tbody>
                    </table>
          
           
        

        </div>
</div>

Như vậy là đã xong cho người dùng lấy hàng theo mã và theo size số khi đóng hàng