Compare commits
2 Commits
rebate-anggota
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 92991f0d10 | |||
| 1f8642e230 |
@@ -0,0 +1,16 @@
|
|||||||
|
.git
|
||||||
|
.gitea
|
||||||
|
node_modules
|
||||||
|
vendor
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
storage/logs
|
||||||
|
storage/framework/cache
|
||||||
|
storage/framework/sessions
|
||||||
|
storage/framework/views
|
||||||
|
storage/debugbar
|
||||||
|
npm-debug.log
|
||||||
|
Dockerfile
|
||||||
|
docker-compose.yml
|
||||||
|
docker-compose.staging.yml
|
||||||
+55
@@ -0,0 +1,55 @@
|
|||||||
|
APP_NAME=Laravel
|
||||||
|
APP_ENV=local
|
||||||
|
APP_KEY=base64:O1XZDqK4H6+3GdrODgCaLr2l+OoWvgVhYr0GJ1KizW8=
|
||||||
|
APP_DEBUG=true
|
||||||
|
APP_URL=http://localhost
|
||||||
|
# API_URL=http://api-annurv2.test
|
||||||
|
API_URL=http://host.docker.internal:8080
|
||||||
|
# Server-side Http:: from Docker — same rules as API_URL. Defaults in config/api.php use localhost:8000 which fails inside containers.
|
||||||
|
API_URL_KOOP=http://host.docker.internal:8080
|
||||||
|
API_URL_PKB=http://host.docker.internal:8080
|
||||||
|
API_ARRAHNBID=http://lelong.test/api/
|
||||||
|
|
||||||
|
LOG_CHANNEL=stack
|
||||||
|
LOG_LEVEL=debug
|
||||||
|
|
||||||
|
DB_CONNECTION=mysql
|
||||||
|
DB_HOST=mysql
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_DATABASE=kaunter_erahn
|
||||||
|
DB_USERNAME=kaunteruser
|
||||||
|
DB_PASSWORD=password
|
||||||
|
|
||||||
|
BROADCAST_DRIVER=pusher
|
||||||
|
CACHE_DRIVER=file
|
||||||
|
QUEUE_CONNECTION=sync
|
||||||
|
SESSION_DRIVER=file
|
||||||
|
SESSION_LIFETIME=120
|
||||||
|
|
||||||
|
REDIS_HOST=127.0.0.1
|
||||||
|
REDIS_PASSWORD=null
|
||||||
|
REDIS_PORT=6379
|
||||||
|
|
||||||
|
PUSHER_APP_ID=1132718
|
||||||
|
PUSHER_APP_KEY=26b0ec2f297f94b7aa9b
|
||||||
|
PUSHER_APP_SECRET=421b61fb5a8ecce477a6
|
||||||
|
|
||||||
|
MAIL_MAILER=smtp
|
||||||
|
MAIL_HOST=smtp.mailtrap.io
|
||||||
|
MAIL_PORT=2525
|
||||||
|
MAIL_USERNAME=null
|
||||||
|
MAIL_PASSWORD=null
|
||||||
|
MAIL_ENCRYPTION=null
|
||||||
|
MAIL_FROM_ADDRESS=null
|
||||||
|
MAIL_FROM_NAME="${APP_NAME}"
|
||||||
|
|
||||||
|
AWS_ACCESS_KEY_ID=
|
||||||
|
AWS_SECRET_ACCESS_KEY=
|
||||||
|
AWS_DEFAULT_REGION=us-east-1
|
||||||
|
AWS_BUCKET=
|
||||||
|
|
||||||
|
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
|
||||||
|
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
||||||
|
|
||||||
|
MYKAD_READER_PORT=8085
|
||||||
|
MYKAD_READER_ENABLED_CAWANGAN='' # IF NO CAWANGAN STATED, ALL CAWANGAN IS ENABLED
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
APP_NAME=Laravel
|
||||||
|
APP_ENV=staging
|
||||||
|
APP_KEY=base64:O1XZDqK4H6+3GdrODgCaLr2l+OoWvgVhYr0GJ1KizW8=
|
||||||
|
APP_DEBUG=true
|
||||||
|
APP_URL=http://172.16.6.200:8091
|
||||||
|
|
||||||
|
HTTP_PORT=8091
|
||||||
|
MYSQL_PUBLISH_PORT=3309
|
||||||
|
|
||||||
|
API_URL=http://172.16.6.200:8090
|
||||||
|
API_URL_KOOP=http://172.16.6.200:8090
|
||||||
|
API_URL_PKB=http://172.16.6.200:8090
|
||||||
|
API_ARRAHNBID=http://lelong.test/api/
|
||||||
|
|
||||||
|
LOG_CHANNEL=stack
|
||||||
|
LOG_LEVEL=debug
|
||||||
|
|
||||||
|
DB_CONNECTION=mysql
|
||||||
|
DB_HOST=mysql
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_DATABASE=kaunter_erahn
|
||||||
|
DB_USERNAME=kaunteruser
|
||||||
|
DB_PASSWORD=password
|
||||||
|
|
||||||
|
BROADCAST_DRIVER=pusher
|
||||||
|
CACHE_DRIVER=file
|
||||||
|
QUEUE_CONNECTION=sync
|
||||||
|
SESSION_DRIVER=file
|
||||||
|
SESSION_LIFETIME=120
|
||||||
|
|
||||||
|
REDIS_HOST=127.0.0.1
|
||||||
|
REDIS_PASSWORD=null
|
||||||
|
REDIS_PORT=6379
|
||||||
|
|
||||||
|
PUSHER_APP_ID=1132718
|
||||||
|
PUSHER_APP_KEY=26b0ec2f297f94b7aa9b
|
||||||
|
PUSHER_APP_SECRET=421b61fb5a8ecce477a6
|
||||||
|
|
||||||
|
MAIL_MAILER=smtp
|
||||||
|
MAIL_HOST=smtp.mailtrap.io
|
||||||
|
MAIL_PORT=2525
|
||||||
|
MAIL_USERNAME=null
|
||||||
|
MAIL_PASSWORD=null
|
||||||
|
MAIL_ENCRYPTION=null
|
||||||
|
MAIL_FROM_ADDRESS=null
|
||||||
|
MAIL_FROM_NAME="${APP_NAME}"
|
||||||
|
|
||||||
|
AWS_ACCESS_KEY_ID=
|
||||||
|
AWS_SECRET_ACCESS_KEY=
|
||||||
|
AWS_DEFAULT_REGION=us-east-1
|
||||||
|
AWS_BUCKET=
|
||||||
|
|
||||||
|
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
|
||||||
|
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
||||||
|
|
||||||
|
MYKAD_READER_PORT=8085
|
||||||
|
MYKAD_READER_ENABLED_CAWANGAN='' # IF NO CAWANGAN STATED, ALL CAWANGAN IS ENABLED
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
APP_NAME=Laravel
|
||||||
|
APP_ENV=local
|
||||||
|
APP_KEY=base64:WRTHcFTq5YARKVdA8YDUzsh9Ue8vD63ivgZgXNNBiGo=
|
||||||
|
APP_DEBUG=true
|
||||||
|
APP_URL=http://ujrahkopkb.erahn.com.my
|
||||||
|
API_URL=http://apiujrah-kopkb.erahn.com.my
|
||||||
|
#API_ARRAHNBID=http://lelong.test/api/
|
||||||
|
|
||||||
|
LOG_CHANNEL=stack
|
||||||
|
|
||||||
|
DB_CONNECTION=mysql
|
||||||
|
DB_HOST=127.0.0.1
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_DATABASE=kaunter_erahn
|
||||||
|
DB_USERNAME=spider
|
||||||
|
DB_PASSWORD=G0dz!ll4
|
||||||
|
|
||||||
|
BROADCAST_DRIVER=pusher
|
||||||
|
CACHE_DRIVER=file
|
||||||
|
QUEUE_CONNECTION=sync
|
||||||
|
SESSION_DRIVER=file
|
||||||
|
SESSION_LIFETIME=120
|
||||||
|
|
||||||
|
REDIS_HOST=127.0.0.1
|
||||||
|
REDIS_PASSWORD=null
|
||||||
|
REDIS_PORT=6379
|
||||||
|
|
||||||
|
PUSHER_APP_ID=1132718
|
||||||
|
PUSHER_APP_KEY=26b0ec2f297f94b7aa9b
|
||||||
|
PUSHER_APP_SECRET=421b61fb5a8ecce477a6
|
||||||
|
|
||||||
|
MAIL_MAILER=smtp
|
||||||
|
MAIL_HOST=smtp.mailtrap.io
|
||||||
|
MAIL_PORT=2525
|
||||||
|
MAIL_USERNAME=null
|
||||||
|
MAIL_PASSWORD=null
|
||||||
|
MAIL_ENCRYPTION=null
|
||||||
|
MAIL_FROM_ADDRESS=null
|
||||||
|
MAIL_FROM_NAME="${APP_NAME}"
|
||||||
|
|
||||||
|
AWS_ACCESS_KEY_ID=
|
||||||
|
AWS_SECRET_ACCESS_KEY=
|
||||||
|
AWS_DEFAULT_REGION=us-east-1
|
||||||
|
AWS_BUCKET=
|
||||||
|
|
||||||
|
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
|
||||||
|
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
||||||
|
|
||||||
|
MYKAD_READER_PORT=8085
|
||||||
|
MYKAD_READER_ENABLED_CAWANGAN='' # IF NO CAWANGAN STATED, ALL CAWANGAN IS ENABLED
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
name: Build Docker Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- staging
|
||||||
|
tags:
|
||||||
|
- "v*"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-frontend:
|
||||||
|
runs-on: docker
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Login to Docker registry
|
||||||
|
run: |
|
||||||
|
echo "${{ secrets.REGISTRY_PASSWORD }}" | \
|
||||||
|
docker login git.koppkb.com \
|
||||||
|
-u "${{ secrets.REGISTRY_USERNAME }}" \
|
||||||
|
--password-stdin
|
||||||
|
|
||||||
|
- name: Build & push frontend image
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
|
||||||
|
IMAGE="git.koppkb.com/kopkb/kaunter"
|
||||||
|
TAGS="-t ${IMAGE}:${{ gitea.sha }}"
|
||||||
|
|
||||||
|
if [ "${{ gitea.ref_type }}" = "tag" ] && echo "${{ gitea.ref_name }}" | grep -q '^v'; then
|
||||||
|
TAGS="${TAGS} -t ${IMAGE}:${{ gitea.ref_name }}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${{ gitea.ref_name }}" = "staging" ]; then
|
||||||
|
TAGS="${TAGS} -t ${IMAGE}:staging"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Building and pushing frontend: ${TAGS}"
|
||||||
|
docker buildx build \
|
||||||
|
--target staging \
|
||||||
|
--platform linux/amd64 \
|
||||||
|
--cache-from type=registry,ref=${IMAGE}:buildcache,ignore-error=true \
|
||||||
|
--cache-to type=registry,ref=${IMAGE}:buildcache,mode=max \
|
||||||
|
-f docker/php/Dockerfile \
|
||||||
|
${TAGS} \
|
||||||
|
--push .
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
name: Deploy to Staging
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
image_tag:
|
||||||
|
description: "Docker image tag to deploy (commit SHA, staging, or v*)"
|
||||||
|
required: true
|
||||||
|
default: "staging"
|
||||||
|
type: string
|
||||||
|
|
||||||
|
env:
|
||||||
|
APP_IMAGE: git.koppkb.com/kopkb/kaunter
|
||||||
|
DEPLOY_DIR: /home/arrahn/Project/kaunter
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: host
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: ${{ inputs.image_tag }}
|
||||||
|
|
||||||
|
- name: Login to Docker registry
|
||||||
|
run: |
|
||||||
|
echo "${{ secrets.REGISTRY_PASSWORD }}" | \
|
||||||
|
docker login git.koppkb.com \
|
||||||
|
-u "${{ secrets.REGISTRY_USERNAME }}" \
|
||||||
|
--password-stdin
|
||||||
|
|
||||||
|
- name: Verify image exists in registry
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
IMAGE_TAG="${{ inputs.image_tag }}"
|
||||||
|
IMAGE="${APP_IMAGE}:${IMAGE_TAG}"
|
||||||
|
|
||||||
|
echo "Checking if image exists: ${IMAGE}"
|
||||||
|
if ! docker manifest inspect "${IMAGE}" > /dev/null 2>&1; then
|
||||||
|
echo "ERROR: Image ${IMAGE} does not exist in registry!"
|
||||||
|
echo "Run the Build Docker Image workflow first."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "✓ ${IMAGE} found"
|
||||||
|
|
||||||
|
- name: Pull Docker image
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
IMAGE_TAG="${{ inputs.image_tag }}"
|
||||||
|
docker pull "${APP_IMAGE}:${IMAGE_TAG}"
|
||||||
|
echo "✓ Image pulled successfully"
|
||||||
|
|
||||||
|
- name: Sync compose file and deploy
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
IMAGE_TAG="${{ inputs.image_tag }}"
|
||||||
|
|
||||||
|
mkdir -p "${DEPLOY_DIR}/docker/nginx"
|
||||||
|
cp docker-compose.staging.yml "${DEPLOY_DIR}/docker-compose.yml"
|
||||||
|
cp docker/nginx/default.conf "${DEPLOY_DIR}/docker/nginx/default.conf"
|
||||||
|
rm -rf "${DEPLOY_DIR}/public"
|
||||||
|
cp -R public "${DEPLOY_DIR}/public"
|
||||||
|
|
||||||
|
if [ ! -f "${DEPLOY_DIR}/.env.staging" ]; then
|
||||||
|
if [ -f .env.staging ]; then
|
||||||
|
cp .env.staging "${DEPLOY_DIR}/.env.staging"
|
||||||
|
echo "Copied .env.staging from repo (first deploy). Edit ${DEPLOY_DIR}/.env.staging on the server if needed."
|
||||||
|
else
|
||||||
|
echo "ERROR: ${DEPLOY_DIR}/.env.staging is missing on the server"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "${DEPLOY_DIR}"
|
||||||
|
|
||||||
|
export APP_IMAGE
|
||||||
|
export IMAGE_TAG
|
||||||
|
|
||||||
|
docker compose --env-file .env.staging -f docker-compose.yml pull app
|
||||||
|
docker compose --env-file .env.staging -f docker-compose.yml up -d --no-build --remove-orphans
|
||||||
|
|
||||||
|
echo "✓ Deployed IMAGE_TAG=${IMAGE_TAG}"
|
||||||
|
|
||||||
|
- name: Verify deployment
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
cd "${DEPLOY_DIR}"
|
||||||
|
|
||||||
|
echo "Waiting for services to start..."
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
for SERVICE in app web mysql; do
|
||||||
|
STATUS=$(docker compose --env-file .env.staging -f docker-compose.yml ps --status running --format '{{.Name}}' "$SERVICE" 2>/dev/null || true)
|
||||||
|
if [ -z "$STATUS" ]; then
|
||||||
|
echo "ERROR: ${SERVICE} is not running"
|
||||||
|
docker compose --env-file .env.staging -f docker-compose.yml ps
|
||||||
|
docker compose --env-file .env.staging -f docker-compose.yml logs --tail=50 "$SERVICE" || true
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "✓ ${SERVICE} is running (${STATUS})"
|
||||||
|
done
|
||||||
|
|
||||||
|
HTTP_PORT=$(grep -E '^HTTP_PORT=' .env.staging 2>/dev/null | cut -d= -f2- | tr -d '"' || true)
|
||||||
|
HTTP_PORT=${HTTP_PORT:-8091}
|
||||||
|
|
||||||
|
check_health() {
|
||||||
|
NAME=$1
|
||||||
|
URL=$2
|
||||||
|
for i in 1 2 3 4 5 6; do
|
||||||
|
if curl -sf "$URL" > /dev/null; then
|
||||||
|
echo "✓ ${NAME} health check passed (${URL})"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
echo "Waiting for ${NAME}... attempt ${i}/6"
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
echo "ERROR: ${NAME} health check failed (${URL})"
|
||||||
|
docker compose --env-file .env.staging -f docker-compose.yml logs --tail=50 app web || true
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
check_health "kaunter" "http://127.0.0.1:${HTTP_PORT}/health"
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
return [
|
return [
|
||||||
'url' => env('API_URL'),
|
'url' => env('API_URL'),
|
||||||
'url_koop' => env('API_URL_KOOP','http://localhost:8000'),
|
'url_koop' => env('API_URL_KOOP','https://apiujrah.erahn.com.my'),
|
||||||
'url_pkb' => env('API_URL_PKB','http://localhost:8000'),
|
'url_pkb' => env('API_URL_PKB','http://localhost:8000'),
|
||||||
];
|
];
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
# Staging stack — isolated from local docker-compose.yml (8081 / 3307)
|
||||||
|
# and from api_arrahn staging (8090 / 3308).
|
||||||
|
#
|
||||||
|
# Local:
|
||||||
|
# docker compose --env-file .env.staging -f docker-compose.staging.yml up -d --build
|
||||||
|
#
|
||||||
|
# CI (image already in registry):
|
||||||
|
# APP_IMAGE=git.koppkb.com/kopkb/kaunter IMAGE_TAG=<sha> \
|
||||||
|
# docker compose --env-file .env.staging -f docker-compose.staging.yml up -d --no-build
|
||||||
|
#
|
||||||
|
# Host nginx reverse-proxies the public domain to 127.0.0.1:${HTTP_PORT}.
|
||||||
|
# See docker/nginx/host-proxy.example.conf
|
||||||
|
#
|
||||||
|
# If 8091 or 3309 is already taken, set HTTP_PORT / MYSQL_PUBLISH_PORT in .env.staging.
|
||||||
|
|
||||||
|
name: kaunter_staging
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: ${APP_IMAGE:-kaunter}:${IMAGE_TAG:-staging}
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: docker/php/Dockerfile
|
||||||
|
target: staging
|
||||||
|
container_name: kaunter_staging_app
|
||||||
|
working_dir: /var/www/html
|
||||||
|
volumes:
|
||||||
|
- storage_staging:/var/www/html/storage
|
||||||
|
- ./.env.staging:/var/www/html/.env.staging:ro
|
||||||
|
env_file:
|
||||||
|
- .env.staging
|
||||||
|
environment:
|
||||||
|
APP_ENV: staging
|
||||||
|
USE_STAGING_ENV: "true"
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
depends_on:
|
||||||
|
mysql:
|
||||||
|
condition: service_healthy
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
web:
|
||||||
|
image: nginx:1.25-alpine
|
||||||
|
container_name: kaunter_staging_web
|
||||||
|
ports:
|
||||||
|
- "${HTTP_PORT:-8091}:80"
|
||||||
|
volumes:
|
||||||
|
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
|
||||||
|
- ./public:/var/www/html/public:ro
|
||||||
|
depends_on:
|
||||||
|
- app
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
mysql:
|
||||||
|
image: mysql:8.0
|
||||||
|
container_name: kaunter_staging_mysql
|
||||||
|
command: --default-authentication-plugin=mysql_native_password
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:${MYSQL_PUBLISH_PORT:-3309}:3306"
|
||||||
|
environment:
|
||||||
|
MYSQL_DATABASE: kaunter_erahn
|
||||||
|
MYSQL_USER: kaunteruser
|
||||||
|
MYSQL_PASSWORD: password
|
||||||
|
MYSQL_ROOT_PASSWORD: root
|
||||||
|
volumes:
|
||||||
|
- mysql_staging_data:/var/lib/mysql
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-proot"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 30
|
||||||
|
start_period: 20s
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mysql_staging_data:
|
||||||
|
storage_staging:
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
services:
|
||||||
|
app:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: docker/php/Dockerfile
|
||||||
|
target: development
|
||||||
|
working_dir: /var/www/html
|
||||||
|
volumes:
|
||||||
|
- ./:/var/www/html:cached
|
||||||
|
environment:
|
||||||
|
APP_ENV: local
|
||||||
|
APP_DEBUG: "true"
|
||||||
|
# Lets PHP resolve host.docker.internal to the host machine (Linux Docker; Desktop already provides this).
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
depends_on:
|
||||||
|
- mysql
|
||||||
|
|
||||||
|
web:
|
||||||
|
image: nginx:1.25-alpine
|
||||||
|
ports:
|
||||||
|
- "8081:80"
|
||||||
|
volumes:
|
||||||
|
- ./:/var/www/html:cached
|
||||||
|
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
|
||||||
|
depends_on:
|
||||||
|
- app
|
||||||
|
|
||||||
|
mysql:
|
||||||
|
image: mysql:8.0
|
||||||
|
command: --default-authentication-plugin=mysql_native_password
|
||||||
|
ports:
|
||||||
|
- "3307:3306"
|
||||||
|
environment:
|
||||||
|
MYSQL_DATABASE: kaunter_erahn
|
||||||
|
MYSQL_USER: kaunteruser
|
||||||
|
MYSQL_PASSWORD: password
|
||||||
|
MYSQL_ROOT_PASSWORD: root
|
||||||
|
volumes:
|
||||||
|
- mysql_data:/var/lib/mysql
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mysql_data:
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name _;
|
||||||
|
|
||||||
|
root /var/www/html/public;
|
||||||
|
index index.php index.html;
|
||||||
|
|
||||||
|
charset utf-8;
|
||||||
|
client_max_body_size 50M;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ @php;
|
||||||
|
}
|
||||||
|
|
||||||
|
location @php {
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME /var/www/html/public/index.php;
|
||||||
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||||
|
fastcgi_pass app:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_read_timeout 120s;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ \.php$ {
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||||
|
fastcgi_pass app:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_read_timeout 120s;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ /\.(?!well-known).* {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
FROM php:7.4-fpm AS base
|
||||||
|
|
||||||
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
git \
|
||||||
|
pkg-config \
|
||||||
|
unzip \
|
||||||
|
libonig-dev \
|
||||||
|
libzip-dev \
|
||||||
|
libpng-dev \
|
||||||
|
libjpeg62-turbo-dev \
|
||||||
|
libfreetype6-dev \
|
||||||
|
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||||
|
&& docker-php-ext-install -j"$(nproc)" \
|
||||||
|
pdo_mysql \
|
||||||
|
mbstring \
|
||||||
|
bcmath \
|
||||||
|
zip \
|
||||||
|
exif \
|
||||||
|
gd \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
|
||||||
|
|
||||||
|
COPY docker/php/php.ini /usr/local/etc/php/conf.d/app.ini
|
||||||
|
COPY docker/php/zz-clear-env.conf /usr/local/etc/php-fpm.d/zz-clear-env.conf
|
||||||
|
COPY docker/php/entrypoint.sh /usr/local/bin/app-entrypoint.sh
|
||||||
|
|
||||||
|
RUN chmod +x /usr/local/bin/app-entrypoint.sh \
|
||||||
|
&& usermod -u 1000 www-data && groupmod -g 1000 www-data
|
||||||
|
|
||||||
|
ENTRYPOINT ["app-entrypoint.sh"]
|
||||||
|
CMD ["php-fpm"]
|
||||||
|
|
||||||
|
FROM base AS staging
|
||||||
|
|
||||||
|
COPY --chown=www-data:www-data . /var/www/html
|
||||||
|
|
||||||
|
RUN composer install --no-interaction --prefer-dist --no-dev --optimize-autoloader --no-scripts \
|
||||||
|
&& mkdir -p \
|
||||||
|
storage/logs \
|
||||||
|
storage/framework/cache/data \
|
||||||
|
storage/framework/views \
|
||||||
|
storage/framework/sessions \
|
||||||
|
storage/app/public \
|
||||||
|
bootstrap/cache \
|
||||||
|
&& chown -R www-data:www-data storage bootstrap/cache vendor
|
||||||
|
|
||||||
|
FROM base AS development
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd /var/www/html
|
||||||
|
|
||||||
|
if [ "${USE_STAGING_ENV:-false}" = "true" ] && [ -f .env.staging ]; then
|
||||||
|
cp .env.staging .env
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f composer.json ]; then
|
||||||
|
if [ -f vendor/autoload.php ] && [ "${USE_STAGING_ENV:-false}" = "true" ]; then
|
||||||
|
: # vendor is baked into the staging image
|
||||||
|
elif [ "${USE_STAGING_ENV:-false}" = "true" ]; then
|
||||||
|
composer install --no-interaction --prefer-dist --no-dev --optimize-autoloader --no-scripts
|
||||||
|
else
|
||||||
|
composer install --no-interaction --prefer-dist
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p \
|
||||||
|
storage/logs \
|
||||||
|
storage/framework/cache/data \
|
||||||
|
storage/framework/views \
|
||||||
|
storage/framework/sessions \
|
||||||
|
storage/app/public \
|
||||||
|
bootstrap/cache
|
||||||
|
|
||||||
|
if [ -f artisan ]; then
|
||||||
|
php artisan package:discover --ansi
|
||||||
|
php artisan storage:link --force >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
chown -R www-data:www-data storage bootstrap/cache
|
||||||
|
|
||||||
|
exec docker-php-entrypoint "$@"
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
memory_limit=512M
|
||||||
|
upload_max_filesize=50M
|
||||||
|
post_max_size=50M
|
||||||
|
max_execution_time=120
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
[www]
|
||||||
|
; Pass container env vars (from compose env_file) through to PHP workers.
|
||||||
|
clear_env = no
|
||||||
@@ -525,38 +525,36 @@ var api_url = @json($api_url ?? '');
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Logik amaran SweetAlert
|
// Logik amaran SweetAlert
|
||||||
if("{{ auth()->user()->cawangan }}" == 'X0301'){
|
if (search === true) {
|
||||||
if (search === true) {
|
if (blacklist_search === true) {
|
||||||
if (blacklist_search === true) {
|
Swal.fire({
|
||||||
Swal.fire({
|
icon: 'warning',
|
||||||
icon: 'warning',
|
title: 'Amaran!',
|
||||||
title: 'Amaran!',
|
text: 'Pelanggan telah disenarai hitamkan dari Pembiayaan.'
|
||||||
text: 'Pelanggan telah disenarai hitamkan dari Pembiayaan.'
|
});
|
||||||
});
|
}
|
||||||
}
|
else if (isAnggota && !isPelanggan) {
|
||||||
else if (isAnggota && !isPelanggan) {
|
Swal.fire({
|
||||||
Swal.fire({
|
icon: 'info',
|
||||||
icon: 'info',
|
title: 'Anggota Belum Didaftarkan!',
|
||||||
title: 'Anggota Belum Didaftarkan!',
|
text: 'Pelanggan ini adalah anggota koperasi tetapi belum berdaftar sebagai pelanggan.'
|
||||||
text: 'Pelanggan ini adalah anggota koperasi tetapi belum berdaftar sebagai pelanggan.'
|
});
|
||||||
});
|
}
|
||||||
}
|
else if (isPelanggan && !isAnggota) {
|
||||||
else if (isPelanggan && !isAnggota) {
|
Swal.fire({
|
||||||
Swal.fire({
|
icon: 'info',
|
||||||
icon: 'info',
|
title: 'Pelanggan Bukan Anggota!',
|
||||||
title: 'Pelanggan Bukan Anggota!',
|
text: 'Pelanggan ini berdaftar tetapi belum menjadi anggota koperasi.'
|
||||||
text: 'Pelanggan ini berdaftar tetapi belum menjadi anggota koperasi.'
|
});
|
||||||
});
|
}
|
||||||
}
|
else if (!isAnggota && !isPelanggan) {
|
||||||
else if (!isAnggota && !isPelanggan) {
|
Swal.fire({
|
||||||
Swal.fire({
|
icon: 'info',
|
||||||
icon: 'info',
|
title: 'Pelanggan Tiada Dalam Rekod!',
|
||||||
title: 'Pelanggan Tiada Dalam Rekod!',
|
text: 'Sila Daftar Pelanggan.'
|
||||||
text: 'Sila Daftar Pelanggan.'
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -75,7 +75,8 @@
|
|||||||
->json();
|
->json();
|
||||||
@endphp
|
@endphp
|
||||||
<input type="text" class="form-control" name="outstanding_semasa"
|
<input type="text" class="form-control" name="outstanding_semasa"
|
||||||
id="outstanding_semasa" readonly value="{{ number_format($outstanding_semasa, 2) }}">
|
id="outstanding_semasa" readonly
|
||||||
|
value="{{ number_format($outstanding_semasa, 2) }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -157,7 +158,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<!-- Butang Assign Sebagai Anggota -->
|
<!-- Butang Assign Sebagai Anggota -->
|
||||||
@if (isset($showAssignAnggotaBtn) && $showAssignAnggotaBtn && auth()->user()->cawangan == 'X0301')
|
@if (isset($showAssignAnggotaBtn) && $showAssignAnggotaBtn)
|
||||||
<div class="m-0 p-2">
|
<div class="m-0 p-2">
|
||||||
<button type="button" class="btn btn-success d-flex align-items-center"
|
<button type="button" class="btn btn-success d-flex align-items-center"
|
||||||
data-noic="{{ $noic }}" onclick="assignAnggota(this)">
|
data-noic="{{ $noic }}" onclick="assignAnggota(this)">
|
||||||
@@ -363,31 +364,31 @@
|
|||||||
data-toggle="tab" href="#nav-tawarruq" role="tab" aria-controls="nav-tawarruq"
|
data-toggle="tab" href="#nav-tawarruq" role="tab" aria-controls="nav-tawarruq"
|
||||||
aria-selected="{{ $aria_selected_SAG_baru }}">SAG Baru</a>
|
aria-selected="{{ $aria_selected_SAG_baru }}">SAG Baru</a>
|
||||||
<a class="nav-item nav-link {{ $activate_tab_SAG_lama }}" " id="nav-xtawarruq-tab" data-toggle="tab" href="#nav-xtawarruq" role="tab" aria-controls="nav-xtawarruq" aria-selected="{{ $aria_selected_SAG_lama }}"><span id="textnavsag">SAG Lama</span></a>
|
<a class="nav-item nav-link {{ $activate_tab_SAG_lama }}" " id="nav-xtawarruq-tab" data-toggle="tab" href="#nav-xtawarruq" role="tab" aria-controls="nav-xtawarruq" aria-selected="{{ $aria_selected_SAG_lama }}"><span id="textnavsag">SAG Lama</span></a>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="tab-content" id="navtawarruqdannottawarruq">
|
<div class="tab-content" id="navtawarruqdannottawarruq">
|
||||||
<div class="tab-pane fade {{ $activate_pane_SAG_baru }}" id="nav-tawarruq" role="tabpanel" aria-labelledby="nav-tawarruq-tab">
|
<div class="tab-pane fade {{ $activate_pane_SAG_baru }}" id="nav-tawarruq" role="tabpanel" aria-labelledby="nav-tawarruq-tab">
|
||||||
<table class="table table-striped table-hover" id="myTable">
|
<table class="table table-striped table-hover" id="myTable">
|
||||||
<thead class="thead-dark">
|
<thead class="thead-dark">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Bil</th>
|
<th>Bil</th>
|
||||||
<th>No Rujukan</th>
|
<th>No Rujukan</th>
|
||||||
<th>Tarikh Pembiayaan</th>
|
<th>Tarikh Pembiayaan</th>
|
||||||
<th>Tarikh Matang</th>
|
<th>Tarikh Matang</th>
|
||||||
<th>Baki Harga Jualan</th>
|
<th>Baki Harga Jualan</th>
|
||||||
<th>Baki Pembiayaan</th>
|
<th>Baki Pembiayaan</th>
|
||||||
<th>Margin</th>
|
<th>Margin</th>
|
||||||
<th>Tempoh</th>
|
<th>Tempoh</th>
|
||||||
<th>Keuntungan</th>
|
<th>Keuntungan</th>
|
||||||
<th>Lelong</th>
|
<th>Lelong</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane fade {{ $activate_pane_SAG_lama }}" id="nav-xtawarruq" role="tabpanel" aria-labelledby="nav-xtawarruq-tab">
|
<div class="tab-pane fade {{ $activate_pane_SAG_lama }}" id="nav-xtawarruq" role="tabpanel" aria-labelledby="nav-xtawarruq-tab">
|
||||||
<table id="xtawarruq" class="table table-striped table-hover">
|
<table id="xtawarruq" class="table table-striped table-hover">
|
||||||
<thead class="thead-dark">
|
<thead class="thead-dark">
|
||||||
{{-- <tr>
|
{{-- <tr>
|
||||||
<th>Bil</th>
|
<th>Bil</th>
|
||||||
<th>No Rujukan</th>
|
<th>No Rujukan</th>
|
||||||
<th>Tarikh Gadai</th>
|
<th>Tarikh Gadai</th>
|
||||||
@@ -397,139 +398,139 @@
|
|||||||
<th>Tempoh</th>
|
<th>Tempoh</th>
|
||||||
<th>Lelong</th>
|
<th>Lelong</th>
|
||||||
</tr> --}}
|
</tr> --}}
|
||||||
<tr>
|
<tr>
|
||||||
<th>Bil</th>
|
<th>Bil</th>
|
||||||
<th>No Rujukan</th>
|
<th>No Rujukan</th>
|
||||||
<th>Tarikh Pembiayaan</th>
|
<th>Tarikh Pembiayaan</th>
|
||||||
<th>Tarikh Matang</th>
|
<th>Tarikh Matang</th>
|
||||||
<th>Baki Harga Jualan</th>
|
<th>Baki Harga Jualan</th>
|
||||||
<th>Baki Pembiayaan</th>
|
<th>Baki Pembiayaan</th>
|
||||||
<th>Margin</th>
|
<th>Margin</th>
|
||||||
<th>Tempoh</th>
|
<th>Tempoh</th>
|
||||||
<th>Keuntungan</th>
|
<th>Keuntungan</th>
|
||||||
<th>Lelong</th>
|
<th>Lelong</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
</table>
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{-- Sudah Tebus --}}
|
||||||
|
|
||||||
|
<table id="dahtebusTable" class="table table-striped table-hover">
|
||||||
|
<thead class="thead-dark">
|
||||||
|
<tr>
|
||||||
|
<th>Bil</th>
|
||||||
|
<th>No Rujukan</th>
|
||||||
|
<th>Tarikh Penyelesaian Pembiayaan</th>
|
||||||
|
<th>Baki Pembiayaan</th>
|
||||||
|
<th>Margin</th>
|
||||||
|
<th>Tempoh</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table id="lelongTable" class="table table-striped table-hover">
|
||||||
|
<thead class="thead-dark">
|
||||||
|
<tr>
|
||||||
|
<th>Bil</th>
|
||||||
|
<th>No Rujukan</th>
|
||||||
|
<th>Tarikh Lelong</th>
|
||||||
|
<th>Tarikh Tuntut</th>
|
||||||
|
<th>Pembiayaan</th>
|
||||||
|
<th>Harga Jual</th>
|
||||||
|
<th>Jum Tuntut/Bayar</th>
|
||||||
|
<th>Keuntungan</th>
|
||||||
|
<th>Caj Lelong</th>
|
||||||
|
<th>Status Tuntutan</th>
|
||||||
|
<th>Cetak</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<button class="btn btn-primary" onclick="ubahfunc(this)" id="button-edit-gadaian">Ubah</button>
|
||||||
|
<button class="btn btn-primary" onclick="hapusfunc()">Hapus</button>
|
||||||
|
<button class="btn btn-primary" onclick="histfunc()">Rekod Pembiayaan</button>
|
||||||
|
<button class="btn btn-primary" onclick="removeansuran(this)" id="button-remove-ansuran">Hapus Ansuran</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- Sudah Tebus --}}
|
|
||||||
|
|
||||||
<table id="dahtebusTable" class="table table-striped table-hover">
|
|
||||||
<thead class="thead-dark">
|
|
||||||
<tr>
|
|
||||||
<th>Bil</th>
|
|
||||||
<th>No Rujukan</th>
|
|
||||||
<th>Tarikh Penyelesaian Pembiayaan</th>
|
|
||||||
<th>Baki Pembiayaan</th>
|
|
||||||
<th>Margin</th>
|
|
||||||
<th>Tempoh</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<table id="lelongTable" class="table table-striped table-hover">
|
|
||||||
<thead class="thead-dark">
|
|
||||||
<tr>
|
|
||||||
<th>Bil</th>
|
|
||||||
<th>No Rujukan</th>
|
|
||||||
<th>Tarikh Lelong</th>
|
|
||||||
<th>Tarikh Tuntut</th>
|
|
||||||
<th>Pembiayaan</th>
|
|
||||||
<th>Harga Jual</th>
|
|
||||||
<th>Jum Tuntut/Bayar</th>
|
|
||||||
<th>Keuntungan</th>
|
|
||||||
<th>Caj Lelong</th>
|
|
||||||
<th>Status Tuntutan</th>
|
|
||||||
<th>Cetak</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<div class="text-center">
|
|
||||||
<button class="btn btn-primary" onclick="ubahfunc(this)" id="button-edit-gadaian">Ubah</button>
|
|
||||||
<button class="btn btn-primary" onclick="hapusfunc()">Hapus</button>
|
|
||||||
<button class="btn btn-primary" onclick="histfunc()">Rekod Pembiayaan</button>
|
|
||||||
<button class="btn btn-primary" onclick="removeansuran(this)" id="button-remove-ansuran">Hapus Ansuran</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Modal -->
|
<!-- Modal -->
|
||||||
<div class="modal fade" id="customer_detail" tabindex="-1" aria-labelledby="customer_detailLabel" aria-hidden="true">
|
<div class="modal fade" id="customer_detail" tabindex="-1" aria-labelledby="customer_detailLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-dialog-centered modal-xl">
|
<div class="modal-dialog modal-dialog-centered modal-xl">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="customer_detailLabel">Maklumat Pelanggan</h5>
|
<h5 class="modal-title" id="customer_detailLabel">Maklumat Pelanggan</h5>
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form id="kemaskiniform">
|
<form id="kemaskiniform">
|
||||||
<div class='row form-group'>
|
<div class='row form-group'>
|
||||||
<div class='col-md-6'>
|
<div class='col-md-6'>
|
||||||
<div class='form-group row col-md-12'>
|
<div class='form-group row col-md-12'>
|
||||||
<div class='col-md-5'>
|
<div class='col-md-5'>
|
||||||
Nama
|
Nama
|
||||||
|
</div>
|
||||||
|
<div class='col-md-7'>
|
||||||
|
<input type="text" readonly name='nama' id='nama' value="{{ $customer_info['nama'] }}" class='form-control'>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='col-md-7'>
|
<div class='form-group row col-md-12'>
|
||||||
<input type="text" readonly name='nama' id='nama' value="{{ $customer_info['nama'] }}" class='form-control'>
|
<div class='col-md-5'>
|
||||||
|
No KP
|
||||||
|
</div>
|
||||||
|
<div class='col-md-7'>
|
||||||
|
<input type="text" readonly name='icno' id='icno' value="{{ $customer_info['kpbaru'] ? $customer_info['kpbaru'] : $customer_info['kplama'] }}" class='form-control'>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class='form-group row col-md-12'>
|
||||||
<div class='form-group row col-md-12'>
|
<div class='col-md-5'>
|
||||||
<div class='col-md-5'>
|
No Pelanggan
|
||||||
No KP
|
</div>
|
||||||
|
<div class='col-md-7'>
|
||||||
|
<input type="text" readonly name='nopelanggan' id='nopelanggan' value="{{ $customer_info['nopelanggan'] }}" class='form-control'>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='col-md-7'>
|
<div class='form-group row col-md-12'>
|
||||||
<input type="text" readonly name='icno' id='icno' value="{{ $customer_info['kpbaru'] ? $customer_info['kpbaru'] : $customer_info['kplama'] }}" class='form-control'>
|
<div class='col-md-5'>
|
||||||
|
No Telefon 1
|
||||||
|
</div>
|
||||||
|
<div class='col-md-7'>
|
||||||
|
<input type="text" readonly name='' id='telefon' value="{{ $customer_info['telefon'] ? $customer_info['telefon'] : '' }}" class='form-control'>
|
||||||
|
<span id="errortelefon" style="color:red;"></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class='form-group row col-md-12'>
|
||||||
<div class='form-group row col-md-12'>
|
<div class='col-md-5'>
|
||||||
<div class='col-md-5'>
|
No Telefon 2
|
||||||
No Pelanggan
|
</div>
|
||||||
|
<div class='col-md-7'>
|
||||||
|
<input type="text" readonly name='telefon2' id='telefon2' value="{{ $customer_info['telefon2'] ? $customer_info['telefon2'] : '' }}" class='form-control'>
|
||||||
|
<span id="errortelefon2" style="color:red;"></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='col-md-7'>
|
<div class='form-group row col-md-12'>
|
||||||
<input type="text" readonly name='nopelanggan' id='nopelanggan' value="{{ $customer_info['nopelanggan'] }}" class='form-control'>
|
<div class='col-md-5'>
|
||||||
</div>
|
Bank
|
||||||
</div>
|
</div>
|
||||||
<div class='form-group row col-md-12'>
|
<div class='col-md-7'>
|
||||||
<div class='col-md-5'>
|
@php
|
||||||
No Telefon 1
|
$bank = Http::withOptions(['verify' => config('app.api_verify')])
|
||||||
</div>
|
->get($api_url . '/api/bank')
|
||||||
<div class='col-md-7'>
|
->json();
|
||||||
<input type="text" readonly name='' id='telefon' value="{{ $customer_info['telefon'] ? $customer_info['telefon'] : '' }}" class='form-control'>
|
@endphp
|
||||||
<span id="errortelefon" style="color:red;"></span>
|
<select class="form-control" name="kodbank" data-placeholder="Pilih Bank" id="kodbank" disabled="true">
|
||||||
</div>
|
<option value="-" selected disabled>-</option>
|
||||||
</div>
|
@foreach ($bank as $banks)
|
||||||
<div class='form-group row col-md-12'>
|
|
||||||
<div class='col-md-5'>
|
|
||||||
No Telefon 2
|
|
||||||
</div>
|
|
||||||
<div class='col-md-7'>
|
|
||||||
<input type="text" readonly name='telefon2' id='telefon2' value="{{ $customer_info['telefon2'] ? $customer_info['telefon2'] : '' }}" class='form-control'>
|
|
||||||
<span id="errortelefon2" style="color:red;"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class='form-group row col-md-12'>
|
|
||||||
<div class='col-md-5'>
|
|
||||||
Bank
|
|
||||||
</div>
|
|
||||||
<div class='col-md-7'>
|
|
||||||
@php
|
|
||||||
$bank = Http::withOptions(['verify' => config('app.api_verify')])
|
|
||||||
->get($api_url . '/api/bank')
|
|
||||||
->json();
|
|
||||||
@endphp
|
|
||||||
<select class="form-control" name="kodbank" data-placeholder="Pilih Bank" id="kodbank" disabled="true">
|
|
||||||
<option value="-" selected disabled>-</option>
|
|
||||||
@foreach ($bank as $banks)
|
|
||||||
<option value="{{ $banks['abbreviation'] }}"
|
<option value="{{ $banks['abbreviation'] }}"
|
||||||
{{ $banks['abbreviation'] == $customer_info['kodbank'] ? 'selected' : '' }}>
|
{{ $banks['abbreviation'] == $customer_info['kodbank'] ? 'selected' : '' }}>
|
||||||
{{ $banks['name'] }}</option>
|
{{ $banks['name'] }}</option>
|
||||||
@@ -971,7 +972,7 @@
|
|||||||
var channel = pusher.subscribe(
|
var channel = pusher.subscribe(
|
||||||
'notice-kelulusan');
|
'notice-kelulusan');
|
||||||
channel.bind('my-kelulusan', function(
|
channel.bind('my-kelulusan', function(
|
||||||
data) {
|
data) {
|
||||||
|
|
||||||
|
|
||||||
if (data.norujukan ==
|
if (data.norujukan ==
|
||||||
@@ -995,7 +996,7 @@
|
|||||||
},
|
},
|
||||||
success: function(
|
success: function(
|
||||||
data
|
data
|
||||||
) {
|
) {
|
||||||
location
|
location
|
||||||
.reload();
|
.reload();
|
||||||
|
|
||||||
@@ -1004,17 +1005,18 @@
|
|||||||
xhr,
|
xhr,
|
||||||
status,
|
status,
|
||||||
error
|
error
|
||||||
) {
|
) {
|
||||||
var err =
|
var err =
|
||||||
eval(
|
eval(
|
||||||
"(" +
|
"(" +
|
||||||
xhr
|
xhr
|
||||||
.responseText +
|
.responseText +
|
||||||
")"
|
")"
|
||||||
);
|
);
|
||||||
alert
|
alert
|
||||||
(xhr
|
(xhr
|
||||||
.responseText);
|
.responseText
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -1242,7 +1244,7 @@
|
|||||||
'RM ' + formatter.format(gadai_detail['bakipjm']),
|
'RM ' + formatter.format(gadai_detail['bakipjm']),
|
||||||
(((Number(gadai_detail['pinjaman']) / Number(gadai_detail[
|
(((Number(gadai_detail['pinjaman']) / Number(gadai_detail[
|
||||||
'nilaimarhun'])) * 100).toFixed(2)).toLocaleString(
|
'nilaimarhun'])) * 100).toFixed(2)).toLocaleString(
|
||||||
"en-GB") + '%',
|
"en-GB") + '%',
|
||||||
gadai_detail['tempoh']
|
gadai_detail['tempoh']
|
||||||
]).draw();
|
]).draw();
|
||||||
} else if (jenistebus == "lelong") {
|
} else if (jenistebus == "lelong") {
|
||||||
@@ -1273,7 +1275,7 @@
|
|||||||
'<a href="#" onclick="checktuntutbaki(this)" data-norujukan=' +
|
'<a href="#" onclick="checktuntutbaki(this)" data-norujukan=' +
|
||||||
gadai_detail['norujukan'] + ' data-tarikhtuntut=' +
|
gadai_detail['norujukan'] + ' data-tarikhtuntut=' +
|
||||||
gadai_detail['trkhtuntut'] + '>' + gadai_detail[
|
gadai_detail['trkhtuntut'] + '>' + gadai_detail[
|
||||||
'norujukan'] + '</a>',
|
'norujukan'] + '</a>',
|
||||||
gadai_detail['t_lelong'],
|
gadai_detail['t_lelong'],
|
||||||
gadai_detail['trkhtuntut'],
|
gadai_detail['trkhtuntut'],
|
||||||
'RM ' + formatter.format(gadai_detail['pinjaman']),
|
'RM ' + formatter.format(gadai_detail['pinjaman']),
|
||||||
@@ -1290,7 +1292,7 @@
|
|||||||
'<a href="#" onclick="checktuntutbaki(this)" data-norujukan=' +
|
'<a href="#" onclick="checktuntutbaki(this)" data-norujukan=' +
|
||||||
gadai_detail['norujukan'] + ' data-tarikhtuntut=' +
|
gadai_detail['norujukan'] + ' data-tarikhtuntut=' +
|
||||||
gadai_detail['trkhtuntut'] + '>' + gadai_detail[
|
gadai_detail['trkhtuntut'] + '>' + gadai_detail[
|
||||||
'norujukan'] + '</a>',
|
'norujukan'] + '</a>',
|
||||||
gadai_detail['t_lelong'],
|
gadai_detail['t_lelong'],
|
||||||
gadai_detail['trkhtuntut'],
|
gadai_detail['trkhtuntut'],
|
||||||
'RM ' + formatter.format(gadai_detail['pinjaman']),
|
'RM ' + formatter.format(gadai_detail['pinjaman']),
|
||||||
@@ -2164,10 +2166,10 @@
|
|||||||
cancelButtonText: 'Salah',
|
cancelButtonText: 'Salah',
|
||||||
reverseButtons: true
|
reverseButtons: true
|
||||||
}).then((
|
}).then((
|
||||||
result) => {
|
result) => {
|
||||||
if (result
|
if (result
|
||||||
.isConfirmed
|
.isConfirmed
|
||||||
) {
|
) {
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method: 'put',
|
method: 'put',
|
||||||
@@ -2181,11 +2183,11 @@
|
|||||||
},
|
},
|
||||||
success: function(
|
success: function(
|
||||||
data
|
data
|
||||||
) {
|
) {
|
||||||
|
|
||||||
if (data ===
|
if (data ===
|
||||||
1
|
1
|
||||||
) {
|
) {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: 'success',
|
icon: 'success',
|
||||||
title: 'Berjaya!',
|
title: 'Berjaya!',
|
||||||
@@ -2220,7 +2222,7 @@
|
|||||||
Swal
|
Swal
|
||||||
.DismissReason
|
.DismissReason
|
||||||
.cancel
|
.cancel
|
||||||
) {
|
) {
|
||||||
PengesahanAkhirWakil
|
PengesahanAkhirWakil
|
||||||
.fire(
|
.fire(
|
||||||
'Batal',
|
'Batal',
|
||||||
@@ -2242,12 +2244,12 @@
|
|||||||
daftarwakilfunction
|
daftarwakilfunction
|
||||||
(amaun,
|
(amaun,
|
||||||
norujukan
|
norujukan
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function(xhr, status,
|
error: function(xhr, status,
|
||||||
error) {
|
error) {
|
||||||
var err = eval("(" + xhr
|
var err = eval("(" + xhr
|
||||||
.responseText + ")");
|
.responseText + ")");
|
||||||
alert(xhr.responseText);
|
alert(xhr.responseText);
|
||||||
@@ -2479,7 +2481,7 @@
|
|||||||
success: function(data) {},
|
success: function(data) {},
|
||||||
error: function(xhr, status, error) {
|
error: function(xhr, status, error) {
|
||||||
var err = eval("(" + xhr.responseText +
|
var err = eval("(" + xhr.responseText +
|
||||||
")");
|
")");
|
||||||
alert(xhr.responseText);
|
alert(xhr.responseText);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -2527,7 +2529,7 @@
|
|||||||
location
|
location
|
||||||
.reload();
|
.reload();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
swalWithBootstrapButtons
|
swalWithBootstrapButtons
|
||||||
.fire(
|
.fire(
|
||||||
@@ -2540,7 +2542,7 @@
|
|||||||
location
|
location
|
||||||
.reload();
|
.reload();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2554,10 +2556,10 @@
|
|||||||
xhr
|
xhr
|
||||||
.responseText +
|
.responseText +
|
||||||
")"
|
")"
|
||||||
);
|
);
|
||||||
alert(xhr
|
alert(xhr
|
||||||
.responseText
|
.responseText
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
@@ -2716,10 +2718,10 @@
|
|||||||
'Maklumat Pembiayaan telah dihapuskan.',
|
'Maklumat Pembiayaan telah dihapuskan.',
|
||||||
'success'
|
'success'
|
||||||
).then(
|
).then(
|
||||||
function() {
|
function() {
|
||||||
location
|
location
|
||||||
.reload();
|
.reload();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
<div class="form-group row col-12">
|
<div class="form-group row col-12">
|
||||||
<input type="hidden" name="kodcaw" id="kodcaw" value="{{$cawangan_info['kodcaw']}}">
|
<input type="hidden" name="kodcaw" id="kodcaw" value="{{$cawangan_info['kodcaw']}}">
|
||||||
<input type="hidden" name="nokp" id="nokp" value="{{ $customer_info['kpbaru'] }}">
|
<input type="hidden" name="nokp" id="nokp" value="{{ $customer_info['kpbaru'] }}">
|
||||||
|
<input type="hidden" name="tag_anggota" id="tag_anggota" value="{{ $customer_info['tag_anggota'] ?? 0 }}">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 mb-2">
|
<div class="col-12 mb-2">
|
||||||
@@ -630,18 +631,23 @@
|
|||||||
|
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method:'GET',
|
method:'GET',
|
||||||
url: api_url + '/api/kadarujrah',
|
url: api_url + '/api/kadarujrah',
|
||||||
async:false,
|
async:false,
|
||||||
data:{
|
data:{
|
||||||
'nokp': $('#nokp').val(),
|
'nokp': $('#nokp').val(),
|
||||||
'nilaimarhun' : total_nilai_marhun,
|
'nilaimarhun' : total_nilai_marhun,
|
||||||
'kodcaw' : kodcaw_ujrah
|
'kodcaw' : kodcaw_ujrah
|
||||||
},
|
},
|
||||||
success:function(data){
|
success:function(data){
|
||||||
kadarupah = data;
|
kadarupah = data;
|
||||||
}
|
|
||||||
});
|
// Jika anggota (tag_anggota = 1), kadar ujrah dipaksa 0.00
|
||||||
|
if(Number($('#tag_anggota').val()) === 1){
|
||||||
|
kadarupah = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$('#total_nilai_marhun').val(formatter.format(total_nilai_marhun));
|
$('#total_nilai_marhun').val(formatter.format(total_nilai_marhun));
|
||||||
$('#marhun_detail').val(marhun_details);
|
$('#marhun_detail').val(marhun_details);
|
||||||
|
|||||||
@@ -655,7 +655,7 @@
|
|||||||
</table>
|
</table>
|
||||||
<table class="main-table text-center" style="border-top: none !important">
|
<table class="main-table text-center" style="border-top: none !important">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="5">JUMLAH KEUNTUNGAN DAN LAIN-LAIN CAJ BERDASARKAN TEMPOH PEMBIAYAAN</th>
|
<th colspan="5">JUMLAH KEUNTUNGAN BERDASARKAN TEMPOH PEMBIAYAAN</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>TEMPOH PEMBIAYAAN</th>
|
<th>TEMPOH PEMBIAYAAN</th>
|
||||||
@@ -670,13 +670,13 @@
|
|||||||
<td>{{ $formatted_t_matang_1 }}</td>
|
<td>{{ $formatted_t_matang_1 }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="text-left">JUMLAH KEUNTUNGAN (1%) DAN LAIN-LAIN CAJ YANG PERLU DIBAYAR</th>
|
<th class="text-left">JUMLAH KEUNTUNGAN YANG PERLU DIBAYAR</th>
|
||||||
<td style="font-size:12px"><b>RM{{ number_format($gadai_detail['bakiupah'] / 6, 2) }}</b></td>
|
<td style="font-size:12px"><b>RM{{ number_format($gadai_detail['bakiupah'] / 6, 2) }}</b></td>
|
||||||
<td style="font-size:12px"><b>RM{{ number_format($gadai_detail['bakiupah'], 2) }}</b></td>
|
<td style="font-size:12px"><b>RM{{ number_format($gadai_detail['bakiupah'], 2) }}</b></td>
|
||||||
<td>RM{{ number_format($gadai_detail['bakiupah'], 2) }}</td>
|
<td>RM{{ number_format($gadai_detail['bakiupah'], 2) }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="text-left">JUMLAH KEUNTUNGAN (1%) DAN LAIN-LAIN CAJ TERKUMPUL<br> SEPANJANG TEMPOH
|
<th class="text-left">JUMLAH KEUNTUNGAN TERKUMPUL<br> SEPANJANG TEMPOH
|
||||||
PEMBIAYAAN
|
PEMBIAYAAN
|
||||||
</th>
|
</th>
|
||||||
<td>-</td>
|
<td>-</td>
|
||||||
@@ -717,7 +717,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td colspan="4">
|
<td colspan="4">
|
||||||
Pelanggan bersetuju dan dengan ini menggadaikan Marhun sebagai cagaran kepada
|
Pelanggan bersetuju dan dengan ini menggadaikan Marhun sebagai cagaran kepada
|
||||||
Jumlah Pembiayaan termasuk Jumlah Keuntungan dan Lain-Lain Caj Terkumpul
|
Jumlah Pembiayaan termasuk Jumlah Keuntungan Terkumpul
|
||||||
mengikut
|
mengikut
|
||||||
syarat-syarat pembiayaan dalam SAG ini. KoPKB dengan ini menerima gadaian Marhun
|
syarat-syarat pembiayaan dalam SAG ini. KoPKB dengan ini menerima gadaian Marhun
|
||||||
tersebut.
|
tersebut.
|
||||||
@@ -731,14 +731,12 @@
|
|||||||
<td style="vertical-align: top">
|
<td style="vertical-align: top">
|
||||||
<table class="akad-table">
|
<table class="akad-table">
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="4"><b><u>AKAD (SIMPAN MARHUN)</u></b></td>
|
<td colspan="4"><b><u>KADAR KEUNTUNGAN BULANAN</u></b></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="4">
|
<td colspan="4">
|
||||||
Pelanggan dengan ini bersetuju marhun disimpan oleh KoPKB dan bersetuju membayar
|
Kadar keuntungan Pembiayaan Ar-Rahn Tawarruq adalah berdasarkan jumlah
|
||||||
lain-lain caj
|
pembiayaan seperti berikut :
|
||||||
sebagaimana jadual dibawah bagi setiap
|
|
||||||
RM100.00 Jumlah Marhun Keseluruhan:
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -746,35 +744,35 @@
|
|||||||
<table class="main-table text-center"
|
<table class="main-table text-center"
|
||||||
style="font-size: 9px; width: 100%; margin-top: 5px;">
|
style="font-size: 9px; width: 100%; margin-top: 5px;">
|
||||||
<tr>
|
<tr>
|
||||||
<th>KADAR LAIN-LAIN CAJ / RM100</th>
|
<th>KADAR KEUNTUNGAN SEBULAN (%)</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>RM{{ $kadar_ujrah[0]['kadarujrah'] }}/sebulan</td>
|
<td>1.00</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@else
|
@else
|
||||||
<table class="main-table text-center"
|
<table class="main-table text-center"
|
||||||
style="font-size: 9px; width: 100%; margin-top: 5px;">
|
style="font-size: 9px; width: 100%; margin-top: 5px;">
|
||||||
<tr>
|
<tr>
|
||||||
<th>NILAI MARHUN KESELURUHAN</th>
|
<th>JUMLAH PEMBIAYAAN</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th>KADAR LAIN-LAIN CAJ / RM100</th>
|
<th>KADAR KEUNTUNGAN SEBULAN (%)</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
< RM400.99</td>
|
< RM400.99</td>
|
||||||
<td>-</td>
|
<td>-</td>
|
||||||
<td>RM{{ $kadar_ujrah[0]['kadarujrah'] }}/sebulan</td>
|
<td>{{ $kadar_ujrah[0]['kadarupdah'] }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>RM401.00 - RM2000.99</td>
|
<td>RM401.00 - RM2000.99</td>
|
||||||
<td>-</td>
|
<td>-</td>
|
||||||
<td>RM{{ $kadar_ujrah[1]['kadarujrah'] }}/sebulan</td>
|
<td>{{ $kadar_ujrah[1]['kadarupdah'] }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>> RM2001.00</td>
|
<td>> RM2001.00</td>
|
||||||
<td>-</td>
|
<td>-</td>
|
||||||
<td>RM{{ $kadar_ujrah[2]['kadarujrah'] }}/sebulan</td>
|
<td>{{ $kadar_ujrah[2]['kadarupdah'] }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@endif
|
@endif
|
||||||
@@ -829,15 +827,15 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td>e.</td>
|
<td>e.</td>
|
||||||
<td colspan="2">Membayar Jumlah Pembiayaan termasuk Jumlah Keuntungan dan
|
<td colspan="2">Membayar Jumlah Pembiayaan termasuk Jumlah Keuntungan yang diberi
|
||||||
Lain-Lain Caj Terkumpul yang diberi mengikut dalam tempoh seperti di SAG ini;
|
mengikut dalam tempoh seperti di SAG ini;
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td>f.</td>
|
<td>f.</td>
|
||||||
<td colspan="2">Tertakluk kepada pembayaran penuh Jumlah Pembiayaan termasuk
|
<td colspan="2">Tertakluk kepada pembayaran penuh Jumlah Pembiayaan termasuk
|
||||||
Jumlah Keuntungan dan Lain-Lain Caj Terkumpul, Pelanggan perlu hadir sendiri
|
Jumlah Keuntungan Terkumpul, Pelanggan perlu hadir sendiri
|
||||||
menyelesaikan Pembiayaan;</td>
|
menyelesaikan Pembiayaan;</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -1066,8 +1064,7 @@
|
|||||||
<td colspan="1"></td>
|
<td colspan="1"></td>
|
||||||
<td colspan="1">o.</td>
|
<td colspan="1">o.</td>
|
||||||
<td colspan="2">KoPKB berhak menuntut Jumlah Pembiayaan termasuk Jumlah Keuntungan
|
<td colspan="2">KoPKB berhak menuntut Jumlah Pembiayaan termasuk Jumlah Keuntungan
|
||||||
dan
|
setelah tamat tempoh yang dinyatakan pada notis berkaitan;
|
||||||
Lain-Lain Caj Terkumpul setelah tamat tempoh yang dinyatakan pada notis berkaitan;
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -1212,8 +1209,7 @@
|
|||||||
<td colspan="1">a.</td>
|
<td colspan="1">a.</td>
|
||||||
<td colspan="2">Marhun akan dilelong atau dijual. KoPKB akan membatalkan
|
<td colspan="2">Marhun akan dilelong atau dijual. KoPKB akan membatalkan
|
||||||
lelongan Marhun sekiranya Pelanggan membayar tunggakan Jumlah Pembiayaan
|
lelongan Marhun sekiranya Pelanggan membayar tunggakan Jumlah Pembiayaan
|
||||||
termasuk Jumlah Keuntungan dan
|
termasuk Jumlah Keuntungan
|
||||||
Lain-Lain Caj
|
|
||||||
sepenuhnya tiga (3) hari sebelum tarikh lelongan;</td>
|
sepenuhnya tiga (3) hari sebelum tarikh lelongan;</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -1233,7 +1229,7 @@
|
|||||||
<td colspan="1">c.</td>
|
<td colspan="1">c.</td>
|
||||||
<td colspan="2">Sebarang lebihan hasil lelongan atau jualan (jika ada) setelah
|
<td colspan="2">Sebarang lebihan hasil lelongan atau jualan (jika ada) setelah
|
||||||
ditolak
|
ditolak
|
||||||
Jumlah Pembiayaan termasuk Jumlah Keuntungan dan Lain-Lain Caj Terkumpul
|
Jumlah Pembiayaan termasuk Jumlah Keuntungan Terkumpul
|
||||||
yang tertunggak dan kos-kos berkaitan akan
|
yang tertunggak dan kos-kos berkaitan akan
|
||||||
dikembalikan
|
dikembalikan
|
||||||
kepada Pelanggan dan;</td>
|
kepada Pelanggan dan;</td>
|
||||||
@@ -1264,7 +1260,7 @@
|
|||||||
<td>=</td>
|
<td>=</td>
|
||||||
<td><b>BAKI TEMPOH PEMBIAYAAN <br></td>
|
<td><b>BAKI TEMPOH PEMBIAYAAN <br></td>
|
||||||
<td>X</td>
|
<td>X</td>
|
||||||
<td><b>JUMLAH KEUNTUNGAN 1% DAN LAIN-LAIN CAJ YANG PERLU DIBAYAR</b></td>
|
<td><b>JUMLAH KEUNTUNGAN YANG PERLU DIBAYAR</b></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
@@ -1280,7 +1276,7 @@
|
|||||||
<td colspan="1"></td>
|
<td colspan="1"></td>
|
||||||
<td colspan="1">a.</td>
|
<td colspan="1">a.</td>
|
||||||
<td colspan="2">Pelanggan gagal dan/ingkar menjelaskan Jumlah Pembiayaan,
|
<td colspan="2">Pelanggan gagal dan/ingkar menjelaskan Jumlah Pembiayaan,
|
||||||
Jumlah Keuntungan dan Lain-Lain Caj Terkumpul pada tarikh yang ditetapkan;
|
Jumlah Keuntungan Terkumpul pada tarikh yang ditetapkan;
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -1306,6 +1302,45 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td colspan="1"></td>
|
<td colspan="1"></td>
|
||||||
<td colspan="1"><b>6.</b></td>
|
<td colspan="1"><b>6.</b></td>
|
||||||
|
<td colspan="2"><b>Pelanggan dengan ini bersetuju, memberi kuasa dan melantik
|
||||||
|
Ar-Rahn sebagai wakil (wakil di bawah prinsip Wakalah) untuk menguruskan baki
|
||||||
|
hasil lelongan yang menjadi hak Pelanggan,
|
||||||
|
sekiranya ada, yang bernilai RM10.00 (Ringgit Malaysia: Sepuluh) atau kurang,
|
||||||
|
dan tidak dituntut oleh Pelanggan dalam tempoh tuntutan yang ditetapkan oleh
|
||||||
|
Ar-Rahn setelah usaha munasabah telah diambil untuk memaklumkan kepada
|
||||||
|
Pelanggan.</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="1"></td>
|
||||||
|
<td colspan="1"><b>7.</b></td>
|
||||||
|
<td colspan="2">
|
||||||
|
<b>
|
||||||
|
Pelanggan selanjutnya bersetuju bahawa baki hasil lelongan tersebut boleh
|
||||||
|
disalurkan oleh Ar-Rahn, bagi pihak Pelanggan, sebagai infaq kepada mana-mana
|
||||||
|
institusi agama Islam, badan kebajikan atau institusi lain yang diluluskan
|
||||||
|
oleh Jawatankuasa Syariah dan/atau pihak berkuasa yang berkaitan, tanpa
|
||||||
|
sebarang liabiliti ke atas Ar-Rahn selepas penyaluran tersebut dibuat dengan
|
||||||
|
jumlah tidak melebihi RM10.00.
|
||||||
|
</b>
|
||||||
|
|
||||||
|
<div style="margin-top: 8px;">
|
||||||
|
<span
|
||||||
|
style="
|
||||||
|
display: inline-block;
|
||||||
|
width: 13px;
|
||||||
|
height: 13px;
|
||||||
|
border: 1px solid #000;
|
||||||
|
margin-right: 6px;
|
||||||
|
vertical-align: middle;
|
||||||
|
"></span>
|
||||||
|
<b>Tandakan (✓) jika tidak bersetuju.</b>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td colspan="1"></td>
|
||||||
|
<td colspan="1"><b>8.</b></td>
|
||||||
<td colspan="2"><b>Sekiranya Pelanggan mempunyai sebarang pertanyaan atau
|
<td colspan="2"><b>Sekiranya Pelanggan mempunyai sebarang pertanyaan atau
|
||||||
aduan, Pelanggan boleh menghubungi KoPKB sebagaimana berikut:</b></td>
|
aduan, Pelanggan boleh menghubungi KoPKB sebagaimana berikut:</b></td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -1713,6 +1748,7 @@
|
|||||||
{{-- MARHUN DETAIL SECTION --}}
|
{{-- MARHUN DETAIL SECTION --}}
|
||||||
<div class="main-marhun">
|
<div class="main-marhun">
|
||||||
<table class="main-table text-center" style="width: 75%">
|
<table class="main-table text-center" style="width: 75%">
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>BIL</th>
|
<th>BIL</th>
|
||||||
<th>JENIS MARHUN</th>
|
<th>JENIS MARHUN</th>
|
||||||
@@ -1846,7 +1882,7 @@
|
|||||||
</table>
|
</table>
|
||||||
<table class="main-table text-center" style="border-top: none !important">
|
<table class="main-table text-center" style="border-top: none !important">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="5">JUMLAH KEUNTUNGAN DAN LAIN-LAIN CAJ BERDASARKAN TEMPOH PEMBIAYAAN</th>
|
<th colspan="5">JUMLAH KEUNTUNGAN BERDASARKAN TEMPOH PEMBIAYAAN</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>TEMPOH PEMBIAYAAN</th>
|
<th>TEMPOH PEMBIAYAAN</th>
|
||||||
@@ -1861,19 +1897,27 @@
|
|||||||
<td>{{ $formatted_t_matang_1 }}</td>
|
<td>{{ $formatted_t_matang_1 }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="text-left">JUMLAH KEUNTUNGAN DAN LAIN-LAIN CAJ YANG PERLU DIBAYAR BULANAN</th>
|
<th class="text-left">JUMLAH KEUNTUNGAN YANG PERLU DIBAYAR BULANAN</th>
|
||||||
<td style="font-size:12px"><b>RM{{ number_format($gadai_detail['bakiupah'] / 6, 2) }}</b></td>
|
<td style="font-size:12px"><b>RM{{ number_format($gadai_detail['bakiupah'] / 6, 2) }}</b></td>
|
||||||
<td style="font-size:12px"><b>RM{{ number_format($gadai_detail['bakiupah'], 2) }}</b></td>
|
<td style="font-size:12px"><b>RM{{ number_format($gadai_detail['bakiupah'], 2) }}</b></td>
|
||||||
<td>RM {{ number_format($gadai_detail['bakiupah'], 2) }}</td>
|
<td>RM {{ number_format($gadai_detail['bakiupah'], 2) }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="text-left">JUMLAH KEUNTUNGAN DAN LAIN-LAIN CAJ TERKUMPUL <br> SEPANJANG TEMPOH
|
<th class="text-left">JUMLAH KEUNTUNGAN TERKUMPUL <br> SEPANJANG TEMPOH
|
||||||
PEMBIAYAAN</th>
|
PEMBIAYAAN</th>
|
||||||
<td>-</td>
|
<td>-</td>
|
||||||
<td>RM{{ number_format($gadai_detail['bakiupah'], 2) }}</td>
|
<td>RM{{ number_format($gadai_detail['bakiupah'], 2) }}</td>
|
||||||
<td>RM{{ number_format($gadai_detail['upah12'], 2) }}</td>
|
<td>RM{{ number_format($gadai_detail['upah12'], 2) }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<div style="color: black; font-weight: bold; margin-top: 0px; width: 100%;">
|
||||||
|
<span>PENGURUSAN HASIL LELONGAN YANG TIDAK DITUNTUT</span>
|
||||||
|
|
||||||
|
<span>
|
||||||
|
<input type="checkbox" name="hasil_lelongan_tidak_dituntut">
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
{{-- SIGNATURE SECTION --}}
|
{{-- SIGNATURE SECTION --}}
|
||||||
<table class="main-table mt-10">
|
<table class="main-table mt-10">
|
||||||
<tr>
|
<tr>
|
||||||
@@ -2138,8 +2182,8 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td style="width: 50px;">Nama:</td>
|
<td style="width: 50px;">Nama:</td>
|
||||||
<td>
|
<td>
|
||||||
{{ $customer_detail['nama'] }}
|
{{ $customer_detail['nama'] }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -2171,12 +2215,12 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td style="width: 50px;">Nama:</td>
|
<td style="width: 50px;">Nama:</td>
|
||||||
<td>
|
<td>
|
||||||
@if ($gadai_detail['penilai'] == '')
|
@if ($gadai_detail['penilai'] == '')
|
||||||
{{ $auth_username }}
|
{{ $auth_username }}
|
||||||
@else
|
@else
|
||||||
{{ $gadai_detail['penilai'] }}
|
{{ $gadai_detail['penilai'] }}
|
||||||
@endif
|
@endif
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -15,6 +15,10 @@ use Illuminate\Support\Facades\Storage;
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
Route::get('/health', function () {
|
||||||
|
return response()->json(['status' => 'ok']);
|
||||||
|
});
|
||||||
|
|
||||||
Route::get('/',['as'=>'login','uses'=>'HomeController@index']);
|
Route::get('/',['as'=>'login','uses'=>'HomeController@index']);
|
||||||
|
|
||||||
Route::get('/testtry',function(ImbangdugaServices $imbangduga){
|
Route::get('/testtry',function(ImbangdugaServices $imbangduga){
|
||||||
|
|||||||
Reference in New Issue
Block a user