Esempio n. 1
0
 public function actionEndSaleMobile()
 {
     $user_id = (int) Yii::app()->request->cookies['user_id']->value;
     $user = User::model()->findByPk($user_id);
     $saleTemps = SaleTemp::model()->findAllByAttributes(array('user_id' => $user_id, 'sale_type' => 'mobile'));
     // find total money
     $total_money = 0;
     foreach ($saleTemps as $saleTemp) {
         $total_money += $saleTemp->price;
     }
     // bill sale
     $billSale = new BillSale();
     $billSale->bill_sale_created_date = new CDbExpression('NOW()');
     $billSale->bill_sale_status = 'pay';
     $billSale->member_id = 0;
     $billSale->bill_sale_vat = 'no';
     $billSale->user_id = $user_id;
     $billSale->branch_id = $user->branch_id;
     $billSale->bill_sale_pay_date = new CDbExpression('NOW()');
     $billSale->vat_type = 'in';
     $billSale->bonus_price = 0;
     $billSale->out_vat = 0;
     $billSale->input_money = 0;
     $billSale->return_money = 0;
     $billSale->total_money = $total_money;
     $billSale->sale_type = 'mobile';
     if ($billSale->save()) {
         // bill sale detail
         foreach ($saleTemps as $saleTemp) {
             $info = Product::getInfoByBarcode($saleTemp->barcode);
             $billSaleDetail = new BillSaleDetail();
             $billSaleDetail->bill_id = $billSale->bill_sale_id;
             $billSaleDetail->bill_sale_detail_barcode = $saleTemp->barcode;
             $billSaleDetail->bill_sale_detail_price = $saleTemp->price;
             $billSaleDetail->bill_sale_detail_price_vat = 0;
             $billSaleDetail->bill_sale_detail_qty = 1;
             $billSaleDetail->bill_sale_detail_has_bonus = 'no';
             $billSaleDetail->bill_sale_detail_type = 'one';
             $billSaleDetail->old_price = $info['old_price'];
             $billSaleDetail->save();
         }
         // clear sale temp
         SaleTemp::model()->deleteAllByAttributes(array('user_id' => $user_id, 'sale_type' => 'mobile'));
         // success
         echo 'success';
     }
 }
