[ '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::readProductDiscounts(); $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 { $user = User::findOne( [ 'id' => Yii::$app->user->id ] ); // $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() { $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 { $tp = new TransferPayout ( [ 'idUser' => \Yii::$app->user->id, 'idTransfers' => $model->transfers, 'cartType' => 'user', 'idAccount' => Account::readDefault () ] ); $tp->payout (); // UserSoldItem::payout ( $user, $model->transfers ); $transaction->commit (); \Yii::$app->session->setFlash ( 'success', 'Recepicó kosár fizetve' ); } catch ( Exception $e ) { $transaction->rollback (); Yii::error ( "faled to save :" . $e->getMessage () ); } 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'; // 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 { $tp = new TransferPayout ( [ 'idUser' => \Yii::$app->user->id, 'idTransfers' => $model->transfers, 'cartType' => 'customer', 'idAccount' => Account::readDefault (), 'idCustomer' => $this->customer->id_customer ] ); $tp->payout (); // UserSoldItem::payout ( $user, $model->transfers ); $transaction->commit (); \Yii::$app->session->setFlash ( 'success', 'Vendég kosár fizetve : ' . $this->customer->name ); } catch ( Exception $e ) { $transaction->rollback (); Yii::error ( "faled to save :" . $e->getMessage () ); } catch ( \Exception $e ) { $transaction->rollback (); Yii::error ( "faled to save :" . $e->getMessage () ); } } else { Yii::error ( "faled to save : no customer or transfer" ); \Yii::$app->session->setFlash ( 'warning', 'Nem történt kifizeté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, * ]); * } * } */ }