├── .github
└── workflows
│ └── phpunit.yml
├── .gitignore
├── Procfile
├── README.md
├── app
├── .htaccess
├── Common.php
├── Config
│ ├── App.php
│ ├── Autoload.php
│ ├── Boot
│ │ ├── development.php
│ │ ├── production.php
│ │ └── testing.php
│ ├── Cache.php
│ ├── Constants.php
│ ├── ContentSecurityPolicy.php
│ ├── Database.php
│ ├── DocTypes.php
│ ├── Email.php
│ ├── Encryption.php
│ ├── Events.php
│ ├── Exceptions.php
│ ├── Filters.php
│ ├── ForeignCharacters.php
│ ├── Format.php
│ ├── Honeypot.php
│ ├── Images.php
│ ├── Kint.php
│ ├── Logger.php
│ ├── Migrations.php
│ ├── Mimes.php
│ ├── Modules.php
│ ├── Pager.php
│ ├── Paths.php
│ ├── Routes.php
│ ├── Services.php
│ ├── Toolbar.php
│ ├── UserAgents.php
│ ├── Validation.php
│ └── View.php
├── Controllers
│ ├── Akun.php
│ ├── BaseController.php
│ ├── Home.php
│ ├── JurnalPenyesuaian.php
│ ├── JurnalUmum.php
│ ├── Laporan.php
│ ├── Login.php
│ └── User.php
├── Database
│ ├── Migrations
│ │ ├── .gitkeep
│ │ ├── 2020-11-02-150333_user.php
│ │ ├── 2020-11-02-150447_akun.php
│ │ ├── 2020-11-02-150501_jurnalUmum.php
│ │ └── 2020-11-02-150509_jurnalPenyelesaian.php
│ └── Seeds
│ │ ├── .gitkeep
│ │ ├── AdminSeeder.php
│ │ ├── AkunSeeder.php
│ │ ├── DummySeeder.php
│ │ ├── JPSeeder.php
│ │ └── JUSeeder.php
├── Filters
│ ├── .gitkeep
│ ├── Auth.php
│ ├── Guest.php
│ └── RoleBased.php
├── Helpers
│ ├── .gitkeep
│ ├── converttousd_helper.php
│ ├── laporan_helper.php
│ └── tanggalindo_helper.php
├── Language
│ ├── .gitkeep
│ └── en
│ │ └── Validation.php
├── Libraries
│ └── .gitkeep
├── Models
│ ├── .gitkeep
│ ├── AkunModel.php
│ ├── JPModel.php
│ ├── JUModel.php
│ ├── JurnalUmumModel.php
│ └── UserModel.php
├── ThirdParty
│ └── .gitkeep
├── Views
│ ├── components
│ │ ├── akun
│ │ │ └── modal_tambah_akun.php
│ │ ├── alert_error.php
│ │ ├── alert_success.php
│ │ ├── jurnal_penyesuaian
│ │ │ └── modal_tambah_jurnal_penyesuaian.php
│ │ ├── jurnal_umum
│ │ │ └── modal_tambah_jurnal_umum.php
│ │ ├── laporan
│ │ │ ├── buku_besar.php
│ │ │ ├── buku_besar_en.php
│ │ │ ├── laba_rugi.php
│ │ │ ├── laba_rugi_en.php
│ │ │ ├── neraca_saldo.php
│ │ │ └── neraca_saldo_en.php
│ │ └── user
│ │ │ └── modal_tambah_user.php
│ ├── dashboard.php
│ ├── data_akun.php
│ ├── data_jurnal_penyesuaian.php
│ ├── data_jurnal_umum.php
│ ├── data_user.php
│ ├── errors
│ │ ├── cli
│ │ │ ├── error_404.php
│ │ │ ├── error_exception.php
│ │ │ └── production.php
│ │ └── html
│ │ │ ├── debug.css
│ │ │ ├── debug.js
│ │ │ ├── error_404.php
│ │ │ ├── error_exception.php
│ │ │ └── production.php
│ ├── laporan.php
│ ├── layout
│ │ └── app_layout.php
│ ├── login.php
│ ├── profile.php
│ └── welcome_message.php
└── index.html
├── builds
├── composer.json
├── composer.lock
├── license.txt
├── nohup.out
├── phpunit.xml.dist
├── public
├── .htaccess
├── ElaAdmin
│ ├── css
│ │ ├── cs-skin-elastic.css
│ │ ├── lib
│ │ │ ├── chosen
│ │ │ │ ├── chosen-sprite.png
│ │ │ │ ├── chosen-sprite@2x.png
│ │ │ │ ├── chosen.css
│ │ │ │ └── chosen.min.css
│ │ │ ├── datatable
│ │ │ │ ├── buttons.bootstrap.min.css
│ │ │ │ ├── buttons.dataTables.min.css
│ │ │ │ └── dataTables.bootstrap.min.css
│ │ │ └── vector-map
│ │ │ │ └── jqvmap.min.css
│ │ ├── style.css
│ │ └── style.css.map
│ ├── fonts
│ │ └── icomoon
│ │ │ ├── icomoon.eot
│ │ │ ├── icomoon.svg
│ │ │ ├── icomoon.ttf
│ │ │ ├── icomoon.woff
│ │ │ └── index.html
│ ├── images
│ │ ├── .gitignore
│ │ ├── admin.jpg
│ │ ├── avatar
│ │ │ ├── 1.jpg
│ │ │ ├── 2.jpg
│ │ │ ├── 3.jpg
│ │ │ ├── 4.jpg
│ │ │ ├── 5.jpg
│ │ │ ├── 6.jpg
│ │ │ ├── 64-1.jpg
│ │ │ └── 64-2.jpg
│ │ ├── favicon.png
│ │ ├── logo.png
│ │ ├── logo.psd
│ │ └── logo2.png
│ ├── js
│ │ ├── dashboard.js
│ │ ├── init
│ │ │ ├── chartjs-init.js
│ │ │ ├── datatables-init.js
│ │ │ ├── flot-chart-init.js
│ │ │ ├── fullcalendar-init.js
│ │ │ ├── gmap-init.js
│ │ │ ├── peitychart-init.js
│ │ │ ├── vector-init.js
│ │ │ └── weather-init.js
│ │ ├── lib
│ │ │ ├── chosen
│ │ │ │ ├── chosen.jquery.js
│ │ │ │ ├── chosen.jquery.min.js
│ │ │ │ ├── chosen.proto.js
│ │ │ │ └── chosen.proto.min.js
│ │ │ ├── data-table
│ │ │ │ ├── buttons.bootstrap.min.js
│ │ │ │ ├── buttons.colVis.min.js
│ │ │ │ ├── buttons.flash.min.js
│ │ │ │ ├── buttons.html5.min.js
│ │ │ │ ├── buttons.print.min.js
│ │ │ │ ├── dataTables.bootstrap.min.js
│ │ │ │ ├── dataTables.buttons.min.js
│ │ │ │ ├── datatables.min.js
│ │ │ │ ├── jquery-1.12.4.js
│ │ │ │ ├── jquery.dataTables.min.js
│ │ │ │ ├── jszip.min.js
│ │ │ │ ├── pdfmake.min.js
│ │ │ │ └── vfs_fonts.js
│ │ │ └── gmap
│ │ │ │ ├── gmapApi.js
│ │ │ │ ├── gmaps.js
│ │ │ │ └── gmaps.min.js
│ │ ├── main.js
│ │ ├── vmap.sampledata.js
│ │ └── widgets.js
│ └── scss
│ │ ├── style.css
│ │ ├── style.css.map
│ │ └── style.scss
├── css
│ └── app.css
├── favicon.ico
├── img
│ ├── avatar.png
│ ├── background
│ │ ├── bg-login.jpg
│ │ └── bg-ungu.svg
│ └── icons
│ │ ├── icon-avatar.png
│ │ ├── icon-menu-akun.png
│ │ ├── icon-menu-dashboard.png
│ │ ├── icon-menu-jp.png
│ │ ├── icon-menu-ju.png
│ │ ├── icon-menu-laporan.png
│ │ ├── icon-menu-user.png
│ │ ├── icon-widget-1.png
│ │ ├── icon-widget-2.png
│ │ ├── icon-widget-3.png
│ │ ├── icon-widget-4.png
│ │ └── logo.png
├── index.php
└── robots.txt
├── spark
├── tests
├── README.md
├── _support
│ ├── Database
│ │ ├── Migrations
│ │ │ └── 2020-02-22-222222_example_migration.php
│ │ └── Seeds
│ │ │ └── ExampleSeeder.php
│ ├── DatabaseTestCase.php
│ ├── Libraries
│ │ └── ConfigReader.php
│ ├── Models
│ │ └── ExampleModel.php
│ └── SessionTestCase.php
├── database
│ └── ExampleDatabaseTest.php
├── session
│ └── ExampleSessionTest.php
└── unit
│ └── HealthTest.php
└── writable
├── .htaccess
├── cache
└── index.html
├── logs
└── index.html
├── session
└── index.html
└── uploads
└── index.html
/.github/workflows/phpunit.yml:
--------------------------------------------------------------------------------
1 | name: PHPUnit
2 |
3 | on:
4 | pull_request:
5 | branches:
6 | - develop
7 |
8 | jobs:
9 | main:
10 | name: Build and test
11 |
12 | strategy:
13 | matrix:
14 | php-versions: ['7.2', '7.3', '7.4']
15 |
16 | runs-on: ubuntu-latest
17 |
18 | if: "!contains(github.event.head_commit.message, '[ci skip]')"
19 |
20 | steps:
21 | - name: Checkout
22 | uses: actions/checkout@v2
23 |
24 | - name: Setup PHP, with composer and extensions
25 | uses: shivammathur/setup-php@master
26 | with:
27 | php-version: ${{ matrix.php-versions }}
28 | tools: composer, pecl, phpunit
29 | extensions: intl, json, mbstring, mysqlnd, xdebug, xml, sqlite3
30 | coverage: xdebug
31 |
32 | - name: Get composer cache directory
33 | id: composer-cache
34 | run: echo "::set-output name=dir::$(composer config cache-files-dir)"
35 |
36 | - name: Cache composer dependencies
37 | uses: actions/cache@v1
38 | with:
39 | path: ${{ steps.composer-cache.outputs.dir }}
40 | key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
41 | restore-keys: ${{ runner.os }}-composer-
42 |
43 | - name: Install dependencies
44 | run: composer install --no-progress --no-suggest --no-interaction --prefer-dist --optimize-autoloader
45 | # To prevent rate limiting you may need to supply an OAuth token in Settings > Secrets
46 | # env:
47 | # https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens
48 | # COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH }}
49 |
50 | - name: Test with phpunit
51 | run: vendor/bin/phpunit --coverage-text
52 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | #-------------------------
2 | # Operating Specific Junk Files
3 | #-------------------------
4 |
5 | # OS X
6 | .DS_Store
7 | .AppleDouble
8 | .LSOverride
9 |
10 | # OS X Thumbnails
11 | ._*
12 |
13 | # Windows image file caches
14 | Thumbs.db
15 | ehthumbs.db
16 | Desktop.ini
17 |
18 | # Recycle Bin used on file shares
19 | $RECYCLE.BIN/
20 |
21 | # Windows Installer files
22 | *.cab
23 | *.msi
24 | *.msm
25 | *.msp
26 |
27 | # Windows shortcuts
28 | *.lnk
29 |
30 | # Linux
31 | *~
32 |
33 | # KDE directory preferences
34 | .directory
35 |
36 | # Linux trash folder which might appear on any partition or disk
37 | .Trash-*
38 |
39 | #-------------------------
40 | # Environment Files
41 | #-------------------------
42 | # These should never be under version control,
43 | # as it poses a security risk.
44 | .env
45 | .vagrant
46 | Vagrantfile
47 |
48 | #-------------------------
49 | # Temporary Files
50 | #-------------------------
51 | writable/cache/*
52 | !writable/cache/index.html
53 |
54 | writable/logs/*
55 | !writable/logs/index.html
56 |
57 | writable/session/*
58 | !writable/session/index.html
59 |
60 | writable/uploads/*
61 | !writable/uploads/index.html
62 |
63 | writable/debugbar/*
64 |
65 | php_errors.log
66 |
67 | #-------------------------
68 | # User Guide Temp Files
69 | #-------------------------
70 | user_guide_src/build/*
71 | user_guide_src/cilexer/build/*
72 | user_guide_src/cilexer/dist/*
73 | user_guide_src/cilexer/pycilexer.egg-info/*
74 |
75 | #-------------------------
76 | # Test Files
77 | #-------------------------
78 | tests/coverage*
79 |
80 | # Don't save phpunit under version control.
81 | phpunit
82 |
83 | #-------------------------
84 | # Composer
85 | #-------------------------
86 | vendor/
87 |
88 | #-------------------------
89 | # IDE / Development Files
90 | #-------------------------
91 |
92 | # Modules Testing
93 | _modules/*
94 |
95 | # phpenv local config
96 | .php-version
97 |
98 | # Jetbrains editors (PHPStorm, etc)
99 | .idea/
100 | *.iml
101 |
102 | # Netbeans
103 | nbproject/
104 | build/
105 | nbbuild/
106 | dist/
107 | nbdist/
108 | nbactions.xml
109 | nb-configuration.xml
110 | .nb-gradle/
111 |
112 | # Sublime Text
113 | *.tmlanguage.cache
114 | *.tmPreferences.cache
115 | *.stTheme.cache
116 | *.sublime-workspace
117 | *.sublime-project
118 | .phpintel
119 | /api/
120 |
121 | # Visual Studio Code
122 | .vscode/
123 |
124 | /results/
125 | /phpunit*.xml
126 | /.phpunit.*.cache
127 |
128 |
--------------------------------------------------------------------------------
/Procfile:
--------------------------------------------------------------------------------
1 | web: vendor/bin/heroku-php-apache2 public/
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Sistem-Informasi-Keuangan
2 |
3 | ## Cara Install
4 | ### 1. Clone project
5 | ` git clone https://github.com/Qorthony/Sistem-Informasi-Keuangan.git `
6 | ### 2. Composer Install
7 | - buka terminal/cli pada direktori project
8 | - kemudian ketik perintah : ` composer install `
9 | ### 3. Buat database
10 | - buka phpmyadmin
11 | - buat database baru
12 | ### 4. Setting ENV
13 | - buka project pada text editor
14 | - duplikasi file env
15 | - rename file env menjadi .env
16 | - buka file .env
17 | - hapus tanda hashtag pada CI_ENVIRONMENT dan ganti nilai nya menjadi development
18 | - hapus tanda hashtag mulai dari database.default.hostname hingga database.default.DBDriver
19 | - setting nilai database, username, dan password sesuai yang ada di perangkatmu. jika tidak menggunakan password cukup kosongi bagian password
20 | ### 5. Migrate Database
21 | - buka terminal/cli pada direktori project
22 | - ketik perintah : ` php spark migrate`
23 | - ketik perintah : ` php spark db:seed AdminSeeder`
24 | ### 6. Jalankan Program
25 | - buka terminal/cli pada direktori project
26 | - ketik perintah : ` php spark serve `
27 | - buka browser, ketik localhost:8080
28 |
--------------------------------------------------------------------------------
/app/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | Require all denied
3 |
4 |
5 | Deny from all
6 |
7 |
--------------------------------------------------------------------------------
/app/Common.php:
--------------------------------------------------------------------------------
1 | SYSTEMPATH,
37 | * 'App' => APPPATH
38 | * ];
39 | *
40 | * @var array
41 | */
42 | public $psr4 = [
43 | APP_NAMESPACE => APPPATH, // For custom app namespace
44 | 'Config' => APPPATH . 'Config',
45 | ];
46 |
47 | /**
48 | * -------------------------------------------------------------------
49 | * Class Map
50 | * -------------------------------------------------------------------
51 | * The class map provides a map of class names and their exact
52 | * location on the drive. Classes loaded in this manner will have
53 | * slightly faster performance because they will not have to be
54 | * searched for within one or more directories as they would if they
55 | * were being autoloaded through a namespace.
56 | *
57 | * Prototype:
58 | *
59 | * $classmap = [
60 | * 'MyClass' => '/path/to/class/file.php'
61 | * ];
62 | *
63 | * @var array
64 | */
65 | public $classmap = [];
66 | }
67 |
--------------------------------------------------------------------------------
/app/Config/Boot/development.php:
--------------------------------------------------------------------------------
1 | '127.0.0.1',
82 | 'port' => 11211,
83 | 'weight' => 1,
84 | 'raw' => false,
85 | ];
86 |
87 | /*
88 | | -------------------------------------------------------------------------
89 | | Redis settings
90 | | -------------------------------------------------------------------------
91 | | Your Redis server can be specified below, if you are using
92 | | the Redis or Predis drivers.
93 | |
94 | */
95 | public $redis = [
96 | 'host' => '127.0.0.1',
97 | 'password' => null,
98 | 'port' => 6379,
99 | 'timeout' => 0,
100 | 'database' => 0,
101 | ];
102 |
103 | /*
104 | |--------------------------------------------------------------------------
105 | | Available Cache Handlers
106 | |--------------------------------------------------------------------------
107 | |
108 | | This is an array of cache engine alias' and class names. Only engines
109 | | that are listed here are allowed to be used.
110 | |
111 | */
112 | public $validHandlers = [
113 | 'dummy' => \CodeIgniter\Cache\Handlers\DummyHandler::class,
114 | 'file' => \CodeIgniter\Cache\Handlers\FileHandler::class,
115 | 'memcached' => \CodeIgniter\Cache\Handlers\MemcachedHandler::class,
116 | 'predis' => \CodeIgniter\Cache\Handlers\PredisHandler::class,
117 | 'redis' => \CodeIgniter\Cache\Handlers\RedisHandler::class,
118 | 'wincache' => \CodeIgniter\Cache\Handlers\WincacheHandler::class,
119 | ];
120 | }
121 |
--------------------------------------------------------------------------------
/app/Config/Constants.php:
--------------------------------------------------------------------------------
1 | '',
34 | 'hostname' => 'localhost',
35 | 'username' => '',
36 | 'password' => '',
37 | 'database' => '',
38 | 'DBDriver' => 'MySQLi',
39 | 'DBPrefix' => '',
40 | 'pConnect' => false,
41 | 'DBDebug' => (ENVIRONMENT !== 'production'),
42 | 'cacheOn' => false,
43 | 'cacheDir' => '',
44 | 'charset' => 'utf8',
45 | 'DBCollat' => 'utf8_general_ci',
46 | 'swapPre' => '',
47 | 'encrypt' => false,
48 | 'compress' => false,
49 | 'strictOn' => false,
50 | 'failover' => [],
51 | 'port' => 3306,
52 | ];
53 |
54 | /**
55 | * This database connection is used when
56 | * running PHPUnit database tests.
57 | *
58 | * @var array
59 | */
60 | public $tests = [
61 | 'DSN' => '',
62 | 'hostname' => '127.0.0.1',
63 | 'username' => '',
64 | 'password' => '',
65 | 'database' => ':memory:',
66 | 'DBDriver' => 'SQLite3',
67 | 'DBPrefix' => 'db_', // Needed to ensure we're working correctly with prefixes live. DO NOT REMOVE FOR CI DEVS
68 | 'pConnect' => false,
69 | 'DBDebug' => (ENVIRONMENT !== 'production'),
70 | 'cacheOn' => false,
71 | 'cacheDir' => '',
72 | 'charset' => 'utf8',
73 | 'DBCollat' => 'utf8_general_ci',
74 | 'swapPre' => '',
75 | 'encrypt' => false,
76 | 'compress' => false,
77 | 'strictOn' => false,
78 | 'failover' => [],
79 | 'port' => 3306,
80 | ];
81 |
82 | //--------------------------------------------------------------------
83 |
84 | public function __construct()
85 | {
86 | parent::__construct();
87 |
88 | // Ensure that we always set the database group to 'tests' if
89 | // we are currently running an automated test suite, so that
90 | // we don't overwrite live data on accident.
91 | if (ENVIRONMENT === 'testing')
92 | {
93 | $this->defaultGroup = 'tests';
94 |
95 | // Under Travis-CI, we can set an ENV var named 'DB_GROUP'
96 | // so that we can test against multiple databases.
97 | if ($group = getenv('DB'))
98 | {
99 | if (is_file(TESTPATH . 'travis/Database.php'))
100 | {
101 | require TESTPATH . 'travis/Database.php';
102 |
103 | if (! empty($dbconfig) && array_key_exists($group, $dbconfig))
104 | {
105 | $this->tests = $dbconfig[$group];
106 | }
107 | }
108 | }
109 | }
110 | }
111 |
112 | //--------------------------------------------------------------------
113 |
114 | }
115 |
--------------------------------------------------------------------------------
/app/Config/DocTypes.php:
--------------------------------------------------------------------------------
1 | '',
14 | 'xhtml1-strict' => '',
15 | 'xhtml1-trans' => '',
16 | 'xhtml1-frame' => '',
17 | 'xhtml-basic11' => '',
18 | 'html5' => '',
19 | 'html4-strict' => '',
20 | 'html4-trans' => '',
21 | 'html4-frame' => '',
22 | 'mathml1' => '',
23 | 'mathml2' => '',
24 | 'svg10' => '',
25 | 'svg11' => '',
26 | 'svg11-basic' => '',
27 | 'svg11-tiny' => '',
28 | 'xhtml-math-svg-xh' => '',
29 | 'xhtml-math-svg-sh' => '',
30 | 'xhtml-rdfa-1' => '',
31 | 'xhtml-rdfa-2' => '',
32 | ];
33 | }
34 |
--------------------------------------------------------------------------------
/app/Config/Email.php:
--------------------------------------------------------------------------------
1 | 0)
32 | {
33 | ob_end_flush();
34 | }
35 |
36 | ob_start(function ($buffer) {
37 | return $buffer;
38 | });
39 | }
40 |
41 | /*
42 | * --------------------------------------------------------------------
43 | * Debug Toolbar Listeners.
44 | * --------------------------------------------------------------------
45 | * If you delete, they will no longer be collected.
46 | */
47 | if (ENVIRONMENT !== 'production')
48 | {
49 | Events::on('DBQuery', 'CodeIgniter\Debug\Toolbar\Collectors\Database::collect');
50 | Services::toolbar()->respond();
51 | }
52 | });
53 |
--------------------------------------------------------------------------------
/app/Config/Exceptions.php:
--------------------------------------------------------------------------------
1 | \CodeIgniter\Filters\CSRF::class,
11 | 'toolbar' => \CodeIgniter\Filters\DebugToolbar::class,
12 | 'honeypot' => \CodeIgniter\Filters\Honeypot::class,
13 | 'auth' => \App\Filters\Auth::class,
14 | 'guest' => \App\Filters\Guest::class,
15 | 'role' => \App\Filters\RoleBased::class
16 | ];
17 |
18 | // Always applied before every request
19 | public $globals = [
20 | 'before' => [
21 | //'honeypot'
22 | // 'csrf',
23 | ],
24 | 'after' => [
25 | 'toolbar',
26 | //'honeypot'
27 | ],
28 | ];
29 |
30 | // Works on all of a particular HTTP method
31 | // (GET, POST, etc) as BEFORE filters only
32 | // like: 'post' => ['CSRF', 'throttle'],
33 | public $methods = [];
34 |
35 | // List filter aliases and any before/after uri patterns
36 | // that they should run on, like:
37 | // 'isLoggedIn' => ['before' => ['account/*', 'profiles/*']],
38 | public $filters = [];
39 | }
40 |
--------------------------------------------------------------------------------
/app/Config/ForeignCharacters.php:
--------------------------------------------------------------------------------
1 | \CodeIgniter\Format\JSONFormatter::class,
39 | 'application/xml' => \CodeIgniter\Format\XMLFormatter::class,
40 | 'text/xml' => \CodeIgniter\Format\XMLFormatter::class,
41 | ];
42 |
43 | /*
44 | |--------------------------------------------------------------------------
45 | | Formatters Options
46 | |--------------------------------------------------------------------------
47 | |
48 | | Additional Options to adjust default formatters behaviour.
49 | | For each mime type, list the additional options that should be used.
50 | |
51 | */
52 | public $formatterOptions = [
53 | 'application/json' => JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES,
54 | 'application/xml' => 0,
55 | 'text/xml' => 0,
56 | ];
57 | //--------------------------------------------------------------------
58 |
59 | /**
60 | * A Factory method to return the appropriate formatter for the given mime type.
61 | *
62 | * @param string $mime
63 | *
64 | * @return \CodeIgniter\Format\FormatterInterface
65 | */
66 | public function getFormatter(string $mime)
67 | {
68 | if (! array_key_exists($mime, $this->formatters))
69 | {
70 | throw new \InvalidArgumentException('No Formatter defined for mime type: ' . $mime);
71 | }
72 |
73 | $class = $this->formatters[$mime];
74 |
75 | if (! class_exists($class))
76 | {
77 | throw new \BadMethodCallException($class . ' is not a valid Formatter.');
78 | }
79 |
80 | return new $class();
81 | }
82 |
83 | //--------------------------------------------------------------------
84 |
85 | }
86 |
--------------------------------------------------------------------------------
/app/Config/Honeypot.php:
--------------------------------------------------------------------------------
1 | {label}';
35 |
36 | /**
37 | * Honeypot container
38 | *
39 | * @var string
40 | */
41 | public $container = '
{template}
';
42 | }
43 |
--------------------------------------------------------------------------------
/app/Config/Images.php:
--------------------------------------------------------------------------------
1 | \CodeIgniter\Images\Handlers\GDHandler::class,
29 | 'imagick' => \CodeIgniter\Images\Handlers\ImageMagickHandler::class,
30 | ];
31 | }
32 |
--------------------------------------------------------------------------------
/app/Config/Kint.php:
--------------------------------------------------------------------------------
1 | [
79 |
80 | /*
81 | * The log levels that this handler will handle.
82 | */
83 | 'handles' => [
84 | 'critical',
85 | 'alert',
86 | 'emergency',
87 | 'debug',
88 | 'error',
89 | 'info',
90 | 'notice',
91 | 'warning',
92 | ],
93 |
94 | /*
95 | * The default filename extension for log files.
96 | * An extension of 'php' allows for protecting the log files via basic
97 | * scripting, when they are to be stored under a publicly accessible directory.
98 | *
99 | * Note: Leaving it blank will default to 'log'.
100 | */
101 | 'fileExtension' => '',
102 |
103 | /*
104 | * The file system permissions to be applied on newly created log files.
105 | *
106 | * IMPORTANT: This MUST be an integer (no quotes) and you MUST use octal
107 | * integer notation (i.e. 0700, 0644, etc.)
108 | */
109 | 'filePermissions' => 0644,
110 |
111 | /*
112 | * Logging Directory Path
113 | *
114 | * By default, logs are written to WRITEPATH . 'logs/'
115 | * Specify a different destination here, if desired.
116 | */
117 | 'path' => '',
118 | ],
119 |
120 | /**
121 | * The ChromeLoggerHandler requires the use of the Chrome web browser
122 | * and the ChromeLogger extension. Uncomment this block to use it.
123 | */
124 | // 'CodeIgniter\Log\Handlers\ChromeLoggerHandler' => [
125 | // /*
126 | // * The log levels that this handler will handle.
127 | // */
128 | // 'handles' => ['critical', 'alert', 'emergency', 'debug',
129 | // 'error', 'info', 'notice', 'warning'],
130 | // ]
131 | ];
132 | }
133 |
--------------------------------------------------------------------------------
/app/Config/Migrations.php:
--------------------------------------------------------------------------------
1 | php spark migrate:create
41 | |
42 | | Typical formats:
43 | | YmdHis_
44 | | Y-m-d-His_
45 | | Y_m_d_His_
46 | |
47 | */
48 | public $timestampFormat = 'Y-m-d-His_';
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/app/Config/Modules.php:
--------------------------------------------------------------------------------
1 | 'CodeIgniter\Pager\Views\default_full',
22 | 'default_simple' => 'CodeIgniter\Pager\Views\default_simple',
23 | 'default_head' => 'CodeIgniter\Pager\Views\default_head',
24 | ];
25 |
26 | /*
27 | |--------------------------------------------------------------------------
28 | | Items Per Page
29 | |--------------------------------------------------------------------------
30 | |
31 | | The default number of results shown in a single page.
32 | |
33 | */
34 | public $perPage = 20;
35 | }
36 |
--------------------------------------------------------------------------------
/app/Config/Paths.php:
--------------------------------------------------------------------------------
1 | setDefaultNamespace('App\Controllers');
19 | $routes->setDefaultController('Home');
20 | $routes->setDefaultMethod('index');
21 | $routes->setTranslateURIDashes(false);
22 | $routes->set404Override();
23 | $routes->setAutoRoute(true);
24 |
25 | /**
26 | * --------------------------------------------------------------------
27 | * Route Definitions
28 | * --------------------------------------------------------------------
29 | */
30 |
31 | // We get a performance increase by specifying the default
32 | // route since we don't have to scan directories.
33 | // $routes->get('/', function ()
34 | // {
35 | // return view('welcome_message');
36 | // });
37 |
38 | // login
39 | $routes->get('/login','Login::form', ["filter"=>"guest"]);
40 | $routes->post('/login','Login::login', ["filter"=>"guest"]);
41 | $routes->get('/logout','Login::logout');
42 | // home
43 | $routes->get('/','Home::dashboard',["filter"=>"auth"]);
44 |
45 | // User
46 | $routes->get('/user','User::index',["filter"=>"role:1"]);
47 | $routes->post('/user/add','User::add',["filter"=>"role:1"]);
48 | $routes->get('/user/del/(:num)','User::delete/$1',["filter"=>"role:1"]);
49 | $routes->post('/user/edit/(:num)','User::edit/$1',["filter"=>"role:1"]);
50 |
51 | // Akun
52 | $routes->get('/akun','Akun::index',["filter"=>"role:1,2"]);
53 | $routes->post('/akun/add','Akun::add',["filter"=>"role:1,2"]);
54 | $routes->get('/akun/del/(:num)','Akun::delete/$1',["filter"=>"role:1,2"]);
55 | $routes->post('/akun/edit/(:num)','Akun::edit/$1',["filter"=>"role:1,2"]);
56 |
57 | // Jurnal Umum
58 | $routes->get('/jurnal_umum','JurnalUmum::index',["filter"=>"role:1,2"]);
59 | $routes->post('/jurnal_umum/add','JurnalUmum::add',["filter"=>"role:1,2"]);
60 | $routes->get('/jurnal_umum/del/(:num)','JurnalUmum::delete/$1',["filter"=>"role:1,2"]);
61 | $routes->post('/jurnal_umum/edit/(:num)','JurnalUmum::edit/$1',["filter"=>"role:1,2"]);
62 |
63 | // Jurnal Penyesuaian
64 | $routes->get('/jurnal_penyesuaian','JurnalPenyesuaian::index',["filter"=>"role:1,2"]);
65 | $routes->post('/jurnal_penyesuaian/add','JurnalPenyesuaian::add',["filter"=>"role:1,2"]);
66 | $routes->get('/jurnal_penyesuaian/del/(:num)','JurnalPenyesuaian::delete/$1',["filter"=>"role:1,2"]);
67 | $routes->post('/jurnal_penyesuaian/edit/(:num)','JurnalPenyesuaian::edit/$1',["filter"=>"role:1,2"]);
68 |
69 | // Profile
70 | $routes->get('/profile','User::profile',["filter"=>"auth"]);
71 | $routes->post('/profile/update','User::updateProfile',["filter"=>"auth"]);
72 | $routes->post('/profile/changePass','User::changePassword',["filter"=>"auth"]);
73 |
74 | // Laporan
75 | $routes->get('/laporan','Laporan::index',["filter"=>"auth"]);
76 |
77 | /**
78 | * --------------------------------------------------------------------
79 | * Additional Routing
80 | * --------------------------------------------------------------------
81 | *
82 | * There will often be times that you need additional routing and you
83 | * need it to be able to override any defaults in this file. Environment
84 | * based routes is one such time. require() additional route files here
85 | * to make that happen.
86 | *
87 | * You will have access to the $routes object within that file without
88 | * needing to reload it.
89 | */
90 | if (file_exists(APPPATH . 'Config/' . ENVIRONMENT . '/Routes.php'))
91 | {
92 | require APPPATH . 'Config/' . ENVIRONMENT . '/Routes.php';
93 | }
94 |
--------------------------------------------------------------------------------
/app/Config/Services.php:
--------------------------------------------------------------------------------
1 | 'CodeIgniter\Validation\Views\list',
30 | 'single' => 'CodeIgniter\Validation\Views\single',
31 | ];
32 |
33 | //--------------------------------------------------------------------
34 | // Rules
35 | //--------------------------------------------------------------------
36 | }
37 |
--------------------------------------------------------------------------------
/app/Config/View.php:
--------------------------------------------------------------------------------
1 | request->getVar('keyword');
13 | $akun = new AkunModel();
14 | if ( $keyword ) {
15 | $data_akun = $akun->like('no_akun',$keyword)
16 | ->orLike('nama_akun', $keyword)
17 | ->findAll();
18 | // dd($data_akun);
19 | }else {
20 | $data_akun = $akun->findAll();
21 | }
22 |
23 | // dd($data_user);
24 | return view('data_akun', ["data_akun" => $data_akun]);
25 | }
26 |
27 | public function add()
28 | {
29 | if (!$this->validate([
30 | 'no_akun' => "required|is_unique[akun.no_akun]|numeric",
31 | 'nama_akun' => 'required|alpha_numeric_space|is_unique[akun.nama_akun]',
32 | 'keterangan' => "required"
33 | ])) {
34 | return redirect()->to('/akun')->with('errors', $this->validator->getErrors());
35 | }
36 |
37 | $no_akun = $this->request->getPost('no_akun');
38 | $nama_akun = $this->request->getPost('nama_akun');
39 | $keterangan = $this->request->getPost('keterangan');
40 |
41 | $akun = new AkunModel;
42 | $data = [
43 | 'no_akun' => $no_akun,
44 | 'nama_akun' => $nama_akun,
45 | 'keterangan' => $keterangan,
46 | 'created_at' => Time::now(),
47 | 'updated_at' => Time::now()
48 | ];
49 | // dd($data);
50 | $akun->insert($data);
51 |
52 | return redirect()->to('/akun')->with('success', 'Berhasil menambah akun!');
53 | }
54 |
55 | public function delete($no_akun)
56 | {
57 | $akun = new AkunModel();
58 | $akun->delete($no_akun);
59 | return redirect()->to('/akun')->with('success','Data berhasil dihapus!');
60 | }
61 |
62 | public function edit($id)
63 | {
64 | $no_akun = $this->request->getPost('no_akun');
65 | $nama_akun = $this->request->getPost('nama_akun');
66 | $keterangan = $this->request->getPost('keterangan');
67 |
68 | if (!$this->validate([
69 | 'no_akun' => "required|is_unique[akun.no_akun,no_akun,{$no_akun}]|numeric",
70 | 'nama_akun' => "required|alpha_numeric_space|is_unique[akun.nama_akun,nama_akun,{$nama_akun}]",
71 | 'keterangan' => "required"
72 | ])) {
73 | return redirect()->to('/akun')->with('errors', $this->validator->getErrors());
74 | }
75 |
76 |
77 | $akun = new AkunModel;
78 | $data = [
79 | 'no_akun' => $no_akun,
80 | 'nama_akun' => $nama_akun,
81 | 'keterangan' => $keterangan,
82 | 'created_at' => Time::now(),
83 | 'updated_at' => Time::now()
84 | ];
85 |
86 | $akun->update($id, $data);
87 |
88 | return redirect()->to('/akun')->with('success', 'Berhasil edit akun!');
89 | }
90 |
91 | // public function profile()
92 | // {
93 | // $akun = new AkunModel();
94 | // $profile = $akun->find(session('akun_id'));
95 | // // dd($profile);
96 | // return view('profile',["profile"=>$profile ]);
97 | // }
98 |
99 | // public function updateProfile()
100 | // {
101 | // $no_akun = $this->request->getPost('no_akun');
102 | // $nama_akun = $this->request->getPost('nama_akun');
103 | // $keterangan = $this->request->getPost('keterangan');
104 |
105 | // if (!$this->validate([
106 | // 'no_akun' => "required|is_unique[akun.no_akun,no_akun,{$no_akun}]|numeric",
107 | // 'nama_akun' => "required|alpha_numeric_space|is_unique[users.akunname,akunname,{$nama_akun}]",
108 | // 'keterangan' => "required"
109 | // ])) {
110 | // return redirect()->to('/profile')->with('errors', $this->validator->getErrors());
111 | // }
112 |
113 | // $akun= new AkunModel();
114 | // $data = [
115 | // "no_akun" => $no_akun,
116 | // "akunname" => $nama_akun,
117 | // "jenis_akun" => $keterangan,
118 | // ];
119 | // $akun->update(session("akun_id"), $data);
120 |
121 | // return redirect()->to('/profile')->with('success', 'Berhasil edit profile!');
122 | // }
123 |
124 | // public function changePassword()
125 | // {
126 | // $pw_baru = $this->request->getPost("password_baru");
127 |
128 | // if (!$this->validate([
129 | // "password_baru" => "required",
130 | // "konfirmasi_password" => "required|matches[password_baru]"
131 | // ])) {
132 | // return redirect()->to('/profile')->with('errors', $this->validator->getErrors());
133 | // }
134 |
135 | // $akun = new AkunModel();
136 | // $akun->update(session("akun_id"), ["password"=>password_hash($pw_baru, PASSWORD_DEFAULT)]);
137 |
138 | // return redirect()->to('/profile')->with('success', 'Berhasil ganti password!');
139 |
140 | // }
141 |
142 | //--------------------------------------------------------------------
143 |
144 | }
145 |
--------------------------------------------------------------------------------
/app/Controllers/BaseController.php:
--------------------------------------------------------------------------------
1 | session = \Config\Services::session();
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/app/Controllers/Home.php:
--------------------------------------------------------------------------------
1 | selectSum('kredit')
19 | ->like('no_akun', '4', 'after')
20 | ->where('tgl_transaksi', date('Y-m-d', strtotime(Time::now())))
21 | ->first();
22 |
23 | $pengeluaranHariIni = $JU->selectSum('debit')
24 | ->like('no_akun', '5', 'after')
25 | ->where('tgl_transaksi', date('Y-m-d', strtotime(Time::now())))
26 | ->first();
27 |
28 | $pendapatanBulanIni = $JU->selectSum('kredit')
29 | ->like('no_akun', '4', 'after')
30 | ->where('tgl_transaksi >', date('Y-m-', strtotime(Time::now())) . '1')
31 | ->where('tgl_transaksi <', date('Y-m-t', strtotime(Time::now())))
32 | ->first();
33 |
34 | $pengeluaranBulanIni = $JU->selectSum('debit')
35 | ->like('no_akun', '5', 'after')
36 | ->where('tgl_transaksi >', date('Y-m-', strtotime(Time::now())) . '1')
37 | ->where('tgl_transaksi <', date('Y-m-t', strtotime(Time::now())))
38 | ->first();
39 |
40 |
41 |
42 | $grafikBulanan = [
43 | "bulan" => $this->getSixMonthAgo(),
44 | "pendapatan" => $this->getGrafik6BulanTerakhir('pendapatan'),
45 | "pengeluaran" => $this->getGrafik6BulanTerakhir('pengeluaran')
46 | ];
47 |
48 | // dd($pendapatanBulanIni);
49 | $data = [
50 | "pendapatanHariIni" => $pendapatanHariIni,
51 | "pengeluaranHariIni" => $pengeluaranHariIni,
52 | "pendapatanBulanIni" => $pendapatanBulanIni,
53 | "pengeluaranBulanIni" => $pengeluaranBulanIni,
54 | "grafikBulanan" => $grafikBulanan
55 | ];
56 | // dd($grafikBulanan);
57 | return view('dashboard', $data);
58 | }
59 |
60 | private function getSixMonthAgo()
61 | {
62 | $month = [];
63 | $startdate = strtotime("6 month ago");
64 | $enddate = strtotime("+7 months", $startdate);
65 |
66 | while ($startdate < $enddate) {
67 | array_push($month, date("F", $startdate));
68 | $startdate = strtotime("+1 month", $startdate);
69 | }
70 | return $month;
71 | }
72 |
73 | private function getGrafik6BulanTerakhir($tipe)
74 | {
75 | $JU = new JUModel();
76 | $kolom = '';
77 | $prefix = '';
78 | switch ($tipe) {
79 | case 'pendapatan':
80 | $kolom = 'kredit';
81 | $prefix = '4';
82 | break;
83 | case 'pengeluaran':
84 | $kolom = 'debit';
85 | $prefix = '5';
86 | break;
87 |
88 | default:
89 | # code...
90 | break;
91 | }
92 |
93 | $data = [];
94 | $startdate = strtotime("6 month ago");
95 | $enddate = strtotime("+7 months", $startdate);
96 | while ($startdate < $enddate) {
97 | $dataPerBulan = $JU->selectSum($kolom)
98 | ->like('no_akun', $prefix , 'after')
99 | ->where('tgl_transaksi >', date('Y-m-', $startdate) . '1')
100 | ->where('tgl_transaksi <', date('Y-m-t', $startdate))
101 | ->first();
102 | $dataPerBulan = $dataPerBulan[$kolom] == null ? '0' : $dataPerBulan[$kolom];
103 | array_push($data, $dataPerBulan);
104 | $startdate = strtotime("+1 month", $startdate);
105 | }
106 | return $data;
107 | }
108 |
109 | //--------------------------------------------------------------------
110 |
111 | }
112 |
--------------------------------------------------------------------------------
/app/Controllers/JurnalPenyesuaian.php:
--------------------------------------------------------------------------------
1 | request->getVar('keyword');
19 | $jurnal_penyesuaian = new JPModel();
20 | if ( $keyword ) {
21 | $data_jurnal_penyesuaian = $jurnal_penyesuaian->like('no_akun',$keyword)
22 | ->orLike('tgl_penyesuaian', $keyword)
23 | ->orLike('keterangan_penyesuaian', $keyword)
24 | ->findAll();
25 | // dd($data_jurnal_penyesuaian);
26 | }else {
27 | $data_jurnal_penyesuaian = $jurnal_penyesuaian->findAll();
28 | }
29 |
30 | $akuns = new AkunModel();
31 | $akuns = $akuns->findAll();
32 |
33 | $data = [
34 | "data_JP" => $data_jurnal_penyesuaian,
35 | "akuns"=> $akuns
36 | ];
37 | return view('data_jurnal_penyesuaian', $data);
38 | }
39 |
40 | public function add()
41 | {
42 | if (!$this->validate([
43 | 'tanggal' => "required",
44 | 'keterangan' => "required",
45 | 'akun' => "required|numeric",
46 | 'debit' => "required|numeric",
47 | 'kredit' => "required|numeric"
48 | ])) {
49 | return redirect()->to('/jurnal_penyesuaian')->with('errors', $this->validator->getErrors());
50 | }
51 |
52 | $id_penyesuaian = ''.strtotime(Time::now()).$this->request->getPost('akun');
53 | $keterangan_penyesuaian = $this->request->getPost('keterangan');
54 | $tgl_penyesuaian = $this->request->getPost('tanggal');
55 | $no_akun = $this->request->getPost('akun');
56 | $debit = $this->request->getPost('debit');
57 | $kredit = $this->request->getPost('kredit');
58 | $nip = session('user_id');
59 |
60 | $JP = new JPModel();
61 | $data = [
62 | 'id_penyesuaian' => $id_penyesuaian,
63 | 'keterangan_penyesuaian' => $keterangan_penyesuaian,
64 | 'tgl_penyesuaian' => $tgl_penyesuaian,
65 | 'no_akun' => $no_akun,
66 | 'debit' => $debit,
67 | 'kredit' => $kredit,
68 | 'nip' => $nip,
69 | 'created_at' => Time::now(),
70 | 'updated_at' => Time::now()
71 | ];
72 | // dd($data);
73 | $JP->insert($data);
74 |
75 | return redirect()->to('/jurnal_penyesuaian')->with('success', 'Berhasil menambah Jurnal Penyesuaian!');
76 | }
77 |
78 | public function delete($no_transaksi)
79 | {
80 | $jurnal_penyesuaian = new JPModel();
81 | $jurnal_penyesuaian->delete($no_transaksi);
82 | return redirect()->to('/jurnal_penyesuaian')->with('success','Data berhasil dihapus!');
83 | }
84 |
85 | public function edit($id)
86 | {
87 | if (!$this->validate([
88 | 'tanggal' => "required",
89 | 'keterangan' => "required",
90 | 'akun' => "required|numeric",
91 | 'debit' => "required|numeric",
92 | 'kredit' => "required|numeric"
93 | ])) {
94 | return redirect()->to('/jurnal_penyesuaian')->with('errors', $this->validator->getErrors());
95 | }
96 |
97 |
98 | $id_penyesuaian = ''.strtotime(Time::now()).$this->request->getPost('akun');
99 | $keterangan_penyesuaian = $this->request->getPost('keterangan');
100 | $tgl_penyesuaian = $this->request->getPost('tanggal');
101 | $no_akun = $this->request->getPost('akun');
102 | $debit = $this->request->getPost('debit');
103 | $kredit = $this->request->getPost('kredit');
104 | $nip = session('user_id');
105 |
106 | $jurnal_penyesuaian= new JPModel();
107 | $data = [
108 | 'id_penyesuaian' => $id_penyesuaian,
109 | 'keterangan_penyesuaian' => $keterangan_penyesuaian,
110 | 'tgl_penyesuaian' => $tgl_penyesuaian,
111 | 'no_akun' => $no_akun,
112 | 'debit' => $debit,
113 | 'kredit' => $kredit,
114 | 'nip' => $nip,
115 | 'created_at' => Time::now(),
116 | 'updated_at' => Time::now()
117 | ];
118 |
119 | $jurnal_penyesuaian->update($id, $data);
120 |
121 | return redirect()->to('/jurnal_penyesuaian')->with('success', 'Berhasil edit Jurnal Penyesuaian!');
122 | }
123 | //--------------------------------------------------------------------
124 |
125 | }
126 |
--------------------------------------------------------------------------------
/app/Controllers/JurnalUmum.php:
--------------------------------------------------------------------------------
1 | request->getVar('keyword');
18 | $jurnal_umum = new JurnalUmumModel();
19 | if ($keyword) {
20 | $data_jurnal_umum = $jurnal_umum->like('no_akun', $keyword)
21 | ->orLike('tgl_transaksi', $keyword)
22 | ->orLike('keterangan_transaksi', $keyword)
23 | ->findAll();
24 | // dd($data_jurnal_umum);
25 | } else {
26 | $data_jurnal_umum = $jurnal_umum->findAll();
27 | }
28 | $akuns = new AkunModel();
29 | $akuns = $akuns->findAll();
30 |
31 | // dd($data_user);
32 | return view('data_jurnal_umum', ["data_jurnal_umum" => $data_jurnal_umum,"akuns"=>$akuns]);
33 | }
34 |
35 | public function add()
36 | {
37 | if (!$this->validate([
38 | 'tgl_transaksi' => "required",
39 | 'keterangan_transaksi' => "required",
40 | 'no_akun' => "required|numeric",
41 | 'debit' => "required|numeric",
42 | 'kredit' => "required|numeric",
43 | ])) {
44 | return redirect()->to('/jurnal_umum')->with('errors', $this->validator->getErrors());
45 | }
46 |
47 | $no_transaksi = ''.strtotime(Time::now()).$this->request->getPost('akun');
48 | $keterangan_transaksi = $this->request->getPost('keterangan_transaksi');
49 | $tgl_transaksi = $this->request->getPost('tgl_transaksi');
50 | $no_akun = $this->request->getPost('no_akun');
51 | $debit = $this->request->getPost('debit');
52 | $kredit = $this->request->getPost('kredit');
53 | $nip = session('user_id');
54 |
55 | $JU = new JurnalUmumModel();
56 | $data = [
57 | 'no_transaksi' => $no_transaksi,
58 | 'keterangan_transaksi' => $keterangan_transaksi,
59 | 'tgl_transaksi' => $tgl_transaksi,
60 | 'no_akun' => $no_akun,
61 | 'debit' => $debit,
62 | 'kredit' => $kredit,
63 | 'nip' => $nip,
64 | 'created_at' => Time::now(),
65 | 'updated_at' => Time::now()
66 | ];
67 | // dd($data);
68 | $JU->insert($data);
69 |
70 | return redirect()->to('/jurnal_umum')->with('success', 'Berhasil menambah Jurnal Umum!');
71 | }
72 |
73 | public function delete($no_transaksi)
74 | {
75 | $jurnal_umum = new JurnalUmumModel();
76 | $jurnal_umum->delete($no_transaksi);
77 | return redirect()->to('/jurnal_umum')->with('success', 'Data berhasil dihapus!');
78 | }
79 |
80 | public function edit($id)
81 | {
82 | if (!$this->validate([
83 | 'tgl_transaksi' => "required",
84 | 'keterangan_transaksi' => "required",
85 | 'no_akun' => "required|numeric",
86 | 'debit' => "required|numeric",
87 | 'kredit' => "required|numeric",
88 | ])) {
89 | return redirect()->to('/jurnal_umum')->with('errors', $this->validator->getErrors());
90 | }
91 |
92 | $no_transaksi = ''.strtotime(Time::now()).$this->request->getPost('akun');
93 | $keterangan_transaksi = $this->request->getPost('keterangan_transaksi');
94 | $tgl_transaksi = $this->request->getPost('tgl_transaksi');
95 | $no_akun = $this->request->getPost('no_akun');
96 | $debit = $this->request->getPost('debit');
97 | $kredit = $this->request->getPost('kredit');
98 | $nip = session('user_id');
99 |
100 | $jurnal_umum = new JurnalUmumModel;
101 | $data = [
102 | 'no_transaksi' => $no_transaksi,
103 | 'tgl_transaksi' => $tgl_transaksi,
104 | 'keterangan_transaksi' => $keterangan_transaksi,
105 | 'no_akun' => $no_akun,
106 | 'debit' => $debit,
107 | 'kredit' => $kredit,
108 | 'nip' => $nip,
109 | 'created_at' => Time::now(),
110 | 'updated_at' => Time::now()
111 | ];
112 |
113 | $jurnal_umum->update($id, $data);
114 |
115 | return redirect()->to('/jurnal_umum')->with('success', 'Berhasil edit Jurnal Umum!');
116 | }
117 |
118 | //--------------------------------------------------------------------
119 |
120 | }
121 |
--------------------------------------------------------------------------------
/app/Controllers/Login.php:
--------------------------------------------------------------------------------
1 | request->getVar('email');
19 | $password = $this->request->getVar('password');
20 | $data = $model->where('email', $email)
21 | ->orWhere('nip', $email)
22 | ->first();
23 |
24 | if ($data) {
25 | $pass = $data['password'];
26 | $verify_pass = password_verify($password, $pass);
27 |
28 | if ($verify_pass) {
29 | // echo "Berhasil login
";
30 | $ses_data = [
31 | 'user_id' => $data['nip'],
32 | 'user_name' => $data['username'],
33 | 'user_email' => $data['email'],
34 | 'user_role' => $data['jenis_user'],
35 | 'logged_in' => TRUE
36 | ];
37 |
38 | $session->set($ses_data);
39 | return redirect()->to('/');
40 | } else {
41 | // echo "Password salah
";
42 | $session->setFlashdata('errors', 'Password salah!');
43 | return redirect()->to('/login');
44 | }
45 | } else {
46 | // echo "Email salah
";
47 | $session->setFlashdata('errors', 'Email salah!');
48 | return redirect()->to('/login');
49 | }
50 | }
51 |
52 | public function logout()
53 | {
54 | $session = session();
55 | $session->destroy();
56 | return redirect()->to('/login');
57 | }
58 |
59 | //--------------------------------------------------------------------
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/app/Controllers/User.php:
--------------------------------------------------------------------------------
1 | request->getVar('keyword');
13 | $user = new UserModel();
14 | if ( $keyword ) {
15 | $data_user = $user->like('nip',$keyword)
16 | ->orLike('username', $keyword)
17 | ->orLike('email', $keyword)
18 | ->findAll();
19 | // dd($data_user);
20 | }else {
21 | $data_user = $user->findAll();
22 | }
23 |
24 | return view('data_user', ["data_users" => $data_user]);
25 | }
26 |
27 | public function add()
28 | {
29 | if (!$this->validate([
30 | 'nip' => "required|is_unique[users.nip]|numeric",
31 | 'email' => "required|is_unique[users.email]|valid_email",
32 | 'nama' => 'required|alpha_numeric_space|is_unique[users.username]',
33 | 'keterangan' => "required",
34 | 'password' => "required"
35 | ])) {
36 | return redirect()->to('/user')->with('errors', $this->validator->getErrors());
37 | }
38 |
39 | $nip = $this->request->getPost('nip');
40 | $nama = $this->request->getPost('nama');
41 | $email = $this->request->getPost('email');
42 | $keterangan = $this->request->getPost('keterangan');
43 | $password = $this->request->getPost('password');
44 |
45 | $user = new UserModel;
46 | $data = [
47 | 'nip' => $nip,
48 | 'username' => $nama,
49 | 'email' => $email,
50 | 'password' => password_hash($password, PASSWORD_DEFAULT),
51 | 'jenis_user' => $keterangan,
52 | 'created_at' => Time::now(),
53 | 'updated_at' => Time::now()
54 | ];
55 | // dd($data);
56 | $user->insert($data);
57 |
58 | return redirect()->to('/user')->with('success', 'Berhasil menambah user!');
59 | }
60 |
61 | public function delete($nip)
62 | {
63 | $user = new UserModel();
64 | $user->delete($nip);
65 | return redirect()->to('/user')->with('success','Data berhasil dihapus!');
66 | }
67 |
68 | public function edit($id)
69 | {
70 | $nip = $this->request->getPost('nip');
71 | $nama = $this->request->getPost('nama');
72 | $email = $this->request->getPost('email');
73 | $keterangan = $this->request->getPost('keterangan');
74 | $password = $this->request->getPost('password');
75 |
76 | if (!$this->validate([
77 | 'nip' => "required|is_unique[users.nip,nip,{$nip}]|numeric",
78 | 'email' => "required|is_unique[users.email,email,{$email}]|valid_email",
79 | 'nama' => "required|alpha_numeric_space|is_unique[users.username,username,{$nama}]",
80 | 'keterangan' => "required",
81 | 'password' => "required"
82 | ])) {
83 | return redirect()->to('/user')->with('errors', $this->validator->getErrors());
84 | }
85 |
86 |
87 | $user = new UserModel;
88 | $data = [
89 | 'nip' => $nip,
90 | 'username' => $nama,
91 | 'email' => $email,
92 | 'password' => password_hash($password, PASSWORD_DEFAULT),
93 | 'jenis_user' => $keterangan,
94 | 'created_at' => Time::now(),
95 | 'updated_at' => Time::now()
96 | ];
97 |
98 | $user->update($id, $data);
99 |
100 | return redirect()->to('/user')->with('success', 'Berhasil edit user!');
101 | }
102 |
103 | public function profile()
104 | {
105 | $user = new UserModel();
106 | $profile = $user->find(session('user_id'));
107 | // dd($profile);
108 | return view('profile',["profile"=>$profile ]);
109 | }
110 |
111 | public function updateProfile()
112 | {
113 | $nip = $this->request->getPost('nip');
114 | $nama = $this->request->getPost('nama');
115 | $email = $this->request->getPost('email');
116 |
117 | if (!$this->validate([
118 | 'nip' => "required|is_unique[users.nip,nip,{$nip}]|numeric",
119 | 'email' => "required|is_unique[users.email,email,{$email}]|valid_email",
120 | 'nama' => "required|alpha_numeric_space|is_unique[users.username,username,{$nama}]",
121 | ])) {
122 | return redirect()->to('/profile')->with('errors', $this->validator->getErrors());
123 | }
124 |
125 | $user = new UserModel();
126 | $data = [
127 | "nip" => $nip,
128 | "username" => $nama,
129 | "email" => $email,
130 | ];
131 | $user->update(session("user_id"), $data);
132 |
133 | return redirect()->to('/profile')->with('success', 'Berhasil edit profile!');
134 | }
135 |
136 | public function changePassword()
137 | {
138 | $pw_baru = $this->request->getPost("password_baru");
139 |
140 | if (!$this->validate([
141 | "password_baru" => "required",
142 | "konfirmasi_password" => "required|matches[password_baru]"
143 | ])) {
144 | return redirect()->to('/profile')->with('errors', $this->validator->getErrors());
145 | }
146 |
147 | $user = new UserModel();
148 | $user->update(session("user_id"), ["password"=>password_hash($pw_baru, PASSWORD_DEFAULT)]);
149 |
150 | return redirect()->to('/profile')->with('success', 'Berhasil ganti password!');
151 |
152 | }
153 |
154 | //--------------------------------------------------------------------
155 |
156 | }
157 |
--------------------------------------------------------------------------------
/app/Database/Migrations/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/app/Database/Migrations/.gitkeep
--------------------------------------------------------------------------------
/app/Database/Migrations/2020-11-02-150333_user.php:
--------------------------------------------------------------------------------
1 | forge->addField([
12 | 'nip' => [
13 | 'type' => 'VARCHAR',
14 | 'constraint' => '20',
15 | ],
16 | 'username' => [
17 | 'type' => 'VARCHAR',
18 | 'constraint' => '100',
19 | ],
20 | 'email' => [
21 | 'type' => 'VARCHAR',
22 | 'constraint' => '100',
23 | ],
24 | 'password' => [
25 | 'type' => 'VARCHAR',
26 | 'constraint' => '255'
27 | ],
28 | 'jenis_user' => [
29 | 'type' => 'VARCHAR',
30 | 'constraint' => '20'
31 | ],
32 | 'created_at' => [
33 | 'type' => 'DATETIME',
34 | 'null' => true,
35 | ],
36 | 'updated_at' => [
37 | 'type' => 'DATETIME',
38 | 'null' => true
39 | ]
40 | ]);
41 | $this->forge->addKey('nip', true);
42 | $this->forge->createTable('users');
43 | }
44 |
45 | //--------------------------------------------------------------------
46 |
47 | public function down()
48 | {
49 | $this->forge->dropTable('users');
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/app/Database/Migrations/2020-11-02-150447_akun.php:
--------------------------------------------------------------------------------
1 | forge->addField([
10 | 'no_akun' => [
11 | 'type' => 'VARCHAR',
12 | 'constraint' => '20'
13 | ],
14 | 'nama_akun' => [
15 | 'type' => 'VARCHAR',
16 | 'constraint' => '100',
17 | ],
18 | 'keterangan' => [
19 | 'type' => 'VARCHAR',
20 | 'constraint' => '255',
21 | 'null' => true
22 | ],
23 | 'created_at' => [
24 | 'type' => 'DATETIME',
25 | 'null' => true,
26 | ],
27 | 'updated_at' => [
28 | 'type' => 'DATETIME',
29 | 'null' => true
30 | ]
31 | ]);
32 | $this->forge->addKey('no_akun', true);
33 | $this->forge->createTable('akun');
34 | }
35 |
36 | //--------------------------------------------------------------------
37 |
38 | public function down()
39 | {
40 | $this->forge->dropTable('akun');
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/Database/Migrations/2020-11-02-150501_jurnalUmum.php:
--------------------------------------------------------------------------------
1 | forge->addField([
10 | 'no_transaksi' => [
11 | 'type' => 'VARCHAR',
12 | 'constraint' => '20'
13 | ],
14 | 'tgl_transaksi' => [
15 | 'type' => 'DATE',
16 |
17 | ],
18 | 'keterangan_transaksi' => [
19 | 'type' => 'VARCHAR',
20 | 'constraint' => '100'
21 | ],
22 | 'no_akun' => [
23 | 'type' => 'VARCHAR',
24 | 'constraint' => '20'
25 | ],
26 | 'debit' => [
27 | 'type' => 'INT',
28 | ],
29 | 'kredit' => [
30 | 'type' => 'INT',
31 | ],
32 | 'nip' => [
33 | 'type' => 'VARCHAR',
34 | 'constraint' => '20'
35 | ],
36 | 'created_at' => [
37 | 'type' => 'DATETIME',
38 | 'null' => true,
39 | ],
40 | 'updated_at' => [
41 | 'type' => 'DATETIME',
42 | 'null' => true
43 | ]
44 | ]);
45 | $this->forge->addKey('no_transaksi', true);
46 | $this->forge->createTable('jurnal_umum');
47 | }
48 |
49 | //--------------------------------------------------------------------
50 |
51 | public function down()
52 | {
53 | $this->forge->dropTable('jurnal_umum');
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/app/Database/Migrations/2020-11-02-150509_jurnalPenyelesaian.php:
--------------------------------------------------------------------------------
1 | forge->addField([
12 | 'id_penyesuaian' => [
13 | 'type' => 'VARCHAR',
14 | 'constraint' => '20'
15 | ],
16 | 'tgl_penyesuaian' => [
17 | 'type' => 'DATE',
18 |
19 | ],
20 | 'keterangan_penyesuaian' => [
21 | 'type' => 'VARCHAR',
22 | 'constraint' => '255',
23 | ],
24 | 'no_akun' => [
25 | 'type' => 'VARCHAR',
26 | 'constraint' => '20'
27 | ],
28 | 'debit' => [
29 | 'type' => 'INT'
30 | ],
31 | 'kredit' => [
32 | 'type' => 'INT'
33 | ],
34 | 'nip' => [
35 | 'type' => 'VARCHAR',
36 | 'constraint' => '20'
37 | ],
38 | 'created_at' => [
39 | 'type' => 'DATETIME',
40 | 'null' => true,
41 | ],
42 | 'updated_at' => [
43 | 'type' => 'DATETIME',
44 | 'null' => true
45 | ]
46 | ]);
47 | $this->forge->addKey('id_penyesuaian', true);
48 | $this->forge->createTable('jurnal_penyesuaian');
49 | }
50 |
51 | //--------------------------------------------------------------------
52 |
53 | public function down()
54 | {
55 | $this->forge->dropTable('jurnal_penyesuaian');
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/app/Database/Seeds/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/app/Database/Seeds/.gitkeep
--------------------------------------------------------------------------------
/app/Database/Seeds/AdminSeeder.php:
--------------------------------------------------------------------------------
1 | '11180930000095',
14 | 'username' => 'Admin',
15 | 'email' => 'admin@admin.com',
16 | 'password' => password_hash('ayohitung123', PASSWORD_DEFAULT),
17 | 'jenis_user' => "1",
18 | 'created_at' => Time::now(),
19 | 'updated_at' => Time::now()
20 | ],
21 | [
22 | 'nip' => '11180930000101',
23 | 'username' => 'Bagian accounting',
24 | 'email' => 'accounting@accounting.com',
25 | 'password' => password_hash('ayohitung123', PASSWORD_DEFAULT),
26 | 'jenis_user' => "2",
27 | 'created_at' => Time::now(),
28 | 'updated_at' => Time::now()
29 | ],
30 | [
31 | 'nip' => '11180930000005',
32 | 'username' => 'Pak CEO',
33 | 'email' => 'ceo@ceo.com',
34 | 'password' => password_hash('ayohitung123', PASSWORD_DEFAULT),
35 | 'jenis_user' => "3",
36 | 'created_at' => Time::now(),
37 | 'updated_at' => Time::now()
38 | ]
39 | ];
40 |
41 | // Using Query Builder
42 | $this->db->table('users')->insertBatch($data);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/Database/Seeds/AkunSeeder.php:
--------------------------------------------------------------------------------
1 | '111',
14 | 'nama_akun' => 'Kas',
15 | 'keterangan' => 'tempat mencatat kas perusahaan',
16 | 'created_at' => Time::now(),
17 | 'updated_at' => Time::now()
18 | ],
19 | [
20 | 'no_akun' => '112',
21 | 'nama_akun' => 'Piutang Usaha',
22 | 'keterangan' => 'tempat mencatat piutang perusahaan',
23 | 'created_at' => Time::now(),
24 | 'updated_at' => Time::now()
25 | ],
26 | [
27 | 'no_akun' => '113',
28 | 'nama_akun' => 'Perlengkapan',
29 | 'keterangan' => 'tempat mencatat perlengkapan perusahaan',
30 | 'created_at' => Time::now(),
31 | 'updated_at' => Time::now()
32 | ],
33 | [
34 | 'no_akun' => '121',
35 | 'nama_akun' => 'Peralatan',
36 | 'keterangan' => 'tempat mencatat peralatan perusahaan',
37 | 'created_at' => Time::now(),
38 | 'updated_at' => Time::now()
39 | ],
40 | [
41 | 'no_akun' => '122',
42 | 'nama_akun' => 'Akumulasi Penyusutan Peralatan',
43 | 'keterangan' => 'tempat mencatat penyusutan peralatan perusahaan',
44 | 'created_at' => Time::now(),
45 | 'updated_at' => Time::now()
46 | ],
47 | [
48 | 'no_akun' => '211',
49 | 'nama_akun' => 'Utang Usaha',
50 | 'keterangan' => 'tempat mencatat hutang untuk keperluan usaha',
51 | 'created_at' => Time::now(),
52 | 'updated_at' => Time::now()
53 | ],
54 | [
55 | 'no_akun' => '311',
56 | 'nama_akun' => 'Modal',
57 | 'keterangan' => 'tempat mencatat modal',
58 | 'created_at' => Time::now(),
59 | 'updated_at' => Time::now()
60 | ],
61 | [
62 | 'no_akun' => '411',
63 | 'nama_akun' => 'Pendapatan Jasa',
64 | 'keterangan' => 'tempat mencatat pendapatan dari hasil jasa',
65 | 'created_at' => Time::now(),
66 | 'updated_at' => Time::now()
67 | ],
68 | [
69 | 'no_akun' => '511',
70 | 'nama_akun' => 'Beban',
71 | 'keterangan' => 'tempat mencatat beban yang ditanggung',
72 | 'created_at' => Time::now(),
73 | 'updated_at' => Time::now()
74 | ],
75 | [
76 | 'no_akun' => '515',
77 | 'nama_akun' => 'Beban Perlengkapan',
78 | 'keterangan' => 'tempat mencatat beban Perlengkapan',
79 | 'created_at' => Time::now(),
80 | 'updated_at' => Time::now()
81 | ],
82 | [
83 | 'no_akun' => '518',
84 | 'nama_akun' => 'Beban Penyusutan Peralatan',
85 | 'keterangan' => 'tempat mencatat beban Penyusutan peralatan',
86 | 'created_at' => Time::now(),
87 | 'updated_at' => Time::now()
88 | ]
89 | ];
90 |
91 | // Using Query Builder
92 | $this->db->table('akun')->insertBatch($data);
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/app/Database/Seeds/DummySeeder.php:
--------------------------------------------------------------------------------
1 | call('AdminSeeder');
10 | $this->call('AkunSeeder');
11 | $this->call('JUSeeder');
12 | $this->call('JPSeeder');
13 | }
14 | }
--------------------------------------------------------------------------------
/app/Database/Seeds/JPSeeder.php:
--------------------------------------------------------------------------------
1 | ''.strtotime(Time::now()).'01',
14 | 'tgl_penyesuaian' => '2020-9-24',
15 | 'no_akun' => '515',
16 | 'keterangan_penyesuaian'=> 'Perlengkapan terpakai',
17 | 'debit' => 750000,
18 | 'kredit' => 0,
19 | 'nip' => '11180930000095',
20 | 'created_at' => Time::now(),
21 | 'updated_at' => Time::now()
22 | ],
23 | [
24 | 'id_penyesuaian' => ''.strtotime(Time::now()).'02',
25 | 'tgl_penyesuaian' => '2020-9-24',
26 | 'no_akun' => '113',
27 | 'keterangan_penyesuaian'=> 'Perlengkapan terpakai',
28 | 'debit' => 0,
29 | 'kredit' => 750000,
30 | 'nip' => '11180930000095',
31 | 'created_at' => Time::now(),
32 | 'updated_at' => Time::now()
33 | ],
34 | [
35 | 'id_penyesuaian' => ''.strtotime(Time::now()).'03',
36 | 'tgl_penyesuaian' => '2020-10-24',
37 | 'no_akun' => '122',
38 | 'keterangan_penyesuaian'=> 'Akumulasi penyusutan peralatan',
39 | 'debit' => 0,
40 | 'kredit' => 750000,
41 | 'nip' => '11180930000095',
42 | 'created_at' => Time::now(),
43 | 'updated_at' => Time::now()
44 | ],
45 | [
46 | 'id_penyesuaian' => ''.strtotime(Time::now()).'04',
47 | 'tgl_penyesuaian' => '2020-10-24',
48 | 'no_akun' => '518',
49 | 'keterangan_penyesuaian'=> 'Beban Penyusunan Peralatan',
50 | 'debit' => 750000,
51 | 'kredit' => 0,
52 | 'nip' => '11180930000095',
53 | 'created_at' => Time::now(),
54 | 'updated_at' => Time::now()
55 | ],
56 |
57 | ];
58 |
59 | // Using Query Builder
60 | $this->db->table('jurnal_penyesuaian')->insertBatch($data);
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/app/Filters/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/app/Filters/.gitkeep
--------------------------------------------------------------------------------
/app/Filters/Auth.php:
--------------------------------------------------------------------------------
1 | get('logged_in')) {
15 | return redirect()->to('/login');
16 | }
17 | }
18 |
19 | //--------------------------------------------------------------------
20 |
21 | public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
22 | {
23 | // Do something here
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/Filters/Guest.php:
--------------------------------------------------------------------------------
1 | get('logged_in')) {
15 | return redirect()->to('/');
16 | }
17 | }
18 |
19 | //--------------------------------------------------------------------
20 |
21 | public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
22 | {
23 | // Do something here
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/Filters/RoleBased.php:
--------------------------------------------------------------------------------
1 | $value) {
15 | if (session()->get('user_role')==$value) {
16 | $cocok+=1;
17 | }
18 | }
19 | if ($cocok==0) {
20 | return redirect()->to(previous_url());
21 | }
22 | }
23 |
24 | //--------------------------------------------------------------------
25 |
26 | public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
27 | {
28 | // Do something here
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/Helpers/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/app/Helpers/.gitkeep
--------------------------------------------------------------------------------
/app/Helpers/converttousd_helper.php:
--------------------------------------------------------------------------------
1 | post($url,[
17 | "headers"=>[
18 | "Authorization"=>$key
19 | ],
20 | "json"=>[
21 | "text"=>$data,
22 | "model_id"=>"id-en"
23 | ]
24 | ]);
25 | $json = json_decode($response->getBody(),true);
26 | // dd($json);
27 | return $json;
28 | }
29 | ?>
--------------------------------------------------------------------------------
/app/Helpers/laporan_helper.php:
--------------------------------------------------------------------------------
1 | query($sql, [
13 | 'tgl_mulai' => date('Y-m-j', strtotime($mulai)),
14 | 'tgl_selesai' => date('Y-m-t', strtotime($selesai))
15 | ])->getResult('array');
16 |
17 | if ($bahasa=='en' && !empty($result)) {
18 | $text = getTeks($result, ['nama_akun', 'keterangan_transaksi']);
19 | $translated = translateToEnglish($text);
20 | // dd($translated, $text);
21 | $result = replaceWithEnglish($result, $translated);
22 | // dd($result);
23 | }
24 |
25 | return $result;
26 | }
27 |
28 | function replaceWithEnglish($data, $text){
29 | $j=0;
30 | for ($i=0; $i ";
32 | $data[$i]['nama_akun'] = $text['translations'][$j]['translation'];
33 | $data[$i]['keterangan_transaksi'] = $text['translations'][$j+1]['translation'];
34 | $j+=2;
35 | }
36 | return $data;
37 | }
38 |
39 | // mengecek apakah akun terdapat dalam array
40 | function akunExist(array $dt, $dicari)
41 | {
42 | $equal = 0;
43 | foreach ($dt as $item) {
44 | if ($dicari == $item['no_akun']) {
45 | $equal += 1;
46 | }
47 | }
48 | return $equal;
49 | }
50 |
51 | // Menghitung saldo
52 | function hitungSaldo($no_akun, $debit, $kredit, $saldo_debit, $saldo_kredit)
53 | {
54 | $saldo = [];
55 | if (substr($no_akun, 0, 1) == 1 || substr($no_akun, 0, 1) == 5) {
56 | $saldo_normal = $saldo_debit + $debit - $kredit;
57 | if ($saldo_normal < 0) {
58 | $saldo['debit'] = 0;
59 | $saldo['kredit'] = abs($saldo_normal);
60 | } else {
61 | $saldo['debit'] = $saldo_normal;
62 | $saldo['kredit'] = 0;
63 | }
64 | } else {
65 | $saldo_normal = $saldo_kredit + $kredit - $debit;
66 | if ($saldo_normal < 0) {
67 | $saldo['debit'] = abs($saldo_normal);
68 | $saldo['kredit'] = 0;
69 | } else {
70 | $saldo['debit'] = 0;
71 | $saldo['kredit'] = $saldo_normal;
72 | }
73 | }
74 | return $saldo;
75 | }
76 |
77 | function collectDataLR($data, $tipe, $rate)
78 | {
79 | $items = [];
80 | $total_items = ["debit" => 0, "kredit" => 0];
81 | $prefix = "";
82 |
83 | switch ($tipe) {
84 | case 'pendapatan':
85 | $prefix = 4;
86 | break;
87 |
88 | case 'beban':
89 | $prefix = 5;
90 | break;
91 |
92 | default:
93 | # code...
94 | break;
95 | }
96 |
97 |
98 | // mengumpulkan data items
99 | foreach ($data as $akun) {
100 | if (substr($akun['no_akun'], 0, 1) == $prefix) {
101 | if (akunExist($items, $akun['no_akun'])) {
102 | continue;
103 | }
104 |
105 | // menghitung saldo total tiap akun
106 | $saldo = [];
107 | foreach ($data as $value) {
108 | if ($value['no_akun'] == $akun['no_akun']) {
109 | $saldo = hitungSaldo(
110 | $value['no_akun'],
111 | $value['debit'] / $rate,
112 | $value['kredit'] / $rate,
113 | !empty($saldo) ? $saldo['debit'] : 0,
114 | !empty($saldo) ? $saldo['kredit'] : 0
115 | );
116 | // echo $saldo['debit']."
";
117 | // echo $saldo['kredit']."
";
118 | }
119 | }
120 |
121 | $akun_items = [
122 | "no_akun" => $akun['no_akun'],
123 | "nama_akun" => $akun['nama_akun'],
124 | "saldo" => $saldo
125 | ];
126 | array_push($items, $akun_items);
127 | $total_items['debit'] += $saldo['debit'];
128 | $total_items['kredit'] += $saldo['kredit'];
129 | // echo "
".$total_items['debit']."
";
130 | // echo $total_items['kredit']."
";
131 | }
132 | }
133 | // dd($items);
134 |
135 | return ["items" => $items, "total_items" => $total_items];
136 | }
137 |
138 | function getTeks($data, array $kolom)
139 | {
140 | $text = [];
141 | foreach ($data as $value) {
142 | foreach ($kolom as $kol) {
143 | array_push($text, strtolower($value[$kol]));
144 | }
145 | }
146 | // dd($text);
147 | return $text;
148 | }
149 |
--------------------------------------------------------------------------------
/app/Helpers/tanggalindo_helper.php:
--------------------------------------------------------------------------------
1 | 'Januari',
7 | 'Februari',
8 | 'Maret',
9 | 'April',
10 | 'Mei',
11 | 'Juni',
12 | 'Juli',
13 | 'Agustus',
14 | 'September',
15 | 'Oktober',
16 | 'November',
17 | 'Desember'
18 | );
19 |
20 | $split = explode('-',$tanggal);
21 | return $split[2] . ' ' . $bulan[ (int)$split[1] ] . ' ' . $split[0];
22 | }
23 |
24 | ?>
--------------------------------------------------------------------------------
/app/Language/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/app/Language/.gitkeep
--------------------------------------------------------------------------------
/app/Language/en/Validation.php:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/Views/components/alert_error.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
11 |
12 |
13 |
14 |
17 | - = $e ?>
18 |
20 | - = $errors ?>
21 |
22 |
23 |
24 |
25 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/app/Views/components/alert_success.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
11 |
12 |
13 | = $success ?>
14 |
15 |
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/Views/components/jurnal_penyesuaian/modal_tambah_jurnal_penyesuaian.php:
--------------------------------------------------------------------------------
1 |
5 |
6 |
--------------------------------------------------------------------------------
/app/Views/components/jurnal_umum/modal_tambah_jurnal_umum.php:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/Views/components/laporan/laba_rugi.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Laporan Laba Rugi
5 |
6 |
7 |
8 |
9 |
10 | Laporan Laba Rugi
11 | Periode = date('j/m/Y', strtotime($filter['start_date'])) . ' - ' . date('t/m/Y', strtotime($filter['end_date'])) ?>
12 |
13 |
14 |
15 |
16 |
17 |
18 | Pendapatan |
19 | |
20 |
21 |
22 |
23 |
24 |
25 | = $pendapatan['nama_akun'] ?> |
26 | Rp. = number_format($pendapatan['saldo']['kredit']) ?> |
27 |
28 |
29 |
30 | Jumlah Pendapatan |
31 | Rp. = number_format($data['pendapatan']['total_items']['kredit']) ?> |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | Beban |
40 | |
41 |
42 |
43 |
44 |
45 |
46 | = $beban['nama_akun'] ?> |
47 | Rp. = number_format($beban['saldo']['debit']) ?> |
48 |
49 |
50 |
51 | Jumlah Beban |
52 | Rp. = number_format($data['beban']['total_items']['debit']) ?> |
53 |
54 |
55 |
56 |
57 |
58 |
59 | Laba Bersih |
60 | Rp. = number_format($data['laba_bersih']) ?> |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
Maaf, Laporan belum tersedia!
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/app/Views/components/laporan/laba_rugi_en.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Laporan Laba Rugi
5 |
6 |
7 |
8 |
9 |
10 | INCOME STATEMENT
11 | Period = date('j/m/Y', strtotime($filter['start_date'])) . ' - ' . date('t/m/Y', strtotime($filter['end_date'])) ?>
12 |
13 |
14 |
15 |
Date : = date('d M Y', strtotime("now")) ?>
16 |
Rate : Rp. = number_format($data['rate'],0,',','.') ?>
17 |
18 |
19 |
20 |
21 |
22 |
23 | Revenue |
24 | |
25 |
26 |
27 |
28 |
29 |
30 | = $pendapatan['nama_akun'] ?> |
31 | $ = number_format($pendapatan['saldo']['kredit'], 2, '.', '') ?> |
32 |
33 |
34 |
35 | Total Revenue |
36 | $ = number_format($data['pendapatan']['total_items']['kredit'], 2, '.', '') ?> |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | Expense |
45 | |
46 |
47 |
48 |
49 |
50 |
51 | = $beban['nama_akun'] ?> |
52 | $ = number_format($beban['saldo']['debit'],2,'.','') ?> |
53 |
54 |
55 |
56 | Total Expense |
57 | $ = number_format($data['beban']['total_items']['debit'],2,'.','') ?> |
58 |
59 |
60 |
61 |
62 |
63 |
64 | Total Profit |
65 | $ = number_format($data['laba_bersih'],2,'.','') ?> |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
Sorry, The report is not available!
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/app/Views/components/laporan/neraca_saldo.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Laporan Neraca Saldo
5 |
6 |
7 |
8 |
9 |
10 | Laporan Neraca Saldo
11 | Periode = date('j/m/Y', strtotime($filter['start_date'])) . ' - ' . date('t/m/Y', strtotime($filter['end_date'])) ?>
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | NO AKUN |
20 | NAMA AKUN |
21 | DEBET |
22 | KREDIT |
23 |
24 |
25 |
26 | $item) {?>
27 |
28 | = $item['no_akun'] ?> |
29 | = $item['nama_akun'] ?> |
30 | Rp. = number_format($item['saldo']['debit']) ?> |
31 | Rp. = number_format($item['saldo']['kredit']) ?> |
32 |
33 |
34 |
35 | JUMLAH |
36 | Rp. = number_format($data['jumlah_debit']) ?> |
37 | Rp. = number_format($data['jumlah_kredit']) ?> |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
Maaf, Laporan belum tersedia!
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/app/Views/components/laporan/neraca_saldo_en.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Laporan Neraca Saldo
5 |
6 |
7 |
8 |
9 |
10 | TRIAL BALANCE
11 | Period = date('j/m/Y', strtotime($filter['start_date'])) . ' - ' . date('t/m/Y', strtotime($filter['end_date'])) ?>
12 |
13 |
14 |
15 |
Date : = date('d M Y', strtotime("now")) ?>
16 |
Rate : Rp. = number_format($data['rate'],0,',','.') ?>
17 |
18 |
19 |
20 |
21 |
22 |
23 | NO ACCOUNT |
24 | ACCOUNT NAME |
25 | DEBET |
26 | CREDIT |
27 |
28 |
29 |
30 | $item) { ?>
31 |
32 | = $item['no_akun'] ?> |
33 | = $item['nama_akun'] ?> |
34 | $ = number_format($item['saldo']['debit'],2,',','') ?> |
35 | $ = number_format($item['saldo']['kredit'],2,',','') ?> |
36 |
37 |
38 |
39 | TOTAL AMOUNT |
40 | $ = number_format($data['jumlah_debit'],2,',','') ?> |
41 | $ = number_format($data['jumlah_kredit'],2,',','') ?> |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
Sorry, The report is not available!
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/app/Views/components/user/modal_tambah_user.php:
--------------------------------------------------------------------------------
1 |
2 |
50 |
51 |
--------------------------------------------------------------------------------
/app/Views/errors/cli/error_404.php:
--------------------------------------------------------------------------------
1 |
4 | Message: = $message, "\n"; ?>
5 | Filename: = $exception->getFile(), "\n"; ?>
6 | Line Number: = $exception->getLine(); ?>
7 |
8 |
9 |
10 | Backtrace:
11 | getTrace() as $error): ?>
12 |
13 | = trim('-' . $error['line'] . ' - ' . $error['file'] . '::' . $error['function']) . "\n" ?>
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/Views/errors/cli/production.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 404 Page Not Found
6 |
7 |
70 |
71 |
72 |
73 |
404 - File Not Found
74 |
75 |
76 |
77 | = esc($message) ?>
78 |
79 | Sorry! Cannot seem to find the page you were looking for.
80 |
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/app/Views/errors/html/production.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Whoops!
8 |
9 |
12 |
13 |
14 |
15 |
16 |
17 |
Whoops!
18 |
19 |
We seem to have hit a snag. Please try again later...
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/Views/login.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Login
8 |
9 |
58 |
59 |
60 |
61 |
62 | = $this->include("components/alert_error.php") ?>
63 |
64 |
91 |
92 |
93 |
94 |
95 |
98 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 403 Forbidden
5 |
6 |
7 |
8 | Directory access is forbidden.
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/builds:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | 'vcs',
68 | 'url' => GITHUB_URL,
69 | ];
70 | }
71 |
72 | // Define the "require"
73 | $array['require']['codeigniter4/codeigniter4'] = 'dev-develop';
74 | unset($array['require']['codeigniter4/framework']);
75 | }
76 |
77 | // Release
78 | else
79 | {
80 | // Clear 'minimum-stability'
81 | unset($array['minimum-stability']);
82 |
83 | // If the repo is configured then clear it
84 | if (isset($array['repositories']))
85 | {
86 | // Check for the CodeIgniter repo
87 | foreach ($array['repositories'] as $i => $repository)
88 | {
89 | if ($repository['url'] == GITHUB_URL)
90 | {
91 | unset($array['repositories'][$i]);
92 | break;
93 | }
94 | }
95 | if (empty($array['repositories']))
96 | {
97 | unset($array['repositories']);
98 | }
99 | }
100 |
101 | // Define the "require"
102 | $array['require']['codeigniter4/framework'] = LATEST_RELEASE;
103 | unset($array['require']['codeigniter4/codeigniter4']);
104 | }
105 |
106 | // Write out a new composer.json
107 | file_put_contents($file, json_encode($array, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES) . PHP_EOL);
108 | $modified[] = $file;
109 | }
110 | else
111 | {
112 | echo 'Warning: Unable to decode composer.json! Skipping...' . PHP_EOL;
113 | }
114 | }
115 | else
116 | {
117 | echo 'Warning: Unable to read composer.json! Skipping...' . PHP_EOL;
118 | }
119 | }
120 |
121 | // Paths config and PHPUnit XMLs
122 | $files = [
123 | __DIR__ . DIRECTORY_SEPARATOR . 'app/Config/Paths.php',
124 | __DIR__ . DIRECTORY_SEPARATOR . 'phpunit.xml.dist',
125 | __DIR__ . DIRECTORY_SEPARATOR . 'phpunit.xml',
126 | ];
127 |
128 | foreach ($files as $file)
129 | {
130 | if (is_file($file))
131 | {
132 | $contents = file_get_contents($file);
133 |
134 | // Development
135 | if ($dev)
136 | {
137 | $contents = str_replace('vendor/codeigniter4/framework', 'vendor/codeigniter4/codeigniter4', $contents);
138 | }
139 |
140 | // Release
141 | else
142 | {
143 | $contents = str_replace('vendor/codeigniter4/codeigniter4', 'vendor/codeigniter4/framework', $contents);
144 | }
145 |
146 | file_put_contents($file, $contents);
147 | $modified[] = $file;
148 | }
149 | }
150 |
151 | if (empty($modified))
152 | {
153 | echo 'No files modified' . PHP_EOL;
154 | }
155 | else
156 | {
157 | echo 'The following files were modified:' . PHP_EOL;
158 | foreach ($modified as $file)
159 | {
160 | echo " * {$file}" . PHP_EOL;
161 | }
162 | echo 'Run `composer update` to sync changes with your vendor folder' . PHP_EOL;
163 | }
164 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "codeigniter4/appstarter",
3 | "type": "project",
4 | "description": "CodeIgniter4 starter app",
5 | "homepage": "https://codeigniter.com",
6 | "license": "MIT",
7 | "require": {
8 | "php": ">=7.2",
9 | "codeigniter4/framework": "^4"
10 | },
11 | "require-dev": {
12 | "fzaninotto/faker": "^1.9@dev",
13 | "mikey179/vfsstream": "1.6.*",
14 | "phpunit/phpunit": "^8.5"
15 | },
16 | "autoload-dev": {
17 | "psr-4": {
18 | "Tests\\Support\\": "tests/_support"
19 | }
20 | },
21 | "scripts": {
22 | "post-update-cmd": [
23 | "@composer dump-autoload"
24 | ],
25 | "test": "phpunit"
26 | },
27 | "support": {
28 | "forum": "http://forum.codeigniter.com/",
29 | "source": "https://github.com/codeigniter4/CodeIgniter4",
30 | "slack": "https://codeigniterchat.slack.com"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/license.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014-2019 British Columbia Institute of Technology
4 | Copyright (c) 2019-2020 CodeIgniter Foundation
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in
14 | all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/nohup.out:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/nohup.out
--------------------------------------------------------------------------------
/phpunit.xml.dist:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 | ./tests
15 |
16 |
17 |
18 |
19 |
20 | ./app
21 |
22 | ./app/Views
23 | ./app/Config/Routes.php
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/public/.htaccess:
--------------------------------------------------------------------------------
1 | # Disable directory browsing
2 | Options All -Indexes
3 |
4 | # ----------------------------------------------------------------------
5 | # Rewrite engine
6 | # ----------------------------------------------------------------------
7 |
8 | # Turning on the rewrite engine is necessary for the following rules and features.
9 | # FollowSymLinks must be enabled for this to work.
10 |
11 | Options +FollowSymlinks
12 | RewriteEngine On
13 |
14 | # If you installed CodeIgniter in a subfolder, you will need to
15 | # change the following line to match the subfolder you need.
16 | # http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
17 | # RewriteBase /
18 |
19 | # Redirect Trailing Slashes...
20 | RewriteCond %{REQUEST_FILENAME} !-d
21 | RewriteRule ^(.*)/$ /$1 [L,R=301]
22 |
23 | # Rewrite "www.example.com -> example.com"
24 | RewriteCond %{HTTPS} !=on
25 | RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
26 | RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
27 |
28 | # Checks to see if the user is attempting to access a valid file,
29 | # such as an image or css document, if this isn't true it sends the
30 | # request to the front controller, index.php
31 | RewriteCond %{REQUEST_FILENAME} !-f
32 | RewriteCond %{REQUEST_FILENAME} !-d
33 | RewriteRule ^([\s\S]*)$ index.php/$1 [L,NC,QSA]
34 |
35 | # Ensure Authorization header is passed along
36 | RewriteCond %{HTTP:Authorization} .
37 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
38 |
39 |
40 |
41 | # If we don't have mod_rewrite installed, all 404's
42 | # can be sent to index.php, and everything works as normal.
43 | ErrorDocument 404 index.php
44 |
45 |
46 | # Disable server signature start
47 | ServerSignature Off
48 | # Disable server signature end
49 |
--------------------------------------------------------------------------------
/public/ElaAdmin/css/lib/chosen/chosen-sprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/css/lib/chosen/chosen-sprite.png
--------------------------------------------------------------------------------
/public/ElaAdmin/css/lib/chosen/chosen-sprite@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/css/lib/chosen/chosen-sprite@2x.png
--------------------------------------------------------------------------------
/public/ElaAdmin/css/lib/datatable/dataTables.bootstrap.min.css:
--------------------------------------------------------------------------------
1 | table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:0.85em;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:before,table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:0.9em;display:block;opacity:0.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\2191"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{right:0.5em;content:"\2193"}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:0.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0}
--------------------------------------------------------------------------------
/public/ElaAdmin/css/lib/vector-map/jqvmap.min.css:
--------------------------------------------------------------------------------
1 | .jqvmap-label,
2 | .jqvmap-pin {
3 | pointer-events: none
4 | }
5 | .jqvmap-label {
6 | position: absolute;
7 | display: none;
8 | -webkit-border-radius: 3px;
9 | -moz-border-radius: 3px;
10 | border-radius: 3px;
11 | background: #292929;
12 | color: #fff;
13 | font-family: sans-serif, Verdana;
14 | font-size: smaller;
15 | padding: 3px
16 | }
17 | .jqvmap-zoomin,
18 | .jqvmap-zoomout {
19 | position: absolute;
20 | left: 10px;
21 | -webkit-border-radius: 3px;
22 | -moz-border-radius: 3px;
23 | border-radius: 3px;
24 | background: #000;
25 | padding: 3px;
26 | color: #fff;
27 | width: 15px;
28 | height: 15px;
29 | cursor: pointer;
30 | line-height: 10px;
31 | text-align: center
32 | }
33 | .jqvmap-zoomin {
34 | top: 10px
35 | }
36 | .jqvmap-zoomout {
37 | top: 30px
38 | }
39 | .jqvmap-region {
40 | cursor: pointer
41 | }
42 | .jqvmap-ajax_response {
43 | width: 100%;
44 | height: 500px
45 | }
--------------------------------------------------------------------------------
/public/ElaAdmin/fonts/icomoon/icomoon.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/fonts/icomoon/icomoon.eot
--------------------------------------------------------------------------------
/public/ElaAdmin/fonts/icomoon/icomoon.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/fonts/icomoon/icomoon.ttf
--------------------------------------------------------------------------------
/public/ElaAdmin/fonts/icomoon/icomoon.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/fonts/icomoon/icomoon.woff
--------------------------------------------------------------------------------
/public/ElaAdmin/fonts/icomoon/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/fonts/icomoon/index.html
--------------------------------------------------------------------------------
/public/ElaAdmin/images/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/.gitignore
--------------------------------------------------------------------------------
/public/ElaAdmin/images/admin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/admin.jpg
--------------------------------------------------------------------------------
/public/ElaAdmin/images/avatar/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/avatar/1.jpg
--------------------------------------------------------------------------------
/public/ElaAdmin/images/avatar/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/avatar/2.jpg
--------------------------------------------------------------------------------
/public/ElaAdmin/images/avatar/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/avatar/3.jpg
--------------------------------------------------------------------------------
/public/ElaAdmin/images/avatar/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/avatar/4.jpg
--------------------------------------------------------------------------------
/public/ElaAdmin/images/avatar/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/avatar/5.jpg
--------------------------------------------------------------------------------
/public/ElaAdmin/images/avatar/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/avatar/6.jpg
--------------------------------------------------------------------------------
/public/ElaAdmin/images/avatar/64-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/avatar/64-1.jpg
--------------------------------------------------------------------------------
/public/ElaAdmin/images/avatar/64-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/avatar/64-2.jpg
--------------------------------------------------------------------------------
/public/ElaAdmin/images/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/favicon.png
--------------------------------------------------------------------------------
/public/ElaAdmin/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/logo.png
--------------------------------------------------------------------------------
/public/ElaAdmin/images/logo.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/logo.psd
--------------------------------------------------------------------------------
/public/ElaAdmin/images/logo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/ElaAdmin/images/logo2.png
--------------------------------------------------------------------------------
/public/ElaAdmin/js/init/datatables-init.js:
--------------------------------------------------------------------------------
1 | (function ($) {
2 | // "use strict";
3 |
4 |
5 | /* Data Table
6 | -------------*/
7 |
8 |
9 |
10 |
11 | $('#bootstrap-data-table').DataTable({
12 | lengthMenu: [[10, 20, 50, -1], [10, 20, 50, "All"]],
13 | });
14 |
15 |
16 |
17 | $('#bootstrap-data-table-export').DataTable({
18 | dom: 'lBfrtip',
19 | lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]],
20 | buttons: [
21 | 'copy', 'csv', 'excel', 'pdf', 'print'
22 | ]
23 | });
24 |
25 | $('#row-select').DataTable( {
26 | initComplete: function () {
27 | this.api().columns().every( function () {
28 | var column = this;
29 | var select = $('')
30 | .appendTo( $(column.footer()).empty() )
31 | .on( 'change', function () {
32 | var val = $.fn.dataTable.util.escapeRegex(
33 | $(this).val()
34 | );
35 |
36 | column
37 | .search( val ? '^'+val+'$' : '', true, false )
38 | .draw();
39 | } );
40 |
41 | column.data().unique().sort().each( function ( d, j ) {
42 | select.append( '' )
43 | } );
44 | } );
45 | }
46 | } );
47 |
48 |
49 |
50 |
51 |
52 |
53 | })(jQuery);
--------------------------------------------------------------------------------
/public/ElaAdmin/js/init/peitychart-init.js:
--------------------------------------------------------------------------------
1 | (function($){
2 |
3 | "use strict"; // Start of use strict
4 |
5 | $(function() {
6 | "use strict";
7 | // Just the defaults.
8 | $("span.pie").peity("pie",{
9 | width: '50',
10 | height: '50'
11 | })
12 |
13 | $('span.donut').peity('donut',{
14 | width: '50',
15 | height: '50'
16 | })
17 |
18 |
19 | $(".peity-line").peity("line",{
20 | width: '300',
21 | height: '100'
22 | })
23 |
24 | $(".bar").peity("bar",{
25 | width: '300',
26 | height: '100'
27 | })
28 |
29 | $(".bar-colours-1").peity("bar", {
30 | fill: ["red", "green", "blue"],
31 | width: '100',
32 | height: '100'
33 | })
34 |
35 | $(".bar-colours-2").peity("bar", {
36 | fill: function(value) {
37 | return value > 0 ? "green" : "red"
38 | },
39 | width: '100',
40 | height: '100'
41 | })
42 |
43 | $(".bar-colours-3").peity("bar", {
44 | fill: function(_, i, all) {
45 | var g = parseInt((i / all.length) * 255)
46 | return "rgb(255, " + g + ", 0)"
47 | },
48 | width: '100',
49 | height: '100'
50 | })
51 |
52 | $(".pie-colours-1").peity("pie", {
53 | fill: ["cyan", "magenta", "yellow", "black"],
54 | width: '100',
55 | height: '100'
56 | })
57 |
58 | $(".pie-colours-2").peity("pie", {
59 | fill: function(_, i, all) {
60 | var g = parseInt((i / all.length) * 255)
61 | return "rgb(255, " + g + ", 0)"
62 | },
63 | width: '100',
64 | height: '100'
65 | })
66 |
67 | // Using data attributes
68 | $(".data-attributes span").peity("donut")
69 |
70 | // Evented example.
71 | $("select").change(function() {
72 | var text = $(this).val() + "/" + 5
73 |
74 | $(this)
75 | .siblings("span.graph")
76 | .text(text)
77 | .change()
78 |
79 | $("#notice").text("Chart updated: " + text)
80 | }).change()
81 |
82 | $("span.graph").peity("pie")
83 |
84 | // Updating charts.
85 | var updatingChart = $(".updating-chart").peity("line", { width: "100%",height:100 })
86 |
87 | setInterval(function() {
88 | var random = Math.round(Math.random() * 10)
89 | var values = updatingChart.text().split(",")
90 | values.shift()
91 | values.push(random)
92 |
93 | updatingChart
94 | .text(values.join(","))
95 | .change()
96 | }, 1000)
97 | })
98 |
99 |
100 | })(jQuery);
101 |
--------------------------------------------------------------------------------
/public/ElaAdmin/js/lib/data-table/buttons.bootstrap.min.js:
--------------------------------------------------------------------------------
1 | (function(b,a){b.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group"},button:{className:"btn btn-default"},collection:{tag:"ul",className:"dt-button-collection dropdown-menu",button:{tag:"li",className:"dt-button"},buttonLiner:{tag:"a",className:""}}}});a.ext.buttons.collection.text=function(a){return a.i18n("buttons.collection",'Collection ')}})(jQuery,jQuery.fn.dataTable);
--------------------------------------------------------------------------------
/public/ElaAdmin/js/lib/data-table/buttons.colVis.min.js:
--------------------------------------------------------------------------------
1 | (function(g){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(d){return g(d,window,document)}):"object"===typeof exports?module.exports=function(d,e){d||(d=window);if(!e||!e.fn.dataTable)e=require("datatables.net")(d,e).$;e.fn.dataTable.Buttons||require("datatables.net-buttons")(d,e);return g(e,d,d.document)}:g(jQuery,window,document)})(function(g,d,e,h){d=g.fn.dataTable;g.extend(d.ext.buttons,{colvis:function(a,b){return{extend:"collection",
2 | text:function(a){return a.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",buttons:[{extend:"columnsToggle",columns:b.columns}]}},columnsToggle:function(a,b){return a.columns(b.columns).indexes().map(function(a){return{extend:"columnToggle",columns:a}}).toArray()},columnToggle:function(a,b){return{extend:"columnVisibility",columns:b.columns}},columnsVisibility:function(a,b){return a.columns(b.columns).indexes().map(function(a){return{extend:"columnVisibility",columns:a,visibility:b.visibility}}).toArray()},
3 | columnVisibility:{columns:h,text:function(a,b,c){return c._columnText(a,c.columns)},className:"buttons-columnVisibility",action:function(a,b,c,f){a=b.columns(f.columns);b=a.visible();a.visible(f.visibility!==h?f.visibility:!(b.length&&b[0]))},init:function(a,b,c){var f=this;a.on("column-visibility.dt"+c.namespace,function(b,d){d.bDestroying||f.active(a.column(c.columns).visible())}).on("column-reorder.dt"+c.namespace,function(b,d,e){1===a.columns(c.columns).count()&&("number"===typeof c.columns&&
4 | (c.columns=e.mapping[c.columns]),b=a.column(c.columns),f.text(c._columnText(a,c.columns)),f.active(b.visible()))});this.active(a.column(c.columns).visible())},destroy:function(a,b,c){a.off("column-visibility.dt"+c.namespace).off("column-reorder.dt"+c.namespace)},_columnText:function(a,b){var c=a.column(b).index();return a.settings()[0].aoColumns[c].sTitle.replace(/\n/g," ").replace(/<.*?>/g,"").replace(/^\s+|\s+$/g,"")}},colvisRestore:{className:"buttons-colvisRestore",text:function(a){return a.i18n("buttons.colvisRestore",
5 | "Restore visibility")},init:function(a,b,c){c._visOriginal=a.columns().indexes().map(function(b){return a.column(b).visible()}).toArray()},action:function(a,b,c,d){b.columns().every(function(a){a=b.colReorder&&b.colReorder.transpose?b.colReorder.transpose(a,"toOriginal"):a;this.visible(d._visOriginal[a])})}},colvisGroup:{className:"buttons-colvisGroup",action:function(a,b,c,d){b.columns(d.show).visible(!0,!1);b.columns(d.hide).visible(!1,!1);b.columns.adjust()},show:[],hide:[]}});return d.Buttons});
6 |
--------------------------------------------------------------------------------
/public/ElaAdmin/js/lib/data-table/buttons.print.min.js:
--------------------------------------------------------------------------------
1 | (function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(f){return e(f,window,document)}):"object"===typeof exports?module.exports=function(f,c){f||(f=window);if(!c||!c.fn.dataTable)c=require("datatables.net")(f,c).$;c.fn.dataTable.Buttons||require("datatables.net-buttons")(f,c);return e(c,f,f.document)}:e(jQuery,window,document)})(function(e,f,c){var i=e.fn.dataTable,h=c.createElement("a");i.ext.buttons.print={className:"buttons-print",
2 | text:function(b){return b.i18n("buttons.print","Print")},action:function(b,c,i,d){var a=c.buttons.exportData(d.exportOptions),k=function(b,a){for(var c="",d=0,e=b.length;d"+b[d]+""+a+">";return c+"
"},b='';d.header&&(b+=""+k(a.header,"th")+"");for(var b=b+"",l=0,m=a.body.length;l";d.footer&&a.footer&&(b+=""+k(a.footer,"th")+"");var g=f.open("",""),
3 | a=d.title;"function"===typeof a&&(a=a());-1!==a.indexOf("*")&&(a=a.replace("*",e("title").text()));g.document.close();var j=""+a+"";e("style, link").each(function(){var c=j,b=e(this).clone()[0],a;"link"===b.nodeName.toLowerCase()&&(h.href=b.href,a=h.host,-1===a.indexOf("/")&&0!==h.pathname.indexOf("/")&&(a+="/"),b.href=h.protocol+"//"+a+h.pathname+h.search);j=c+b.outerHTML});try{g.document.head.innerHTML=j}catch(n){e(g.document.head).html(j)}g.document.body.innerHTML=""+a+"
"+
4 | ("function"===typeof d.message?d.message(c,i,d):d.message)+"
"+b;e(g.document.body).addClass("dt-print-view");d.customize&&d.customize(g);setTimeout(function(){d.autoPrint&&(g.print(),g.close())},250)},title:"*",message:"",exportOptions:{},header:!0,footer:!1,autoPrint:!0,customize:null};return i.Buttons});
5 |
--------------------------------------------------------------------------------
/public/ElaAdmin/js/lib/data-table/dataTables.bootstrap.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | DataTables Bootstrap 3 integration
3 | ©2011-2015 SpryMedia Ltd - datatables.net/license
4 | */
5 | (function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b,a,d,m){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
6 | renderer:"bootstrap"});b.extend(f.ext.classes,{sWrapper:"dataTables_wrapper container-fluid dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,s,j,n){var o=new f.Api(a),t=a.oClasses,k=a.oLanguage.oPaginate,u=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&&
7 | o.page()!=a.data.action&&o.page(a.data.action).draw("page")};l=0;for(h=f.length;l",{"class":t.sPageButton+" "+g,id:0===r&&
8 | "string"===typeof c?a.sTableId+"_"+c:null}).append(b("",{href:"#","aria-controls":a.sTableId,"aria-label":u[c],"data-dt-idx":p,tabindex:a.iTabIndex,"class":"page-link"}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(v){}q(b(h).empty().html('').children("ul"),s);i!==m&&b(h).find("[data-dt-idx="+i+"]").focus()};return f});
--------------------------------------------------------------------------------
/public/ElaAdmin/js/main.js:
--------------------------------------------------------------------------------
1 | $.noConflict();
2 |
3 | jQuery(document).ready(function($) {
4 |
5 | "use strict";
6 |
7 | [].slice.call( document.querySelectorAll( 'select.cs-select' ) ).forEach( function(el) {
8 | new SelectFx(el);
9 | });
10 |
11 | jQuery('.selectpicker').selectpicker;
12 |
13 |
14 |
15 |
16 | $('.search-trigger').on('click', function(event) {
17 | event.preventDefault();
18 | event.stopPropagation();
19 | $('.search-trigger').parent('.header-left').addClass('open');
20 | });
21 |
22 | $('.search-close').on('click', function(event) {
23 | event.preventDefault();
24 | event.stopPropagation();
25 | $('.search-trigger').parent('.header-left').removeClass('open');
26 | });
27 |
28 | $('.equal-height').matchHeight({
29 | property: 'max-height'
30 | });
31 |
32 | // var chartsheight = $('.flotRealtime2').height();
33 | // $('.traffic-chart').css('height', chartsheight-122);
34 |
35 |
36 | // Counter Number
37 | $('.count').each(function () {
38 | $(this).prop('Counter',0).animate({
39 | Counter: $(this).text()
40 | }, {
41 | duration: 3000,
42 | easing: 'swing',
43 | step: function (now) {
44 | $(this).text(Math.ceil(now));
45 | }
46 | });
47 | });
48 |
49 |
50 |
51 |
52 | // Menu Trigger
53 | $('#menuToggle').on('click', function(event) {
54 | var windowWidth = $(window).width();
55 | if (windowWidth<1010) {
56 | $('body').removeClass('open');
57 | if (windowWidth<760){
58 | $('#left-panel').slideToggle();
59 | } else {
60 | $('#left-panel').toggleClass('open-menu');
61 | }
62 | } else {
63 | $('body').toggleClass('open');
64 | $('#left-panel').removeClass('open-menu');
65 | }
66 |
67 | });
68 |
69 |
70 | $(".menu-item-has-children.dropdown").each(function() {
71 | $(this).on('click', function() {
72 | var $temp_text = $(this).children('.dropdown-toggle').html();
73 | $(this).children('.sub-menu').prepend('' + $temp_text + '');
74 | });
75 | });
76 |
77 |
78 | // Load Resize
79 | $(window).on("load resize", function(event) {
80 | var windowWidth = $(window).width();
81 | if (windowWidth<1010) {
82 | $('body').addClass('small-device');
83 | } else {
84 | $('body').removeClass('small-device');
85 | }
86 |
87 | });
88 |
89 |
90 | });
--------------------------------------------------------------------------------
/public/ElaAdmin/js/vmap.sampledata.js:
--------------------------------------------------------------------------------
1 | var sample_data = {"af":"16.63","al":"11.58","dz":"158.97","ao":"85.81","ag":"1.1","ar":"351.02","am":"8.83","au":"1219.72","at":"366.26","az":"52.17","bs":"7.54","bh":"21.73","bd":"105.4","bb":"3.96","by":"52.89","be":"461.33","bz":"1.43","bj":"6.49","bt":"1.4","bo":"19.18","ba":"16.2","bw":"12.5","br":"2023.53","bn":"11.96","bg":"44.84","bf":"8.67","bi":"1.47","kh":"11.36","cm":"21.88","ca":"1563.66","cv":"1.57","cf":"2.11","td":"7.59","cl":"199.18","cn":"5745.13","co":"283.11","km":"0.56","cd":"12.6","cg":"11.88","cr":"35.02","ci":"22.38","hr":"59.92","cy":"22.75","cz":"195.23","dk":"304.56","dj":"1.14","dm":"0.38","do":"50.87","ec":"61.49","eg":"216.83","sv":"21.8","gq":"14.55","er":"2.25","ee":"19.22","et":"30.94","fj":"3.15","fi":"231.98","fr":"2555.44","ga":"12.56","gm":"1.04","ge":"11.23","de":"3305.9","gh":"18.06","gr":"305.01","gd":"0.65","gt":"40.77","gn":"4.34","gw":"0.83","gy":"2.2","ht":"6.5","hn":"15.34","hk":"226.49","hu":"132.28","is":"12.77","in":"1430.02","id":"695.06","ir":"337.9","iq":"84.14","ie":"204.14","il":"201.25","it":"2036.69","jm":"13.74","jp":"5390.9","jo":"27.13","kz":"129.76","ke":"32.42","ki":"0.15","kr":"986.26","undefined":"5.73","kw":"117.32","kg":"4.44","la":"6.34","lv":"23.39","lb":"39.15","ls":"1.8","lr":"0.98","ly":"77.91","lt":"35.73","lu":"52.43","mk":"9.58","mg":"8.33","mw":"5.04","my":"218.95","mv":"1.43","ml":"9.08","mt":"7.8","mr":"3.49","mu":"9.43","mx":"1004.04","md":"5.36","mn":"5.81","me":"3.88","ma":"91.7","mz":"10.21","mm":"35.65","na":"11.45","np":"15.11","nl":"770.31","nz":"138","ni":"6.38","ne":"5.6","ng":"206.66","no":"413.51","om":"53.78","pk":"174.79","pa":"27.2","pg":"8.81","py":"17.17","pe":"153.55","ph":"189.06","pl":"438.88","pt":"223.7","qa":"126.52","ro":"158.39","ru":"1476.91","rw":"5.69","ws":"0.55","st":"0.19","sa":"434.44","sn":"12.66","rs":"38.92","sc":"0.92","sl":"1.9","sg":"217.38","sk":"86.26","si":"46.44","sb":"0.67","za":"354.41","es":"1374.78","lk":"48.24","kn":"0.56","lc":"1","vc":"0.58","sd":"65.93","sr":"3.3","sz":"3.17","se":"444.59","ch":"522.44","sy":"59.63","tw":"426.98","tj":"5.58","tz":"22.43","th":"312.61","tl":"0.62","tg":"3.07","to":"0.3","tt":"21.2","tn":"43.86","tr":"729.05","tm":0,"ug":"17.12","ua":"136.56","ae":"239.65","gb":"2258.57","us":"14624.18","uy":"40.71","uz":"37.72","vu":"0.72","ve":"285.21","vn":"101.99","ye":"30.02","zm":"15.69","zw":"5.57"};
--------------------------------------------------------------------------------
/public/ElaAdmin/js/widgets.js:
--------------------------------------------------------------------------------
1 | ( function ( $ ) {
2 | "use strict";
3 |
4 |
5 |
6 | $.plot("#flotBar1", [{
7 | data: [[0, 3], [2, 8], [4, 5], [6, 13],[8,5], [10,7],[12,4], [14,6]],
8 | bars: {
9 | show: true,
10 | lineWidth: 0,
11 | fillColor: '#85c988'
12 | }
13 | }], {
14 | grid: {
15 | show: false,
16 | hoverable: true
17 | }
18 | });
19 |
20 |
21 |
22 | var plot = $.plot($('#flotLine1'),[{
23 | data: [[0, 1], [1, 3], [2,6], [3, 5], [4, 7], [5, 8], [6, 10]],
24 | color: '#fff'
25 | }],
26 | {
27 | series: {
28 | lines: {
29 | show: false
30 | },
31 | splines: {
32 | show: true,
33 | tension: 0.4,
34 | lineWidth: 2
35 | //fill: 0.4
36 | },
37 | shadowSize: 0
38 | },
39 | points: {
40 | show: false,
41 | },
42 | legend: {
43 | noColumns: 1,
44 | position: 'nw'
45 | },
46 | grid: {
47 | hoverable: true,
48 | clickable: true,
49 | show: false
50 | },
51 | yaxis: {
52 | min: 0,
53 | max: 10,
54 | color: '#eee',
55 | font: {
56 | size: 10,
57 | color: '#6a7074'
58 | }
59 | },
60 | xaxis: {
61 | color: '#eee',
62 | font: {
63 | size: 10,
64 | color: '#6a7074'
65 | }
66 | }
67 | });
68 |
69 | } )( jQuery );
--------------------------------------------------------------------------------
/public/css/app.css:
--------------------------------------------------------------------------------
1 | .navbar-brand img{
2 | width: 40px;
3 | }
4 |
5 | .navbar-brand h3{
6 | display: inline;
7 | vertical-align: bottom;
8 | color: #2E5E99;
9 | }
10 | .content-title {
11 | color: #ffffff;
12 | }
13 |
14 | .widget-dashboard small{
15 | color: #151CC6;
16 | font-weight: bold;
17 | }
18 |
19 |
20 | .widget-dashboard img{
21 | width: 50px;
22 | height: 30px;
23 | }
24 |
25 | .widget-dashboard h5{
26 | text-align: center;
27 | font-weight: bold;
28 | flex-grow: 1;
29 | }
30 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/favicon.ico
--------------------------------------------------------------------------------
/public/img/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/avatar.png
--------------------------------------------------------------------------------
/public/img/background/bg-login.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/background/bg-login.jpg
--------------------------------------------------------------------------------
/public/img/background/bg-ungu.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/public/img/icons/icon-avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/icons/icon-avatar.png
--------------------------------------------------------------------------------
/public/img/icons/icon-menu-akun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/icons/icon-menu-akun.png
--------------------------------------------------------------------------------
/public/img/icons/icon-menu-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/icons/icon-menu-dashboard.png
--------------------------------------------------------------------------------
/public/img/icons/icon-menu-jp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/icons/icon-menu-jp.png
--------------------------------------------------------------------------------
/public/img/icons/icon-menu-ju.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/icons/icon-menu-ju.png
--------------------------------------------------------------------------------
/public/img/icons/icon-menu-laporan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/icons/icon-menu-laporan.png
--------------------------------------------------------------------------------
/public/img/icons/icon-menu-user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/icons/icon-menu-user.png
--------------------------------------------------------------------------------
/public/img/icons/icon-widget-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/icons/icon-widget-1.png
--------------------------------------------------------------------------------
/public/img/icons/icon-widget-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/icons/icon-widget-2.png
--------------------------------------------------------------------------------
/public/img/icons/icon-widget-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/icons/icon-widget-3.png
--------------------------------------------------------------------------------
/public/img/icons/icon-widget-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/icons/icon-widget-4.png
--------------------------------------------------------------------------------
/public/img/icons/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qorthony/Sistem-Informasi-Keuangan/c9ac4cb0a93453eadcc0397741587f09e18895ff/public/img/icons/logo.png
--------------------------------------------------------------------------------
/public/index.php:
--------------------------------------------------------------------------------
1 | systemDirectory, '/ ') . '/bootstrap.php';
37 |
38 | /*
39 | *---------------------------------------------------------------
40 | * LAUNCH THE APPLICATION
41 | *---------------------------------------------------------------
42 | * Now that everything is setup, it's time to actually fire
43 | * up the engines and make this app do its thang.
44 | */
45 | $app->run();
46 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/spark:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | systemDirectory, '/ ') . '/bootstrap.php';
45 |
46 | // Grab our Console
47 | $console = new \CodeIgniter\CLI\Console($app);
48 |
49 | // We want errors to be shown when using it from the CLI.
50 | error_reporting(-1);
51 | ini_set('display_errors', 1);
52 |
53 | // Show basic information before we do anything else.
54 | $console->showHeader();
55 |
56 | // fire off the command in the main framework.
57 | $response = $console->run();
58 | if ($response->getStatusCode() >= 300)
59 | {
60 | exit($response->getStatusCode());
61 | }
62 |
--------------------------------------------------------------------------------
/tests/_support/Database/Migrations/2020-02-22-222222_example_migration.php:
--------------------------------------------------------------------------------
1 | [
13 | 'type' => 'varchar',
14 | 'constraint' => 31,
15 | ],
16 | 'uid' => [
17 | 'type' => 'varchar',
18 | 'constraint' => 31,
19 | ],
20 | 'class' => [
21 | 'type' => 'varchar',
22 | 'constraint' => 63,
23 | ],
24 | 'icon' => [
25 | 'type' => 'varchar',
26 | 'constraint' => 31,
27 | ],
28 | 'summary' => [
29 | 'type' => 'varchar',
30 | 'constraint' => 255,
31 | ],
32 | 'created_at' => [
33 | 'type' => 'datetime',
34 | 'null' => true,
35 | ],
36 | 'updated_at' => [
37 | 'type' => 'datetime',
38 | 'null' => true,
39 | ],
40 | 'deleted_at' => [
41 | 'type' => 'datetime',
42 | 'null' => true,
43 | ],
44 | ];
45 |
46 | $this->forge->addField('id');
47 | $this->forge->addField($fields);
48 |
49 | $this->forge->addKey('name');
50 | $this->forge->addKey('uid');
51 | $this->forge->addKey(['deleted_at', 'id']);
52 | $this->forge->addKey('created_at');
53 |
54 | $this->forge->createTable('factories');
55 | }
56 |
57 | public function down()
58 | {
59 | $this->forge->dropTable('factories');
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/tests/_support/Database/Seeds/ExampleSeeder.php:
--------------------------------------------------------------------------------
1 | 'Test Factory',
12 | 'uid' => 'test001',
13 | 'class' => 'Factories\Tests\NewFactory',
14 | 'icon' => 'fas fa-puzzle-piece',
15 | 'summary' => 'Longer sample text for testing',
16 | ],
17 | [
18 | 'name' => 'Widget Factory',
19 | 'uid' => 'widget',
20 | 'class' => 'Factories\Tests\WidgetPlant',
21 | 'icon' => 'fas fa-puzzle-piece',
22 | 'summary' => 'Create widgets in your factory',
23 | ],
24 | [
25 | 'name' => 'Evil Factory',
26 | 'uid' => 'evil-maker',
27 | 'class' => 'Factories\Evil\MyFactory',
28 | 'icon' => 'fas fa-book-dead',
29 | 'summary' => 'Abandon all hope, ye who enter here',
30 | ],
31 | ];
32 |
33 | $builder = $this->db->table('factories');
34 |
35 | foreach ($factories as $factory)
36 | {
37 | $builder->insert($factory);
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/tests/_support/DatabaseTestCase.php:
--------------------------------------------------------------------------------
1 | mockSession();
19 | }
20 |
21 | /**
22 | * Pre-loads the mock session driver into $this->session.
23 | *
24 | * @var string
25 | */
26 | protected function mockSession()
27 | {
28 | $config = config('App');
29 | $this->session = new MockSession(new ArrayHandler($config, '0.0.0.0'), $config);
30 | \Config\Services::injectMock('session', $this->session);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/tests/database/ExampleDatabaseTest.php:
--------------------------------------------------------------------------------
1 | findAll();
20 |
21 | // Make sure the count is as expected
22 | $this->assertCount(3, $objects);
23 | }
24 |
25 | public function testSoftDeleteLeavesRow()
26 | {
27 | $model = new ExampleModel();
28 | $this->setPrivateProperty($model, 'useSoftDeletes', true);
29 | $this->setPrivateProperty($model, 'tempUseSoftDeletes', true);
30 |
31 | $object = $model->first();
32 | $model->delete($object->id);
33 |
34 | // The model should no longer find it
35 | $this->assertNull($model->find($object->id));
36 |
37 | // ... but it should still be in the database
38 | $result = $model->builder()->where('id', $object->id)->get()->getResult();
39 |
40 | $this->assertCount(1, $result);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/tests/session/ExampleSessionTest.php:
--------------------------------------------------------------------------------
1 | session->set('logged_in', 123);
13 |
14 | $value = $this->session->get('logged_in');
15 |
16 | $this->assertEquals(123, $value);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/tests/unit/HealthTest.php:
--------------------------------------------------------------------------------
1 | assertTrue($test);
15 | }
16 |
17 | public function testBaseUrlHasBeenSet()
18 | {
19 | $env = $config = false;
20 |
21 | // First check in .env
22 | if (is_file(HOMEPATH . '.env'))
23 | {
24 | $env = (bool) preg_grep("/^app\.baseURL = './", file(HOMEPATH . '.env'));
25 | }
26 |
27 | // Then check the actual config file
28 | $reader = new \Tests\Support\Libraries\ConfigReader();
29 | $config = ! empty($reader->baseUrl);
30 |
31 | $this->assertTrue($env || $config);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/writable/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | Require all denied
3 |
4 |
5 | Deny from all
6 |
7 |
--------------------------------------------------------------------------------
/writable/cache/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 403 Forbidden
5 |
6 |
7 |
8 | Directory access is forbidden.
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/writable/logs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 403 Forbidden
5 |
6 |
7 |
8 | Directory access is forbidden.
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/writable/session/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 403 Forbidden
5 |
6 |
7 |
8 | Directory access is forbidden.
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/writable/uploads/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 403 Forbidden
5 |
6 |
7 |
8 | Directory access is forbidden.
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------