Esempio n. 2
0
 public function actionSendFromQuotationBillToBillSale()
 {
     $this->checkLogin();
     $quotation_id = (int) $_POST['quotation_id'];
     $vat_price = $_POST['vat_price'];
     $quotation = Quotation::model()->findByPk((int) $quotation_id);
     if (!empty($quotation)) {
         $billSale = BillSale::model()->findByAttributes(array('quotation_id' => $quotation_id));
         if (empty($billSale)) {
             $user_id = Yii::app()->request->cookies['user_id']->value;
             $user = User::model()->findByPk($user_id);
             //
             // create bill_sale
             //
             $billSale = new BillSale();
             $billSale->quotation_id = $quotation_id;
             $billSale->sale_type = 'sale';
             $billSale->bill_sale_pay_date = new CDbExpression('NOW()');
             $billSale->branch_id = $user->branch_id;
             $billSale->user_id = $user_id;
             $billSale->member_id = 0;
             $billSale->bill_sale_status = 'pay';
             $billSale->bill_sale_created_date = new CDbExpression('NOW()');
             if ($quotation->vat > 0) {
                 $vat_price = str_replace(',', '', $vat_price);
                 $billSale->vat_type = 'out';
                 $billSale->out_vat = $vat_price;
                 $billSale->bill_sale_vat = 'vat';
                 $billSale->vat_percen = $quotation->vat;
             }
             if ($billSale->save()) {
                 //
                 // read from quotation and transfer to tb_bill_sale_detail
                 //
                 $quotationDetails = QuotationDetail::model()->findAllByAttributes(array('quotation_id' => $quotation_id));
                 foreach ($quotationDetails as $quotationDetail) {
                     $billSaleDetail = new BillSaleDetail();
                     $billSaleDetail->bill_id = $billSale->bill_sale_id;
                     $billSaleDetail->bill_sale_detail_barcode = $quotationDetail->barcode;
                     $billSaleDetail->bill_sale_detail_price = $quotationDetail->old_price;
                     $billSaleDetail->bill_sale_detail_qty = $quotationDetail->qty;
                     $billSaleDetail->sub = $quotationDetail->sub;
                     $billSaleDetail->quotation_detail_id = $quotationDetail->id;
                     $billSaleDetail->save();
                 }
                 echo $billSale->bill_sale_id;
             }
         } else {
             echo $billSale->bill_sale_id;
         }
     }
 }
 public function actionEndSale()
 {
     $this->checkLogin();
     $saleTemps = SaleTemp::model()->findAllByAttributes(array('user_id' => (int) Yii::app()->request->cookies['user_id']->value));
     if (!empty($saleTemps)) {
         // find member_id
         $member_code = Util::input($_POST['txt_member_code']);
         $member_id = 0;
         if (!empty($member_code)) {
             $member = Member::model()->findByAttributes(array('member_code' => $member_code));
             if (!empty($member)) {
                 $member_id = $member->member_id;
             }
         }
         // sale_status
         if ($_POST['sale_status'] == 'cash') {
             $saleStatus = 'pay';
         } else {
             $saleStatus = 'credit';
         }
         $created_date = Util::input($_POST['BillSale']['bill_sale_created_date']);
         $created_date = Util::thaiToMySQLDate($created_date);
         // bill sale
         $modelBillSale = new BillSale();
         $modelBillSale->bill_sale_created_date = $created_date;
         $modelBillSale->bill_sale_status = $saleStatus;
         $modelBillSale->member_id = $member_id;
         $modelBillSale->bill_sale_vat = Util::input($_POST['bill_sale_vat']);
         $modelBillSale->user_id = (int) Yii::app()->request->cookies['user_id']->value;
         $modelBillSale->branch_id = Util::input($_POST['BillSale']['branch_id']);
         $modelBillSale->bonus_price = Util::input($_POST['bonus_price']);
         $modelBillSale->out_vat = Util::input($_POST['out_vat']);
         $modelBillSale->vat_type = Util::input($_POST['hidden_vat_type']);
         $modelBillSale->input_money = Util::input($_POST['hidden_input']);
         $modelBillSale->return_money = Util::input($_POST['hidden_return_money']);
         $modelBillSale->total_money = Util::input($_POST['hidden_total']);
         if ($_POST['sale_status'] == 'cash') {
             $_time = date("h:i:s");
             $modelBillSale->bill_sale_pay_date = $created_date . " " . $_time;
         }
         if ($modelBillSale->save()) {
             // store data bill_sale_detail from session to database
             $i = 0;
             $qtys = $_POST['qtys'];
             foreach ($saleTemps as $saleTemp) {
                 $qty_for_sub_stock = $qtys[$i];
                 $model = new BillSaleDetail();
                 $model->bill_id = $modelBillSale->bill_sale_id;
                 $model->bill_sale_detail_barcode = $saleTemp->barcode;
                 $model->bill_sale_detail_price = $saleTemp->price;
                 $model->bill_sale_detail_qty = $saleTemp->qty;
                 $model->bill_sale_detail_price_vat = $saleTemp->price * 0.07000000000000001;
                 $model->old_price = $saleTemp->old_price;
                 $model->save();
                 // sub stock
                 $product_code = $saleTemp->barcode;
                 // find by barcode
                 $product = Product::model()->findByAttributes(array('product_code' => $product_code));
                 if (empty($product)) {
                     // find by pack barcode
                     $product = Product::model()->findByAttributes(array('product_pack_barcode' => $product_code));
                 }
                 if (empty($product)) {
                     // find by barcode_price
                     $barcodePrice = BarcodePrice::model()->findByAttributes(array('barcode' => $product_code));
                     $product = $barcodePrice->getProduct();
                 }
                 if (!empty($saleTemp->qty_per_pack)) {
                     $qty_for_sub_stock = $saleTemp->qty_per_pack * $qty_for_sub_stock;
                 }
                 $qty = $product->product_quantity - $qty_for_sub_stock;
                 $product->product_quantity = $qty;
                 $product->save();
                 $i++;
             }
             // save to tb_product_serial
             $serials = $_POST['serials'];
             $hidden_product_codes = $_POST['hidden_product_codes'];
             if (!empty($serials)) {
                 $i = 0;
                 foreach ($serials as $serial) {
                     $product_code = $hidden_product_codes[$i];
                     $productSerial = new ProductSerial();
                     $productSerial->product_code = $product_code;
                     $productSerial->serial_no = $serial;
                     $productSerial->product_start_date = new CDbExpression('NOW()');
                     $productSerial->bill_sale_id = $modelBillSale->bill_sale_id;
                     // expire date
                     if (!empty($r['product_expire_date'])) {
                         $expire_date = Util::thaiToMySQLDate($r['product_expire_date']);
                         $productSerial->product_expire_date = $expire_date;
                     }
                     $productSerial->save();
                 }
             }
             // keep last bill_id
             $output = array('last_bill_id' => $modelBillSale->bill_sale_id, 'message' => 'success');
             echo CJSON::encode($output);
         } else {
             echo 'can not save modal bill sale';
         }
     } else {
         echo 'saleTemp is a empty';
     }
 }