/** * Generate or regenerate PDF for AP using FPDF library * @param $apId * @param bool $approved */ public static function generatePdfFpdf($doc_id, $doc_type, $approved = false) { if ( $doc_type == 'AP' ) { // get AP $ap = Aps::model()->with('dists', 'document', 'ck_req_detail')->findByAttributes( array('Document_ID' => $doc_id) ); $ckRequest = $ap->ck_req_detail; // get PO dists $apDists = $ap->dists; // get PO formatting $poFormatting = PoFormatting::model()->findByAttributes(array( 'Project_ID' => $ap->document->Project_ID, )); // get Sign_Requested_By user info $signRequestedByUser = Users::model()->with('person')->findByPk($ckRequest->Sign_Requested_By); $aproval_detail_list = Audits::getApprovalDetailList($ap->Document_ID); // get current vendor info $currentVendor = Vendors::model()->with('client.company.adreses')->findByPk($ap->Vendor_ID); $condition = UsersClientList::getClientAdminCondition($currentVendor->client->Client_ID); $vendorAdmin = UsersClientList::model()->with('user.person')->find($condition); $pdf = new FpdfAp('P','mm','Letter'); $pdf->AddFont('HelveticaB','','helveticab.php'); $pdf->AddFont('Courier','','courier.php'); $pdf->AddFont('CourierB','','courierb.php'); $pdf->SetAutoPageBreak(true, 10); $pdf->setVariables($ap,$poFormatting,$ckRequest,$apDists,$currentVendor,$vendorAdmin,$signRequestedByUser,$aproval_detail_list,$approved); $pdf->AliasNbPages(); $pdf->setPageNo(1); //$pdf->AliasNbPages(); $pdf->AddPage('P'); $pdf->SetFont('Helvetica','',13.5); $pdf->SetXY(5,10); $pdf->PrintContent(); //$path=Helper::createDirectory('batches');// creates directory "protected/data/batches" if not exists $fileName = 'ApTempPdf'.date('Y-m-d h:i:s').'.pdf'; $filepath = Helper::createDirectory('ap'); $filepath = Helper::createDirectory('ap/'.Yii::app()->user->clientID); $filepath.= '/'.$fileName; $pdf->Output($filepath, 'F'); //$pdf->Output(); $last_page = $pdf->custom_page_num; $pdf->Close(); } if (( $doc_type == 'PO' )) { $po = Pos::model()->findByAttributes( array('Document_ID' => $doc_id) ); // get PO dists $poDists = $po->dists; // get PO details $poDecrDetails = $po->decr_details; // get PO formatting $poFormatting = PoFormatting::model()->findByAttributes(array( 'Project_ID' => $po->document->Project_ID, )); // get Sign_Requested_By user info $signRequestedByUser = Users::model()->with('person')->findByPk($po->Sign_Requested_By); $aproval_detail_list = Audits::getApprovalDetailList($po->Document_ID); // get current vendor info $currentVendor = Vendors::model()->with('client.company.adreses')->findByPk($po->Vendor_ID); $condition = UsersClientList::getClientAdminCondition($currentVendor->client->Client_ID); $vendorAdmin = UsersClientList::model()->with('user.person')->find($condition); $paymentTypes = array( 'OA' => 'On Account', 'CC' => 'Credit Card', 'DP' => 'Deposit', 'CK' => 'Payment Check', 'PC' => 'Petty Cash', ); $pdf = new FpdfPo('P','mm','Letter'); $pdf->AddFont('HelveticaB','','helveticab.php'); $pdf->AddFont('Courier','','courier.php'); $pdf->AddFont('CourierB','','courierb.php'); $pdf->SetAutoPageBreak(true, 10); $pdf->setVariables($po,$poFormatting,$poDecrDetails,$poDists,$currentVendor,$vendorAdmin,$signRequestedByUser,$aproval_detail_list,$approved,$paymentTypes); $pdf->AliasNbPages(); $pdf->setPageNo(1); //$pdf->AliasNbPages(); $pdf->AddPage('P'); $pdf->SetFont('Helvetica','',13.5); $pdf->SetXY(5,10); $pdf->PrintContent(); //$path=Helper::createDirectory('batches');// creates directory "protected/data/batches" if not exists $fileName = 'TempFile.pdf'; $filepath = Helper::createDirectory('po'); $filepath = Helper::createDirectory('po/'.Yii::app()->user->clientID); $filepath.= '/'.$fileName; $pdf->Output($filepath, 'F'); //$pdf->Output(); $last_page = $pdf->custom_page_num; $pdf->Close(); } return array( 'path' => $filepath, 'pages'=> $last_page ); }
/** * Generate PDF for fake AP using FPDF library without saving to database. * @param $poId * @param bool $approved */ public static function generatePdfFpdfPreview($ap, $ckRequest, $apDists,$approved = false) { // get PO formatting $poFormatting = PoFormatting::model()->findByAttributes(array( 'Project_ID' => Yii::app()->user->projectID, )); // get Sign_Requested_By user info $signRequestedByUser = Users::model()->with('person')->findByPk($ckRequest->Sign_Requested_By); $aproval_detail_list = Audits::getApprovalDetailList($ap->Document_ID); // get current vendor info $currentVendor = Vendors::model()->with('client.company.adreses')->findByPk($ap->Vendor_ID); $condition = UsersClientList::getClientAdminCondition($currentVendor->client->Client_ID); $vendorAdmin = UsersClientList::model()->with('user.person')->find($condition); $pdf = new FpdfAp('P','mm','Letter'); $pdf->AddFont('HelveticaB','','helveticab.php'); $pdf->AddFont('Courier','','courier.php'); $pdf->AddFont('CourierB','','courierb.php'); $pdf->SetAutoPageBreak(true, 10); $pdf->setVariables($ap,$poFormatting,$ckRequest,$apDists,$currentVendor,$vendorAdmin,$signRequestedByUser,$aproval_detail_list,$approved); $pdf->AliasNbPages(); $pdf->setPageNo(1); //$pdf->AliasNbPages(); $pdf->AddPage('P'); $pdf->SetFont('Helvetica','',13.5); $pdf->SetXY(5,10); $pdf->PrintContent(); //$path=Helper::createDirectory('batches');// creates directory "protected/data/batches" if not exists $fileName = 'ApTempPdf'.date('Y-m-d h:i:s').'.pdf'; $filepath = Helper::createDirectory('ap'); $filepath = Helper::createDirectory('ap/'.Yii::app()->user->clientID); $filepath.= '/'.$fileName; $pdf->Output($filepath, 'F'); //$pdf->Output(); $last_page = $pdf->custom_page_num; $pdf->Close(); return array( 'filename'=>$fileName, 'filepath'=>$filepath ); }
/** * Approve users action */ public function actionApproveUsers() { if (isset($_GET['users']) && isset($_GET['userTypes'])) { foreach ($_GET['users'] as $id => $value) { if (is_numeric($id) && ($value == 'Y' || $value == 'N') && isset($_GET['userTypes'][$id]) && isset($this->userTypes[$_GET['userTypes'][$id]])) { // get user type $userType = $this->userTypes[$_GET['userTypes'][$id]]; $id = intval($id); //get users to approve row $usersToApprove = UsersToApprove::model()->with('user', 'client')->findByPk($id); if ($usersToApprove && $value == 'Y') { //approve user if ($usersToApprove->New_Client == UsersToApprove::NEW_CLIENT) { $client = $usersToApprove->client; $client->Client_Type = 1; $client->Client_Status = Clients::ACTIVE; $client->Client_Number = $client->Client_ID; $client->save(); ClientServiceSettings::addClientServiceSettings($client->Client_ID, true); $password = Helper::generatePassword(); $user = $usersToApprove->user; $user->Active = Users::ACTIVE; $user->User_Pwd = md5($password); $user->save(); $userClientRelation = UsersClientList::model()->findByAttributes(array( 'User_ID' =>$user->User_ID, 'Client_ID' =>$client->Client_ID, )); if ($userClientRelation) { $userClientRelation->User_Type = $userType; if (in_array($userType, UsersClientList::$clientAdmins)) { $userClientRelation->User_Approval_Value = Aps::APPROVED; } else if ($userType == UsersClientList::APPROVER) { $userClientRelation->User_Approval_Value = Aps::READY_FOR_APPROVAL + 1; } else { $userClientRelation->User_Approval_Value = 0; } $userClientRelation->save(); } $emailSuccess = Mail::sendRegistrationMail($user->person->Email, $user->User_Login,$password, $user->person->First_Name, $user->person->Last_Name, $client->company->Company_Name); $usersToApprove->delete(); } else { $usersToApprove->Approved_By_Admin = UsersToApprove::APPR_BY_ADMIN; $usersToApprove->save(); $client = $usersToApprove->client; $client->Client_Type = 1; $client->Client_Status = Clients::ACTIVE; $client->Client_Number = $client->Client_ID; $client->save(); $user = $usersToApprove->user; if ($user->User_Pwd == md5('temp100')) { // if user requested to join company by registration form $password = Helper::generatePassword(); $user->Active = Users::ACTIVE; $user->User_Pwd = md5($password); $user->Default_Project = 0; $user->save(); Mail::sendUserRegistrationMail($user->person->Email, $user->User_Login, $password, $user->person->First_Name, $user->person->Last_Name, $client->company->Company_Name); } else { // if user requested to join company and there is not client-admins $user->Active = Users::ACTIVE; $user->save(); } $condition = UsersClientList::getClientAdminCondition($usersToApprove->Client_ID); $client_admins_list = UsersClientList::model()->findAll($condition); //this is client admins for current client if ($client_admins_list) { // if client has client-admins foreach ($client_admins_list as $clientAdm) { $clientAdmin = Users::model()->with('person')->findByPk($clientAdm->User_ID); $emailSuccess = Mail::sendClientOfUserRegistrationMail($clientAdmin->person->Email, $clientAdmin->person->First_Name, $clientAdmin->person->Last_Name, $user->person->First_Name, $user->person->Last_Name, $client->company->Company_Name); } } // if client hasn't client admins $usersClientList = UsersClientList::model()->findByAttributes(array( 'Client_ID' => $usersToApprove->Client_ID, 'User_ID' => $usersToApprove->User_ID )); if (!$usersClientList) { $usersClientList = new UsersClientList; } $usersClientList->User_ID = $usersToApprove->User_ID; $usersClientList->Client_ID = $usersToApprove->Client_ID; $usersClientList->User_Type = $userType; if (in_array($userType, UsersClientList::$clientAdmins)) { $usersClientList->User_Approval_Value = Aps::APPROVED; } else if ($userType == UsersClientList::APPROVER) { $usersClientList->User_Approval_Value = Aps::READY_FOR_APPROVAL + 1; } else { $usersClientList->User_Approval_Value = 0; } $usersClientList->save(); $project = Projects::model()->findByAttributes(array( 'Client_ID' => $usersToApprove->Client_ID, )); $usersProjectList = new UsersProjectList; $usersProjectList->User_ID = $usersToApprove->User_ID; $usersProjectList->Client_ID = $usersToApprove->Client_ID; $usersProjectList->Project_ID = $project->Project_ID; $usersProjectList->save(); if ($user->Default_Project == 0) { $user->Default_Project = $project->Project_ID; } $user->save(); $usersToApprove->delete(); Mail::sendAddUserToClientMail($user->person->Email, $user->person->First_Name, $user->person->Last_Name, $client->company->Company_Name); } } else if ($usersToApprove && $value == 'N') { //reject user $user = $usersToApprove->user; $client = $usersToApprove->client; if ($usersToApprove->New_Client == UsersToApprove::NEW_CLIENT) { $company = $client->company; $addresses = $company->adreses; //delete company addresses foreach ($addresses as $address) { $companyAddress = CompanyAddresses::model()->findByAttributes(array( 'Company_ID' => $company->Company_ID, 'Address_ID' => $address->Address_ID, )); if ($companyAddress) { $companyAddress->delete(); } $address->delete(); } $company->delete(); $usersClientList = UsersClientList::model()->findByAttributes(array( 'User_ID' => $user->User_ID, 'Client_ID' => $client->Client_ID, )); if ($usersClientList) { $usersClientList->delete(); } $usersToApprove->delete(); $client->delete(); } else { $usersToApprove->delete(); } if ($user->User_Pwd == md5('temp100')) { $user->Active = Users::NOT_ACTIVE; $user->Default_Project = 0; $user->save(); Mail::sendRejectUserByAdminMail($user->person->Email, $user->person->First_Name, $user->person->Last_Name); } else { Mail::sendRejectMail($user->person->Email, $user->person->First_Name, $user->person->Last_Name, $client->company->Company_Name); } } } } Yii::app()->user->setFlash('success', "Users have been successfully approved/rejected!"); } else { Yii::app()->user->setFlash('success', "Users was not approved/rejected!"); } $this->redirect('/admin?tab=reg_requests'); }