[ 'class' => VerbFilter::className (), 'actions' => [ 'delete' => [ 'post' ] ] ], 'access' => [ 'class' => \yii\filters\AccessControl::className (), 'only' => [ 'sale', 'payout-customer-cart', 'payout-user-cart', 'lookup', 'find' ], 'rules' => [ // allow authenticated users [ 'allow' => true, 'roles' => [ '@' ] ] ] // everything else is denied ] , // named behavior, configuration array 'defaultAccount' => [ 'class' => DefaultAccountBehavior::className(), ], 'cassaIsOpen' => [ 'class' => CassaOpenBehavior::className(), ], ]; } public function actionSale($number = null) { // $this->findByNumber($number); $receptionForm = new ReceptionForm (); $receptionForm->number = $number; $receptionForm->readCard (); $this->card = $receptionForm->card; $this->customer = $receptionForm->customer; $model = new ProductSaleForm (); $lookupModel = new ProductLookupForm (); $currencies = Currency::find ()->all (); $accounts = Account::read (); $discounts = Discount::read (); $user = User::findOne ( Yii::$app->user->id ); $model->customer = $this->customer; $model->card = $this->card; $products = Product::readForDefaultAccount (); $products = Product::modelToMapIdName ( $products ); $model->products = $products; if (Yii::$app->request->isAjax) { \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $model->currencies = $currencies; $model->accounts = $accounts; $model->discounts = $discounts; $model->id_account = Account::readDefault (); $result = [ ]; $result ['code'] = 'unknown'; if ($model->load ( Yii::$app->request->post () )) { if ($model->save ()) { $result ['code'] = 'success'; $result ['message'] = Yii::t ( 'common/product', "Sold: {product}", [ 'product' => $model->transfer->toProductSoldString () ] ); } else { $result ['code'] = 'invalid'; $result ['errors'] = $model->getErrors (); } } $userTransfers = Transfer::modelsToArray ( Transfer::readUserSoldTransfers ( $user ) ); $customerCart = Transfer::modelsToArray ( Transfer::readCustomerCart ( $this->customer ) ); $result ['transfers'] = $userTransfers; $result ['customer_cart'] = $customerCart; return $result; } else { // $userTransfers = Transfer::readUserSoldTransfers( $user ); $model->customerCart = Transfer::modelsToArray ( Transfer::readCustomerCart ( $this->customer ) ); $userTransfers = Transfer::modelsToArray ( Transfer::readUserSoldTransfers ( $user ) ); return $this->render ( "sale", [ 'customer' => $this->customer, 'card' => $this->card, 'model' => $model, 'lookupModel' => $lookupModel, 'currencies' => $currencies, 'accounts' => $accounts, 'discounts' => $discounts, 'userTransfers' => $userTransfers, 'receptionForm' => $receptionForm ] ); } } public function actionPayoutUserCart() { if (Yii::$app->request->isAjax) { // $result = [ ]; // \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; // $user = User::findOne ( Yii::$app->user->id ); // UserSoldItem::payout ( $user ); // $userTransfers = Transfer::modelsToArray ( Transfer::readUserSoldTransfers ( $user ) ); // $result ['transfers'] = $userTransfers; // $result ['code'] = 'success'; return $result; } else { $model = new UserCartPayoutForm (); $user = User::findOne ( Yii::$app->user->id ); if ( $model->load ( Yii::$app->request->post () ) && $model->validate () &&isset ( $user ) && count ( $model->transfers ) > 0) { $connection = \Yii::$app->db; $transaction = $connection->beginTransaction (); try { UserSoldItem::payout ( $user, $model->transfers , Account::readDefault() ); $transaction->commit (); \Yii::$app->session->setFlash ( 'success', 'Recepicó kosár fizetve' ); } catch ( Exception $e ) { $transaction->rollback (); Yii::error ( "faled to save :" . $e->getMessage () ); } } else { Yii::error ( "faled to save : transfer" ); \Yii::$app->session->setFlash ( 'warning', 'Nem történt változás' ); } } return $this->redirect ( Yii::$app->request->referrer ); } public function actionPayoutCustomerCart($number) { $cart = [ ]; $code = 'error'; $message = 'Hiba történt'; if (Yii::$app->request->isAjax) { $result = [ ]; \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $this->findByNumber ( $number ); if (isset ( $this->customer )) { $connection = \Yii::$app->db; $transaction = $connection->beginTransaction (); try { ShoppingCart::payout ( $this->customer ); $transaction->commit (); $cart = Transfer::modelsToArray ( Transfer::readCustomerCart ( $this->customer ) ); $code = 'success'; $message = 'Bevásárlókosár fizetve: ' . $this->card->number; } catch ( Exception $e ) { $transaction->rollback (); } } $result ['customer_cart'] = $cart; $result ['code'] = $code; $result ['message'] = $message; return $result; } else { // post $model = new CustomerCartPayoutForm (); if ($model->load ( Yii::$app->request->post () ) && $model->validate ()) { $this->findByNumber ( $number ); if (isset ( $this->customer ) && count ( $model->transfers ) > 0) { $connection = \Yii::$app->db; $transaction = $connection->beginTransaction (); try { ShoppingCart::payout ( $this->customer, $model->transfers , Account::readDefault()); $transaction->commit (); \Yii::$app->session->setFlash ( 'success', 'Vendég kosár kifizetve' ); } catch ( Exception $e ) { $transaction->rollback (); Yii::error ( "faled to save :" . $e->getMessage () ); \Yii::$app->session->setFlash ( 'danger', 'Hiba történt a mentés során' ); } } else { Yii::error ( "faled to save : no customer or transfer" ); \Yii::$app->session->setFlash ( 'warning', 'Nem történt változás' ); } }else{ \Yii::$app->session->setFlash ( 'warning', 'Nem történt változás' ); } return $this->redirect ( Yii::$app->request->referrer ); } } /** */ public function actionLookup($query = null) { $result = [ ]; $product = Product::findProduct ( $query, Account::readDefault () ); $product = Product::modelToArray ( $product ); $result ['product'] = $product; \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return $result; } /** */ public function actionFind($id = null) { $result = [ ]; $product = Product::findOne ( $id ); $product = Product::modelToArray ( $product ); $result ['product'] = $product; \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return $result; } public function actionInventory( ) { $searchModel = new ProductInventorySearch( ['account' => Account::readDefaultObject()] ); // $searchModel->search(\Yii::$app->request->params); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); // $inventory = new ProductInventory([ // ]); // if ( $output == 'xls'){ // $inventory->pagination = false; // } // $inventory->createDataProvider(); // $dp = $inventory->dataProvider; if ( $searchModel->output == 'xls' ){ $models = $dataProvider->getModels(); $objPHPExcel = new \PHPExcel(); $sheet = $objPHPExcel->setActiveSheetIndex(0); /** * Termék azonosító Termék neve Termék szám Termék vonalkód Termék raktáron Termék eladva * */ $row = 1; $sheet ->setCellValue('A'.$row, "Termék azonosító") ->setCellValue('B'.$row, "Termék név") ->setCellValue('C'.$row, "Termék szám") ->setCellValue('D'.$row, "Termék vonalkód") ->setCellValue('E'.$row, "Termék raktáron"); // ->setCellValue('F'.$row, "Eladott mennyiség"); foreach ($models as $model ){ $row++; $sheet->setCellValue('A'.$row, $model['product_id']) ->setCellValue('B'.$row, $model['product_name']) ->setCellValue('C'.$row, $model['product_number']) ->setCellValue('D'.$row, $model['product_barcode']) ->setCellValue('E'.$row, $model['product_stock']); // ->setCellValue('F'.$row, $model['product_sold']); } $styleArray = array( 'font' => array( 'bold' => true, // 'color' => array('rgb' => 'FF0000'), // 'size' => 15, // 'name' => 'Verdana' )); foreach(range('A','E') as $columnID) { $sheet->getColumnDimension($columnID)->setAutoSize(true); $sheet->getStyle($columnID.'1')->applyFromArray($styleArray); } // Redirect output to a client’s web browser (Excel5) header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="leltar.xls"'); header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header ('Pragma: public'); // HTTP/1.0 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; } return $this->render('inventory',[ 'searchModel' =>$searchModel, 'dataProvider' => $dataProvider]); } /** * Finds the Product model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * * @param integer $id * @return Product the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Product::findOne ( $id )) !== null) { return $model; } else { throw new NotFoundHttpException ( 'The requested page does not exist.' ); } } protected function findByNumber($number) { $this->card = null; $this->customer = null; if ($number != null) { $this->card = Card::readCard ( $number ); if ($this->card != null) { $this->customer = Customer::find ()->innerJoin ( Card::tableName (), "customer.id_customer_card = card.id_card" )->andWhere ( [ 'customer.id_customer_card' => $this->card->id_card ] )->one (); } } } /** * Lists all Product models. * * @return mixed */ /* * public function actionIndex() * { * $searchModel = new ProductSearch(); * $dataProvider = $searchModel->search(Yii::$app->request->queryParams); * * return $this->render('index', [ * 'searchModel' => $searchModel, * 'dataProvider' => $dataProvider, * ]); * } */ /** * Displays a single Product model. * * @param integer $id * @return mixed */ /* * public function actionView($id) * { * return $this->render('view', [ * 'model' => $this->findModel($id), * ]); * } */ /** * Updates an existing Product model. * If update is successful, the browser will be redirected to the 'view' page. * * @param integer $id * @return mixed */ /* * public function actionUpdate($id) * { * $model = $this->findModel($id); * * if ($model->load(Yii::$app->request->post()) && $model->save()) { * return $this->redirect(['view', 'id' => $model->id_product]); * } else { * return $this->render('update', [ * 'model' => $model, * ]); * } * } */ /** * Deletes an existing Product model. * If deletion is successful, the browser will be redirected to the 'index' page. * * @param integer $id * @return mixed */ /* * public function actionDelete($id) * { * $this->findModel($id)->delete(); * * return $this->redirect(['index']); * } */ /** * Creates a new Product model. * If creation is successful, the browser will be redirected to the 'view' page. * * @return mixed */ /* * public function actionCreate() * { * $model = new Product(); * * if ($model->load(Yii::$app->request->post()) && $model->save()) { * return $this->redirect(['view', 'id' => $model->id_product]); * } else { * return $this->render('create', [ * 'model' => $model, * ]); * } * } */ }