2016-04-20 14 views
0

po_headpo_detailの2つのテーブルがあります。注文し、在庫が注文したどのように多くの項目について他のテーブルの条件を更新する

po_head店舗情報についてPO Status = OPEN (qty remain > 0)/CLOSED (qty remain = 0)

po_detail店舗情報。
私はCLOSED IF qty remain in po_detail = 0

ノートであることをpo_headerpo_statusを更新する必要がありpo_invoice ...

に関連し、それらの両方:私はこのようなコントローラでは、いくつかの関数を作成した後
qty remain = sum(po_detail_qty) from po_detail pd where pd.po_invoice = ph.po_invoice

function receive(){ 
    $data  = array(); 
    $subtotal = 0; 
    $total = 0; 
    $idnr  = $this->input->post('idtut'); 
    $id_detail = $this->input->post('prDetailKodeBarang'); 
    $merk  = $this->input->post('prDetailMerkId'); 
    $kategori = $this->input->post('prDetailKategoriId'); 
    $qty_receive= $this->input->post('prDetailQtyRcv'); 
    $price  = $this->input->post('prDetailPrice'); 
    $podeid  = $this->input->post('poDetailId'); 
    for($i = 0; $i < count($merk); $i++){ 
     $subtotal = $qty_receive[$i] * $price[$i]; 
     $data[] = array(
         'pr_po_detail_id'  => $podeid[$i], 
         'pr_kode_barang'  => $id_detail[$i], 
         'pr_merk_item_id'  => $merk[$i], 
         'pr_invoice'   => $this->input->post('prheadInvoice'), 
         'pr_kategori_item_id' => $kategori[$i], 
         'pr_detail_qty_receive' => $qty_receive[$i], 
         'pr_detail_price'  => $price[$i], 
        ); 
     $total += $subtotal; 

     $update['po_detail_qty'] = $this->model_po->getKurangStok($podeid[$i],$qty_receive[$i]); 
     $key['po_detail_id'] = $podeid[$i]; 
     $this->model_po->updateData('po_detail',$update,$key); 
    } 
    $this->db->insert_batch('pr_detail', $data); 
    $head = array(
       'pr_invoice'  => $this->input->post('prheadInvoice'), 
       'pr_po_invoice'  => $this->input->post('idtut'), 
       'pr_pengirim'  => $this->input->post('prPengirim'), 
       'pr_total_bayar' => $total, 
       'pr_date'   => $this->input->post('prHeadDate'), 
       'pr_receiver'  => $this->input->post('prHeadCreator'), 
       'pr_status_payment' => $this->input->post('prStatusPayment') 
       ); 
    $this->model_po->create('pr_head', $head); 
    $this->model_po->updateStatusPO($idnr); 
    redirect('po'); 
} 

これは私の更新ステータスPOのモデルです:

function updateStatusPO($idnr){ 
    $query = (" UPDATE po_head ph SET ph.po_status_po = 'CLOSED' WHERE 
       (SELECT SUM(pd.po_detail_qty) FROM po_detail pd WHERE pd.po_invoice = '".$idnr."') = '0' 
       AND ph.po_invoice = '".$idnr."' 
      "); 
} 

が、しばらくpo_detail_qty was "0"状態POは変化しませんでした。

答えて

0

私はjoinでupdateを使用しました。 これを試してください:

UPDATE po_head ph 
inner join po_detail pd on pd.po_invoice = ph.po_invoice 
SET ph.po_status_po = 'CLOSED' WHERE 
       SUM(pd.po_detail_qty) = 0 
       AND ph.po_invoice = '".$idnr."' 
+0

こんにちはdipanwita、あなたの応答ありがとう...それは動作しません – user2236102

0

私は百回を試した後、間違いは私がます$ this-> DB->クエリ($クエリ)を追加し、このクエリ

を実行していなかったです。 $クエリの後にすべてうまく動作しています。ありがとう

関連する問題