Beispiel #1
0
    /**
     * 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
        );
    }
Beispiel #2
0
    /**
     * 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');
    }