diff --git a/application/controllers/dashboard/DashboardController.php b/application/controllers/dashboard/DashboardController.php index baefb07..1fa1efc 100644 --- a/application/controllers/dashboard/DashboardController.php +++ b/application/controllers/dashboard/DashboardController.php @@ -42,12 +42,15 @@ class DashboardController extends MY_Controller { $available += $project['budgetAvailable']; } + $outstandings = $this->Invoices_model-> getTotalsOutstandingPerProject(); + $this->json( [ - 'totalOwp' => $totalOwp, - 'currentFinancialYear' => $currentFinancialYear, - 'owpNextyear' => $totalOwp - $currentFinancialYear, - 'revenuesNextyear' => $totalOwp / 0.4, - 'totalRevenues' => $totalRevenues + 'totalOwp' => round( $totalOwp, 0 ), + 'currentFinancialYear' => round( $currentFinancialYear ), + 'owpNextyear' => round( $totalOwp - $currentFinancialYear ), + 'revenuesNextyear' => round( $totalOwp / 0.4 ), + 'totalRevenues' => round( $totalRevenues ), + 'outstandings' => $outstandings ] ); } diff --git a/application/models/eloquent/Projectemployee.php b/application/models/eloquent/Projectemployee.php index 48b7372..15626df 100644 --- a/application/models/eloquent/Projectemployee.php +++ b/application/models/eloquent/Projectemployee.php @@ -8,113 +8,70 @@ class Projectemployee extends BaseModel { - public function project() - { - return $this->belongsTo( 'Project' ); - } + public function project() + { + return $this->belongsTo( 'Project' ); + } -<<<<<<< Updated upstream - public function user() - { - return $this->belongsTo( 'User' ); - } + public function user() + { + return $this->belongsTo( 'User' ); + } - public function projecthours() - { - return $this->hasMany( 'Projecthour' ); - } + public function projecthours() + { + return $this->hasMany( 'Projecthour' ); + } - public static function getAvailableEmployees( $projectID ) - { - $currentEmployees = Self::whereProjectId( $projectID ) - ->lists( 'user_id' ); + public static function getAvailableEmployees( $projectID ) + { + $currentEmployees = Self::whereProjectId( $projectID ) + ->lists( 'user_id' ); - $availableEmployees = User::selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ) - ->whereNotIn( 'id', $currentEmployees ) - ->whereArchive( 'F' ) - ->get(); + $availableEmployees = User::selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ) + ->whereNotIn( 'id', $currentEmployees ) + ->whereArchive( 'F' ) + ->get(); - return $availableEmployees; - } + return $availableEmployees; + } - public static function getUniqueProjectEmployees() - { - $projectemployees = Projectemployee::selectRaw( "USR.id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ) - ->distinct() - ->join( 'users AS USR', 'USR.id', '=', 'projectemployees.user_id' ) - ->get(); + public static function getUniqueProjectEmployees() + { + $projectemployees = Projectemployee::selectRaw( "USR.id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ) + ->distinct() + ->join( 'users AS USR', 'USR.id', '=', 'projectemployees.user_id' ) + ->get(); - return $projectemployees; - } + return $projectemployees; + } - public static function getProjectemployeeDetailsPerProject( $projectID ) - { - $details = Projectemployee::selectRaw( 'USR.id, budget, project_id, ROUND(SUM(hours), 0) AS hours, ROUND(SUM(hours * tarif), 0) AS revenues, projectemployees.id AS projectemployeeID' ) - ->join( 'users AS USR', 'USR.id', '=', 'projectemployees.user_id' ) - ->join( 'projecthours AS PRH', 'PRH.projectemployee_id', '=', 'projectemployees.id' ) - ->where( 'projectemployees.project_id', '=', $projectID ) - ->where( 'PRH.hourtype_id', '=', 1 ) - ->groupBy( 'projectemployees.id' ) - ->get(); + public static function getUniqueEmployeesWithActivity( $archive = 'F' ) + { + $projectemployees = Projectemployee::selectRaw( "USR.id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ) + ->distinct() + ->join( 'users AS USR', 'USR.id', '=', 'projectemployees.user_id' ) + ->join( 'projectemployees AS PRE', 'PRE.user_id', '=', 'USR.id' ) + ->join( 'projects AS PRJ', 'PRJ.id', '=', 'PRE.project_id' ); - return $details; - } + if ( $archive == 'F' ) $projectemployees = $projectemployees->where( 'PRJ.archive', '=', 'F' ); - public static function firstOrCreateProjectemployee( $userID, $projectID ) - { - $projectemployee = self::whereUserId($userID)->whereProjectId($projectID); + $projectemployees = $projectemployees->get(); - if( $projectemployee->count() > 0 ) return $projectemployee->first(); + return $projectemployees; + } - $user = User::find( $userID ); - - $tarif = $user ? $user->hourlyrate : 0; - - $projectemployee = Projectemployee::create( [ - 'project_id' => $projectID, - 'user_id' => $userID, - 'tarif' => $tarif - ] ); - - return $projectemployee; - } - - public static function createProjectEmployee( $projectID ) - { - $projectemployee = Projectemployee::create( [ - 'project_id' => $projectID - ] ); - - return $projectemployee->id; - } - - public static function saveProjectemployee( $projectemployeeID, $projectemployee ) - { - Projectemployee::whereId( $projectemployeeID ) - ->update( $projectemployee ); - } - - public static function removeProjectemployee( $projectemployeeID ) - { - Projectemployee::whereId( $projectemployeeID )->delete(); - } - -} -======= public static function getProjectemployeeDetailsPerProject( $projectID ) { $details = Projectemployee::selectRaw( ' USR.id, budget, project_id, ROUND(SUM(hours), 0) AS hours, ROUND(SUM(hours * tarif), 0) AS revenues, projectemployees.id AS projectemployeeID' ) ->join( 'users AS USR', 'USR.id', '=', 'projectemployees.user_id' ) ->join( 'projecthours AS PRH', 'PRH.projectemployee_id', '=', 'projectemployees.id' ) + ->where( 'projectemployees.project_id', '=', $projectID ) ->where( 'PRH.hourtype_id', '=', 1 ) // ->where( 'budget', '!=', 0 ) ->groupBy( 'projectemployees.id' ) ->havingRaw( 'ROUND(SUM(hours), 0) > 0' ); - - if( $projectID) - $details = $details->where( 'projectemployees.project_id', '=', $projectID ); - $details = $details->get(); return $details; @@ -160,4 +117,3 @@ class Projectemployee extends BaseModel { } } ->>>>>>> Stashed changes diff --git a/application/models/projects/Invoices_model.php b/application/models/projects/Invoices_model.php index 2bbdef1..3c28eff 100644 --- a/application/models/projects/Invoices_model.php +++ b/application/models/projects/Invoices_model.php @@ -54,4 +54,60 @@ class Invoices_model extends MY_Model { return $invoiceDetails; } -} \ No newline at end of file + + public function getTotalsOutstandingPerProject() + { + $this->sql = " + SELECT + PRJ.id, + projectnumber, + projectname, + SUM(invoiced) AS invoiced, + SUM(payment) AS payment, + revenues, + costs, + COALESCE(payedcosts, 0) AS payedcosts + FROM ( + SELECT + project_id, + ROUND(SUM(invoiceamount * (1 + (vatrate / 100))), 0) AS invoiced, + payment + FROM + invoices INV + JOIN vats VAT ON VAT.id = INV.vat_id + LEFT JOIN ( + SELECT + ROUND(COALESCE(SUM(paymentamount), 0), 0) AS payment, + invoice_id + FROM + payments + GROUP BY + invoice_id) AS Q1 ON INV.id = Q1.invoice_id + GROUP BY + INV.id) Q2 + JOIN projects PRJ ON PRJ.id = Q2.project_id + JOIN ( + SELECT + ROUND((own_revenue + other_revenue + costs) * (1 + (vatrate / 100)), 0) revenues, + ROUND(costs * (1 + (vatrate / 100)), 0) costs, + OFF.project_id + FROM + offers OFF + JOIN projects PRJ ON PRJ.id = OFF.project_id + JOIN vats VAT ON VAT.id = PRJ.vat_id) Q3 ON Q3.project_id = PRJ.id + LEFT JOIN ( + SELECT + SUM(costs) AS payedcosts, + project_id + FROM + projectcosts + GROUP BY + project_id) Q4 ON Q4.project_id = PRJ.id + GROUP BY + PRJ.id "; + + $outstandings = $this->get_query_result(); + + return $outstandings; + } +} diff --git a/application/views/main_view.php b/application/views/main_view.php index 7effca0..0026de9 100644 --- a/application/views/main_view.php +++ b/application/views/main_view.php @@ -5,6 +5,8 @@ + +