2017-02-01 7 views
0

요청에서 배열 값을 가져오고 첫 번째 if 문이 나에게 잘 작동합니다. 한 행을 내 salereturn 테이블로 가져 오지만 요청의 모든 레코드를 salereturn 테이블로 마이그레이션하려고합니다. 정말 문제를 이해하는 것이 확실하지 않다여러 개의 if 문이 동일한 모델을 업데이트하거나 Cakephp를 사용하여 다른 모델로 레코드를 변경합니다.

if ($this->request->is('post')) { 

    $Productsalesrec = !empty($this->request->data['Productsales']) ? $this->request->data['Productsales'] : ""; 

    if (!empty($Productsalesrec)) { 
     foreach ($Productsalesrec as $Productsales) { 

      if ($Productsales['status'] == 'MoveToShipment') { 

       $this->Productsales->id = $Productsales['id']; 
       $this->request->data['Productsales']['status'] = $Productsales['status']; 
       $this->Productsales->save($this->request->data); 
      } 

      if ($Productsales['status'] == 'Returned') { 

       $productsalesretArr = array(); 
       $productsalesre = $this->Productsales->find('all', array('conditions' => array('Productsales.product_sales_slno' => $id))); 

       $this->request->data['Salesreturn']['sales_order_date'] = $productsalesre['Productsales']['sales_order_date']; 
       $this->request->data['Salesreturn']['product_sale_id'] = $productsalesre['Productsales']['id']; 
       $this->request->data['Salesreturn']['sales_date'] = $productsalesre['Productsales']['expected_delivery_date']; 
       $this->request->data['Salesreturn']['product_sales_slno'] = $productsalesre['Productsales']['product_sales_slno']; 
       $this->request->data['Salesreturn']['price_per_unit_order'] = $productsalesre['Productsales']['sales_price_per_unit_order']; 
       $this->request->data['Salesreturn']['total_amount'] = $productsalesre['Productsales']['sales_price_per_unit_order'] * $Productsales['tot_unit']; 
       $this->request->data['Salesreturn']['total_unit'] = $Productsales['tot_unit']; 
       $this->request->data['Salesreturn']['product_id'] = $Productsales['product_id']; 
       $this->request->data['Salesreturn']['amount_returned'] = 0; 
       $this->request->data['Salesreturn']['status'] = 'Returned'; 
       $this->request->data['Salesreturn']['payment_method'] = 'Cash on Delivery'; 
       $this->request->data['Salesreturn']['created_date'] = date('Y-m-d H:i:s'); 
       $this->request->data['Salesreturn']['created_by'] = $this->Auth->user('id'); 

       $this->Salesreturn->save($this->request->data['Salesreturn']); 

       if ($Productsales['total_unit'] == $Productsales['tot_unit']) { 
        $this->Productsales->delete($Productsales['id']); 
       } elseif ($Productsales['total_unit'] >= $Productsales['tot_unit']) { 
        $this->Productsales->id = $Productsales['id']; 
        $this->request->data['Productsales']['total_unit'] = $Productsales['total_unit'] - $Productsales['tot_unit']; 
        $this->Productsales->save($this->request->data); 
       } 

       $prodtype = $this->Producttype->find('first', array('conditions' => array('Producttype.id' => $productsalesre['Productsales']['product_type_id']))); 
       $this->Producttype->id = $prodtype['Producttype']['id']; 

       $prodquantity = $prodtype['Producttype']['quantity'] + ($Productsales['total_unit'] - $Productsales['tot_unit']); 
       $prodtotstck = $prodtype['Producttype']['total_unit_stock'] + ($Productsales['total_unit'] - $Productsales['tot_unit']); 

       $this->Producttype->saveField('total_unit_stock', $prodtotstck); 
       $this->Producttype->saveField('quantity', $prodquantity); 
      } 
     } 
     $this->redirect(array('action' => 'index')); 
    } 
} 
+0

요청 및 첫 번째 if 문에서 배열 값을 가져오고 있습니다.> if ($ Productsales [ 'status'] == 'MoveToShipment') 제게 두 번째 if 문의 경우 훌륭하게 작동합니다. if ($ Productsales [ 'status'] == 'Returned') 마이 그 레이션하는 단 하나의 행을 내 salereturn 테이블에 저장하지만 요청의 모든 레코드를 salereturn 테이블로 마이그레이션하려고합니다. – ramakrishnan

답변

0

...

당신이 코드의이 부분을 의미합니까이 원하는 행동을하지?

if($Productsales['status'] == 'Returned') { 
    $this->request->data['Salesreturn']['sales_order_date']=$productsalesre['Productsales']['sales_order_date'];  
    ... 
    $this->Salesreturn->save($this->request->data['Salesreturn']); 
} 

은 당신의 상태 "$ Productsales [ '상태'] == '반환'은"문제입니다합니까?

게시물 배열의 한 행만이 상태 일 수 있습니다.

+0

두 개의 if 문이있는 경우 먼저 동일한 테이블에서 상태를 단독으로 업데이트하는 경우 두 번째 if 문이 product_sales_slno와 관련된 모든 행을 아래 쿼리에서 sales return이라는 다른 테이블로 복사해야합니다. $ productsalesre = $ this-> Productsales-> find ('all', array ('conditions'=> 배열 ('Productsales.product_sales_slno'=> $ id))); – ramakrishnan