Initial commit
This commit is contained in:
91
app/Models/AItems.php
Executable file
91
app/Models/AItems.php
Executable file
@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class AItems extends Model
|
||||
{
|
||||
const IS_ACTIVE = 1;
|
||||
const IS_INACTIVE = 2;
|
||||
|
||||
const IS_ADM_PRICE_NO = 0;
|
||||
const IS_ADM_PRICE_YES = 1;
|
||||
|
||||
// 0=>system, 1=>admin, 2=>finance
|
||||
const CRT_TYPE_SYSTEM = 0;
|
||||
const CRT_TYPE_ADMIN = 1;
|
||||
const CRT_TYPE_FINANCE = 2;
|
||||
|
||||
public static function listAItems($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = '';
|
||||
$where = '';
|
||||
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND a_item.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
|
||||
if (isset($filter['crt_type'])) {
|
||||
$where .= ' AND a_item.crt_type = ?';
|
||||
$params[] = $filter['crt_type'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT
|
||||
a_item.*,ut.name as type_name
|
||||
$select
|
||||
FROM
|
||||
t_a_items as a_item
|
||||
INNER JOIN t_unit_types as ut ON a_item.type = ut.id
|
||||
WHERE a_item.dlt is null
|
||||
$where
|
||||
ORDER BY a_item.name ASC
|
||||
;",
|
||||
$params);
|
||||
}
|
||||
|
||||
public static function showAItemsById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_a_items as a_item WHERE dlt is null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_a_items as a_item WHERE dlt is null ORDER BY a_item.name ASC;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_a_items as a_item WHERE dlt is null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByName($name, $filter = [])
|
||||
{
|
||||
$params = [$name];
|
||||
$where = '';
|
||||
if (isset($filter['crt_type'])) {
|
||||
$where .= ' AND a_item.crt_type = ?';
|
||||
$params[] = $filter['crt_type'];
|
||||
}
|
||||
return DB::select("SELECT * FROM t_a_items as a_item WHERE dlt is null AND name = ? $where LIMIT 1;", $params);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_a_items")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_a_items")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_a_items")->where("id", $id)->delete();
|
||||
}
|
||||
}
|
||||
93
app/Models/Banks.php
Executable file
93
app/Models/Banks.php
Executable file
@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Banks extends Model
|
||||
{
|
||||
|
||||
const IS_ACTIVE = 1;
|
||||
const IS_INACTIVE = 2;
|
||||
|
||||
const DFT_BANK_ID = 1; // BCA
|
||||
const DFT_BANK_CODE = 014;
|
||||
const DFT_BANK_NAME = "Bank Central Asia";
|
||||
const DFT_BANK_SHORT_NAME = "BCA";
|
||||
const DFT_BANK_ACC_NUMBER = 5270860721;
|
||||
const DFT_BANK_ACC_NAME = "PT Bonceng Indonesia";
|
||||
|
||||
const defaultSelectedBanks = "
|
||||
banks.*
|
||||
";
|
||||
|
||||
public static function listBanks($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = '';
|
||||
$join = '';
|
||||
$where = '';
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
return DB::select("SELECT "
|
||||
. Banks::defaultSelectedBanks . "
|
||||
$select
|
||||
FROM t_banks as banks
|
||||
$join
|
||||
WHERE banks.dlt is null
|
||||
$where
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function showBankById($bid)
|
||||
{
|
||||
return DB::select("SELECT "
|
||||
. Banks::defaultSelectedBanks . "
|
||||
FROM t_banks as banks
|
||||
WHERE banks.dlt is null AND banks.id = ?
|
||||
LIMIT 1;", [$bid]);
|
||||
}
|
||||
|
||||
public static function showBankByCode($code)
|
||||
{
|
||||
return DB::select("SELECT "
|
||||
. Banks::defaultSelectedBanks . "
|
||||
FROM t_banks as banks
|
||||
WHERE banks.dlt is null AND banks.bank_code = ?
|
||||
LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getBanks()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_banks WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getBankById($bid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_banks WHERE dlt is null AND id = ? LIMIT 1;", [$bid]);
|
||||
}
|
||||
|
||||
public static function getBankByCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_banks WHERE dlt is null AND bank_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function addBank($data)
|
||||
{
|
||||
$bid = DB::table("t_banks")->insertGetId($data);
|
||||
return $bid;
|
||||
}
|
||||
|
||||
public static function updateBank($bid, $data)
|
||||
{
|
||||
return DB::table("t_banks")->where("id", $bid)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteBank($bid)
|
||||
{
|
||||
return DB::table("t_banks")->where("id", $bid)->delete();
|
||||
}
|
||||
}
|
||||
80
app/Models/Checkpoints.php
Executable file
80
app/Models/Checkpoints.php
Executable file
@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Checkpoints extends Model
|
||||
{
|
||||
const defaultSelectedCheckpoints = "
|
||||
point.*
|
||||
,pck.name as pck_name,pck.fulladdress as pck_fulladdress
|
||||
,drp.name as drop_name,drp.fulladdress as drop_fulladdress
|
||||
";
|
||||
|
||||
public static function listCheckpoints($filter = [])
|
||||
{
|
||||
$where = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['pocket_id'])) {
|
||||
$where .= ' AND point.pocket_id = ?';
|
||||
$params[] = $filter['pocket_id'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT "
|
||||
. Checkpoints::defaultSelectedCheckpoints . "
|
||||
FROM t_checkpoints as point
|
||||
INNER JOIN t_zones as pck ON point.pck_id = pck.id
|
||||
LEFT JOIN t_zones as drp ON point.drop_id = drp.id
|
||||
WHERE point.dlt is null $where;", $params);
|
||||
}
|
||||
|
||||
public static function showCheckpointById($pocket_id)
|
||||
{
|
||||
return DB::select("SELECT "
|
||||
. Checkpoints::defaultSelectedCheckpoints . "
|
||||
FROM t_checkpoints as point
|
||||
LEFT JOIN t_zones as pck ON point.pck_id = pck.id
|
||||
LEFT JOIN t_zones as drp ON point.drop_id = drp.id
|
||||
WHERE point.dlt is null AND point.id = ?
|
||||
LIMIT 1;", [$pocket_id]);
|
||||
}
|
||||
|
||||
public static function getCheckpoints()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_checkpoints WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getCheckpointById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_checkpoints WHERE dlt is null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getCheckpointByPckDrop($pck_id, $drop_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_checkpoints WHERE dlt is null AND pck_id = ? AND drop_id = ? LIMIT 1;", [$pck_id, $drop_id]);
|
||||
}
|
||||
|
||||
public static function addCheckpoint($data)
|
||||
{
|
||||
$pid = DB::table("t_checkpoints")->insertGetId($data);
|
||||
return $pid;
|
||||
}
|
||||
|
||||
public static function updateCheckpoint($id, $data)
|
||||
{
|
||||
return DB::table("t_checkpoints")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteCheckpoint($id)
|
||||
{
|
||||
return DB::table("t_checkpoints")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function deleteCheckpointByPocketId($pocket_id)
|
||||
{
|
||||
return DB::table("t_checkpoints")->where("pocket_id", $pocket_id)->delete();
|
||||
}
|
||||
}
|
||||
172
app/Models/Clients.php
Executable file
172
app/Models/Clients.php
Executable file
@ -0,0 +1,172 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Clients extends Model
|
||||
{
|
||||
const CSTTS_ACTIVE = 1;
|
||||
const CSTTS_INACTIVE = 2;
|
||||
|
||||
const CCREDENTIALS_CREATE = 1;
|
||||
const CCREDENTIALS_NOT = 2;
|
||||
|
||||
const DEFAULT_PHONE_CODE = 62;
|
||||
|
||||
const DEFAULT_CID = 1; // swanusa account
|
||||
|
||||
const DISC_TYPE_NO = 0;
|
||||
const DISC_TYPE_FIX = 1;
|
||||
const DISC_TYPE_PERCENT = 2;
|
||||
|
||||
public static function listClients($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = "";
|
||||
$join = "";
|
||||
$where = "";
|
||||
|
||||
if (isset($filter["company"])) {
|
||||
$where .= " AND c.id = ?";
|
||||
$params[] = $filter["company"];
|
||||
}
|
||||
|
||||
if (isset($filter["c_status"])) {
|
||||
$where .= " AND c.c_status = ?";
|
||||
$params[] = $filter["c_status"];
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT c.*
|
||||
,c.id as client_id,u.id as user_id
|
||||
,c.crt as join_date
|
||||
,(SELECT COUNT(id) FROM t_orders_clients WHERE c_pt_id = c.id) as count_trx
|
||||
" .
|
||||
$select .
|
||||
"
|
||||
FROM t_clients AS c
|
||||
LEFT JOIN t_users AS u ON c.id = u.client_id
|
||||
" .
|
||||
$join .
|
||||
"
|
||||
WHERE c.dlt is null
|
||||
" .
|
||||
$where .
|
||||
"
|
||||
GROUP BY c.id
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function showClientById($cid)
|
||||
{
|
||||
$params = [$cid];
|
||||
return DB::select(
|
||||
"SELECT c.*
|
||||
,c.id as client_id,u.id as user_id
|
||||
,c.crt as join_date
|
||||
FROM t_clients AS c
|
||||
LEFT JOIN t_users AS u ON c.id = u.client_id
|
||||
WHERE c.dlt is null
|
||||
AND c.id = ?
|
||||
LIMIT 1;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function getClients()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getClientById($cid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients WHERE dlt is null AND id = ? LIMIT 1;", [$cid]);
|
||||
}
|
||||
|
||||
public static function getClientByEmail($email)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients WHERE dlt is null AND c_mail = ? LIMIT 2;", [$email]);
|
||||
}
|
||||
|
||||
public static function getClientByPhone($phone)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients WHERE dlt is null AND c_phone = ? LIMIT 2;", [$phone]);
|
||||
}
|
||||
|
||||
public static function getClientByName($name)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients WHERE dlt is null AND c_name = ? LIMIT 2;", [$name]);
|
||||
}
|
||||
|
||||
public static function getPicByEmail($email)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients WHERE dlt is null AND pic_mail = ? LIMIT 2;", [$email]);
|
||||
}
|
||||
|
||||
public static function getPicByPhone($phone)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients WHERE dlt is null AND pic_phone = ? LIMIT 2;", [$phone]);
|
||||
}
|
||||
|
||||
public static function addClient($data)
|
||||
{
|
||||
$cid = DB::table("t_clients")->insertGetId($data);
|
||||
return $cid;
|
||||
}
|
||||
|
||||
public static function updateClient($cid, $data)
|
||||
{
|
||||
return DB::table("t_clients")
|
||||
->where("id", $cid)
|
||||
->update($data);
|
||||
}
|
||||
|
||||
public static function deleteClient($cid)
|
||||
{
|
||||
return DB::table("t_clients")
|
||||
->where("id", $cid)
|
||||
->delete();
|
||||
}
|
||||
|
||||
public static function select2Client($cid = null)
|
||||
{
|
||||
$query = "";
|
||||
$params = [];
|
||||
|
||||
if ($cid) {
|
||||
$query .= "SELECT id,c_name as name FROM t_clients AS c WHERE dlt is null AND c.id = ?;";
|
||||
$params[] = $cid;
|
||||
} else {
|
||||
$query .= "SELECT id,c_name as name FROM t_clients AS c WHERE dlt is null;";
|
||||
}
|
||||
|
||||
return DB::select($query, $params);
|
||||
}
|
||||
|
||||
public static function arrDiscountTypes()
|
||||
{
|
||||
return [Clients::DISC_TYPE_NO, Clients::DISC_TYPE_FIX, Clients::DISC_TYPE_PERCENT];
|
||||
}
|
||||
|
||||
public static function select2DiscountTypes()
|
||||
{
|
||||
return [
|
||||
[
|
||||
"id" => Clients::DISC_TYPE_NO,
|
||||
"name" => "No Discount",
|
||||
],
|
||||
[
|
||||
"id" => Clients::DISC_TYPE_FIX,
|
||||
"name" => "Fix Amount",
|
||||
],
|
||||
[
|
||||
"id" => Clients::DISC_TYPE_PERCENT,
|
||||
"name" => "Percent Amount",
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
43
app/Models/ClientsDivGroups.php
Executable file
43
app/Models/ClientsDivGroups.php
Executable file
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class ClientsDivGroups extends Model
|
||||
{
|
||||
|
||||
const DEFAULT_CID = 1; // swanusa account
|
||||
|
||||
public static function getCDivGroups()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients_div_groups WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getCDivGroupById($c_div_group_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients_div_groups WHERE dlt is null AND id = ? LIMIT 1;", [$c_div_group_id]);
|
||||
}
|
||||
|
||||
public static function getCDivGroupByName($name)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients_div_groups WHERE dlt is null AND name = ? LIMIT 2;", [$name]);
|
||||
}
|
||||
|
||||
public static function addCDivGroup($data)
|
||||
{
|
||||
$c_div_group_id = DB::table("t_clients_div_groups")->insertGetId($data);
|
||||
return $c_div_group_id;
|
||||
}
|
||||
|
||||
public static function updateCDivGroup($c_div_group_id, $data)
|
||||
{
|
||||
return DB::table("t_clients_div_groups")->where("id", $c_div_group_id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteCDivGroup($c_div_group_id)
|
||||
{
|
||||
return DB::table("t_clients_div_groups")->where("id", $c_div_group_id)->delete();
|
||||
}
|
||||
}
|
||||
43
app/Models/ClientsDivs.php
Executable file
43
app/Models/ClientsDivs.php
Executable file
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class ClientsDivs extends Model
|
||||
{
|
||||
|
||||
const DEFAULT_CID = 1; // swanusa account
|
||||
|
||||
public static function getCDivs()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients_divs WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getCDivById($client_div_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients_divs WHERE dlt is null AND id = ? LIMIT 1;", [$client_div_id]);
|
||||
}
|
||||
|
||||
public static function getCDivByName($name)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_clients_divs WHERE dlt is null AND name = ? LIMIT 2;", [$name]);
|
||||
}
|
||||
|
||||
public static function addCDiv($data)
|
||||
{
|
||||
$client_div_id = DB::table("t_clients_divs")->insertGetId($data);
|
||||
return $client_div_id;
|
||||
}
|
||||
|
||||
public static function updateCDiv($client_div_id, $data)
|
||||
{
|
||||
return DB::table("t_clients_divs")->where("id", $client_div_id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteCDiv($client_div_id)
|
||||
{
|
||||
return DB::table("t_clients_divs")->where("id", $client_div_id)->delete();
|
||||
}
|
||||
}
|
||||
149
app/Models/ConfRates.php
Executable file
149
app/Models/ConfRates.php
Executable file
@ -0,0 +1,149 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class ConfRates extends Model
|
||||
{
|
||||
|
||||
const IS_ACTIVE = 1;
|
||||
const IS_INACTIVE = 2;
|
||||
|
||||
const UNIT_DAY = 1;
|
||||
|
||||
const LANE_EARTH = 1;
|
||||
const LANE_SEA = 2;
|
||||
|
||||
const CRT_TYPE_SYSTEM = 0;
|
||||
const CRT_TYPE_ADMIN = 1;
|
||||
|
||||
const defaultSelectedRates = "
|
||||
rates.*
|
||||
,(SELECT name FROM t_conf_lanes WHERE id = rates.lane LIMIT 1) as lane_name
|
||||
,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = rates.origin_prov LIMIT 1) as origin_prov_name
|
||||
,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = rates.origin_city LIMIT 1) as origin_city_name
|
||||
,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = rates.dest_prov LIMIT 1) as dest_prov_name
|
||||
,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = rates.dest_city LIMIT 1) as dest_city_name
|
||||
,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = rates.dest_district LIMIT 1) as dest_district_name
|
||||
,u.first_name as vdr_name,u.email as vdr_mail,vt.name as vhc_type_name
|
||||
";
|
||||
|
||||
public static function listRates()
|
||||
{
|
||||
return DB::select("SELECT "
|
||||
. ConfRates::defaultSelectedRates . "
|
||||
FROM t_conf_rates as rates
|
||||
LEFT JOIN t_users as u ON rates.vdr_id = u.id
|
||||
LEFT JOIN t_vehicles_types as vt ON rates.vhc_type = vt.id
|
||||
WHERE rates.dlt is null;");
|
||||
}
|
||||
|
||||
public static function showRateById($rid)
|
||||
{
|
||||
return DB::select("SELECT "
|
||||
. ConfRates::defaultSelectedRates . "
|
||||
FROM t_conf_rates as rates
|
||||
LEFT JOIN t_users as u ON rates.vdr_id = u.id
|
||||
LEFT JOIN t_vehicles_types as vt ON rates.vhc_type = vt.id
|
||||
WHERE rates.dlt is null AND rates.id = ?
|
||||
LIMIT 1;", [$rid]);
|
||||
}
|
||||
|
||||
public static function getRates()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_conf_rates WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getRateById($rid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_conf_rates WHERE dlt is null AND id = ? LIMIT 1;", [$rid]);
|
||||
}
|
||||
|
||||
public static function getRateByCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_conf_rates WHERE dlt is null AND code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
// // start packing list data
|
||||
// public static function getRateByDestCity($ori_prid, $dest_ktid)
|
||||
// {
|
||||
// return DB::select("SELECT * FROM t_conf_rates WHERE dlt is null AND is_active = " . ConfRates::IS_ACTIVE . " AND vdr_id != 0 AND vhc_type != 0 AND origin_prov = ? AND dest_city = ? GROUP BY long_time,sell_cbm,sell_kg ORDER BY fast_time ASC;", [$ori_prid, $dest_ktid]);
|
||||
// }
|
||||
|
||||
// public static function getRateByDestDistrict($ori_prid, $dest_kcid)
|
||||
// {
|
||||
// return DB::select("SELECT * FROM t_conf_rates WHERE dlt is null AND is_active = " . ConfRates::IS_ACTIVE . " AND vdr_id != 0 AND vhc_type != 0 AND origin_prov = ? AND dest_district = ? GROUP BY long_time,sell_cbm,sell_kg ORDER BY fast_time ASC;", [$ori_prid, $dest_kcid]);
|
||||
// }
|
||||
// // end packing list data
|
||||
|
||||
// // start without packing list data
|
||||
public static function getRateByDestCity($ori_prid, $dest_ktid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_conf_rates WHERE dlt is null AND is_active = " . ConfRates::IS_ACTIVE . " AND vdr_id != 0 AND vhc_type != 0 AND origin_prov = ? AND dest_city = ? GROUP BY long_time,sell_ftl ORDER BY fast_time ASC;", [$ori_prid, $dest_ktid]);
|
||||
}
|
||||
|
||||
public static function getRateByDestDistrict($ori_prid, $dest_kcid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_conf_rates WHERE dlt is null AND is_active = " . ConfRates::IS_ACTIVE . " AND vdr_id != 0 AND vhc_type != 0 AND origin_prov = ? AND dest_district = ? GROUP BY long_time,sell_ftl ORDER BY fast_time ASC;", [$ori_prid, $dest_kcid]);
|
||||
}
|
||||
// // end without packing list data
|
||||
|
||||
public static function getUniqRate($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = '';
|
||||
$where = '';
|
||||
$join = '';
|
||||
|
||||
if (isset($filter['origin_prov_dest_ktid_dest_kcid_vhc_type_sell_ftl_long_time'])) {
|
||||
$where .= ' AND ((origin_prov = ? AND dest_city = ?) OR (origin_prov = ? AND dest_district = ?)) AND vhc_type = ? AND sell_ftl = ? AND long_time = ?';
|
||||
array_push($params, $filter['origin_prov'], $filter['dest_city'], $filter['origin_prov'], $filter['dest_district'], $filter['vhc_type'], $filter['sell_ftl'], $filter['long_time']);
|
||||
}
|
||||
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND rate.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT
|
||||
rate.*
|
||||
$select
|
||||
FROM t_conf_rates as rate
|
||||
$join
|
||||
WHERE rate.dlt is null
|
||||
$where
|
||||
ORDER BY fast_time ASC;", $params);
|
||||
}
|
||||
|
||||
public static function checkVhcType($type_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_conf_rates WHERE dlt is null AND vhc_type = ? LIMIT 1;", [$type_id]);
|
||||
}
|
||||
|
||||
public static function addRate($data)
|
||||
{
|
||||
$rid = DB::table("t_conf_rates")->insertGetId($data);
|
||||
return $rid;
|
||||
}
|
||||
|
||||
public static function updateRate($rid, $data)
|
||||
{
|
||||
return DB::table("t_conf_rates")->where("id", $rid)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteRate($rid)
|
||||
{
|
||||
return DB::table("t_conf_rates")->where("id", $rid)->delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* t_conf_lane
|
||||
*/
|
||||
|
||||
public static function getLanesActive()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_conf_lanes WHERE dlt is null AND is_active = 1;");
|
||||
}
|
||||
}
|
||||
104
app/Models/ConfTruckTypes.php
Executable file
104
app/Models/ConfTruckTypes.php
Executable file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class ConfTruckTypes extends Model
|
||||
{
|
||||
|
||||
const IS_ACTIVE = 1;
|
||||
const IS_INACTIVE = 2;
|
||||
|
||||
const IS_PUBLISH = 1;
|
||||
const IS_UNPUBLISH = 2;
|
||||
|
||||
const defaultSelectedTruckTypes = "
|
||||
tt.*
|
||||
,vt.name as type_name,vt.desc as type_desc
|
||||
";
|
||||
|
||||
public static function listTruckTypes($isActive = 0, $filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$whereIsActive = '';
|
||||
if ($isActive != 0) {
|
||||
$whereIsActive = ' AND vt.is_active = ' . ConfTruckTypes::IS_ACTIVE;
|
||||
}
|
||||
|
||||
if (isset($filter['is_publish'])) {
|
||||
$whereIsActive = ' AND vt.is_publish = ?';
|
||||
$params[] = $filter['is_publish'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT " . ConfTruckTypes::defaultSelectedTruckTypes . " FROM t_conf_truck_types as tt LEFT JOIN t_vehicles_types as vt ON tt.type_id = vt.id WHERE tt.dlt is null " . $whereIsActive . " ;", $params);
|
||||
}
|
||||
|
||||
public static function listTruckTypesRates($isActive = 0, $lane)
|
||||
{
|
||||
$params = [];
|
||||
$params[] = $lane;
|
||||
|
||||
$whereIsActive = '';
|
||||
if ($isActive != 0) {
|
||||
$whereIsActive = ' AND vt.is_active = ' . ConfTruckTypes::IS_ACTIVE;
|
||||
}
|
||||
|
||||
return DB::select("SELECT "
|
||||
. ConfTruckTypes::defaultSelectedTruckTypes . "
|
||||
FROM t_conf_truck_types as tt
|
||||
LEFT JOIN t_vehicles_types as vt ON tt.type_id = vt.id
|
||||
INNER JOIN t_conf_rates as rate ON tt.type_id = rate.vhc_type
|
||||
WHERE tt.dlt is null "
|
||||
. $whereIsActive . "
|
||||
AND rate.lane = ?
|
||||
GROUP BY vhc_type
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function showTruckTypeById($ttid)
|
||||
{
|
||||
return DB::select("SELECT " . ConfTruckTypes::defaultSelectedTruckTypes . " FROM t_conf_truck_types as tt LEFT JOIN t_vehicles_types as vt ON tt.type_id = vt.id WHERE tt.dlt is null AND tt.id = ? LIMIT 1;", [$ttid]);
|
||||
}
|
||||
|
||||
public static function getTruckTypeByName($type_name)
|
||||
{
|
||||
return DB::select("SELECT " . ConfTruckTypes::defaultSelectedTruckTypes . " FROM t_conf_truck_types as tt LEFT JOIN t_vehicles_types as vt ON tt.type_id = vt.id WHERE tt.dlt is null AND vt.name LIKE ? LIMIT 2;", ['%'.$type_name.'%']);
|
||||
}
|
||||
|
||||
public static function addTruckType($data)
|
||||
{
|
||||
$ttid = DB::table("t_conf_truck_types")->insertGetId($data);
|
||||
return $ttid;
|
||||
}
|
||||
|
||||
public static function updateTruckType($ttid, $data)
|
||||
{
|
||||
return DB::table("t_conf_truck_types")->where("id", $ttid)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteTruckType($ttid)
|
||||
{
|
||||
return DB::table("t_conf_truck_types")->where("id", $ttid)->delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* t_vehicles_types
|
||||
*/
|
||||
|
||||
public static function getTypeById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_vehicles_types WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function addTypes($data)
|
||||
{
|
||||
return DB::table("t_vehicles_types")->insertGetId($data);
|
||||
}
|
||||
|
||||
public static function updtTypes($tid, $data)
|
||||
{
|
||||
return DB::table("t_vehicles_types")->where("id", $tid)->update($data);
|
||||
}
|
||||
}
|
||||
65
app/Models/Dana.php
Executable file
65
app/Models/Dana.php
Executable file
@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Dana extends Model
|
||||
{
|
||||
const defaultSelectedDana = "
|
||||
dana.*
|
||||
";
|
||||
|
||||
const PK_ID = 1;
|
||||
const MINIMUM_AMT = 1000000; // 9M
|
||||
|
||||
public static function listDana($filter = [])
|
||||
{
|
||||
$select = ''; $join = ''; $where = ''; $group_by = ''; $order_by = ''; $limit = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['id'])) {
|
||||
$where .= ' AND dana.id = ?';
|
||||
$params[] = $filter['id'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT "
|
||||
. Dana::defaultSelectedDana . "
|
||||
$select
|
||||
FROM t_dana as dana
|
||||
$join
|
||||
WHERE dana.id is not null
|
||||
$where
|
||||
$group_by
|
||||
$order_by
|
||||
$limit
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function getDana()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_dana WHERE id is not null;");
|
||||
}
|
||||
|
||||
public static function getDanaById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_dana WHERE id is not null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function addDana($data)
|
||||
{
|
||||
$pid = DB::table("t_dana")->insertGetId($data);
|
||||
return $pid;
|
||||
}
|
||||
|
||||
public static function updateDana($id, $data)
|
||||
{
|
||||
return DB::table("t_dana")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteDana($id)
|
||||
{
|
||||
return DB::table("t_dana")->where("id", $id)->delete();
|
||||
}
|
||||
}
|
||||
107
app/Models/DataTypes.php
Executable file
107
app/Models/DataTypes.php
Executable file
@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class DataTypes extends Model
|
||||
{
|
||||
|
||||
const IS_INACTIVE = 0;
|
||||
const IS_ACTIVE = 1;
|
||||
|
||||
const defaultSelectedDataTypes = "
|
||||
dtypes.*
|
||||
";
|
||||
|
||||
public static function listDataTypes($filter = [])
|
||||
{
|
||||
$select = ''; $join = ''; $where = ''; $group_by = ''; $order_by = ''; $limit = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND dtypes.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
|
||||
if (isset($filter['group_by'])) $where .= ' GROUP BY ' . $filter['group_by'];
|
||||
if (isset($filter['order_by'])) $where .= ' ORDER BY ' . $filter['order_by'];
|
||||
if (isset($filter['limit'])) $where .= ' LIMIT ' . $filter['limit'];
|
||||
|
||||
return DB::select("SELECT "
|
||||
. DataTypes::defaultSelectedDataTypes . "
|
||||
$select
|
||||
FROM t_datatypes as dtypes
|
||||
$join
|
||||
WHERE dtypes.dlt is null
|
||||
$where
|
||||
$group_by
|
||||
$order_by
|
||||
$limit
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function showDataType($filter = [])
|
||||
{
|
||||
$select = ''; $join = ''; $where = ''; $group_by = ''; $order_by = ''; $limit = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['data_types_id'])) {
|
||||
$where .= ' AND dtypes.id = ?';
|
||||
$params[] = $filter['data_types_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['group_by'])) $where .= ' GROUP BY ' . $filter['group_by'];
|
||||
if (isset($filter['order_by'])) $where .= ' ORDER BY ' . $filter['order_by'];
|
||||
if (isset($filter['limit'])) $where .= ' LIMIT ' . $filter['limit'];
|
||||
|
||||
return DB::select("SELECT "
|
||||
. DataTypes::defaultSelectedDataTypes . "
|
||||
$select
|
||||
FROM t_datatypes as dtypes
|
||||
$join
|
||||
WHERE dtypes.dlt is null
|
||||
$where
|
||||
$group_by
|
||||
$order_by
|
||||
$limit
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function getDataTypes()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_datatypes WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getDataTypeById($data_types_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_datatypes WHERE dlt is null AND id = ? LIMIT 1;", [$data_types_id]);
|
||||
}
|
||||
|
||||
public static function getDataTypeByCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_datatypes WHERE dlt is null AND code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getDataTypeByPckDrop($pck_id, $drop_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_datatypes WHERE dlt is null AND pck_id = ? AND drop_id = ? LIMIT 1;", [$pck_id, $drop_id]);
|
||||
}
|
||||
|
||||
public static function addDataType($data)
|
||||
{
|
||||
$data_types_id = DB::table("t_datatypes")->insertGetId($data);
|
||||
return $data_types_id;
|
||||
}
|
||||
|
||||
public static function updateDataType($data_types_id, $data)
|
||||
{
|
||||
return DB::table("t_datatypes")->where("id", $data_types_id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteDataType($data_types_id)
|
||||
{
|
||||
return DB::table("t_datatypes")->where("id", $data_types_id)->delete();
|
||||
}
|
||||
}
|
||||
110
app/Models/Devices.php
Executable file
110
app/Models/Devices.php
Executable file
@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Devices extends Model
|
||||
{
|
||||
const MAX_DEVICE_ID = 16;
|
||||
|
||||
const TYPE_BUILT_IN = 1;
|
||||
const TYPE_PORTABLE = 2;
|
||||
|
||||
const IS_ACTIVE = 1;
|
||||
const IS_INACTIVE = 2;
|
||||
|
||||
const IS_ASSIGNED = 1;
|
||||
const IS_UNASSIGNED = 2;
|
||||
|
||||
const IS_AVAIL = 1;
|
||||
const IS_UNAVAIL = 2;
|
||||
|
||||
const defaultSelectedDevices = "
|
||||
devices.*,vhc.id as vhc_id,vhc.nopol1 as vhc_nopol1,vhc.nopol2 as vhc_nopol2,vhc.nopol3 as vhc_nopol3
|
||||
";
|
||||
|
||||
public static function listDevices($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$where = '';
|
||||
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND devices.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
|
||||
if (isset($filter['is_available'])) {
|
||||
$where .= ' AND devices.is_available = ?';
|
||||
$params[] = $filter['is_available'];
|
||||
}
|
||||
|
||||
if (isset($filter['type'])) {
|
||||
$where .= ' AND devices.type = ?';
|
||||
$params[] = $filter['type'];
|
||||
}
|
||||
|
||||
if (isset($filter['is_idle_yes'])) {
|
||||
$where .= ' AND vhc.id is null';
|
||||
}
|
||||
|
||||
if (isset($filter['is_idle_no'])) {
|
||||
$where .= ' AND vhc.id is not null';
|
||||
}
|
||||
|
||||
return DB::select("SELECT "
|
||||
. Devices::defaultSelectedDevices . "
|
||||
FROM t_devices as devices
|
||||
LEFT JOIN t_vehicles as vhc ON devices.device_id = vhc.device_id
|
||||
WHERE devices.dlt is null
|
||||
$where
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function showDeviceById($id)
|
||||
{
|
||||
return DB::select("SELECT "
|
||||
. Devices::defaultSelectedDevices . "
|
||||
FROM t_devices as devices
|
||||
LEFT JOIN t_vehicles as vhc ON devices.device_id = vhc.device_id
|
||||
WHERE devices.dlt is null AND devices.id = ?
|
||||
LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getDevices()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_devices WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getDeviceById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_devices WHERE dlt is null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getDeviceByDeviceId($device_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_devices WHERE dlt is null AND device_id = ? LIMIT 1;", [$device_id]);
|
||||
}
|
||||
|
||||
public static function getDeviceBySimcard($simcard)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_devices WHERE dlt is null AND simcard = ? LIMIT 1;", [$simcard]);
|
||||
}
|
||||
|
||||
public static function addDevice($data)
|
||||
{
|
||||
$id = DB::table("t_devices")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updateDevice($id, $data)
|
||||
{
|
||||
return DB::table("t_devices")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteDevice($id)
|
||||
{
|
||||
return DB::table("t_devices")->where("id", $id)->delete();
|
||||
}
|
||||
}
|
||||
318
app/Models/Drivers.php
Executable file
318
app/Models/Drivers.php
Executable file
@ -0,0 +1,318 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Models\Orders;
|
||||
|
||||
class Drivers extends Model
|
||||
{
|
||||
const DEFAULT_PHONE_CODE = 62;
|
||||
|
||||
const STTS_ACTIVE = 1;
|
||||
const STTS_INACTIVE = 2;
|
||||
|
||||
// const IN_ORD_YES = 1;
|
||||
// const IN_ORD_NO = 2;
|
||||
const IN_ORD_YES = 2;
|
||||
const IN_ORD_NO = 1;
|
||||
|
||||
private const defaultSelectDriver = "d.*,dt.*,d.id,d.crt,d.crt_by,d.updt,d.updt_by,d.dlt,d.dlt_by";
|
||||
|
||||
public static function listDrivers($auth, $filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = "";
|
||||
$join = "";
|
||||
$where = "";
|
||||
|
||||
if ($auth->role == Users::ROLE_VENDOR) {
|
||||
$where .= " AND d.vendor_id = " . $auth->uid;
|
||||
}
|
||||
|
||||
if (isset($filter["company"])) {
|
||||
$where .= " AND client.id = ?";
|
||||
$params[] = $filter["company"];
|
||||
}
|
||||
|
||||
// d.nik,d.fullname,d.phone,d.phone_code,d.email,d.dob,d.age,d.gender,d.blood,d.fulladdress,d.crt,d.crt_by,d.updt,d.updt_by,
|
||||
// dt.ktp_img,dt.npwp_img,dt.npwp_number,dt.npwp_string,dt.license_img,dt.license_number,dt.license_exp,dt.em_fullname,dt.em_phone,dt.em_phone_code,dt.em_relationship
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
self::defaultSelectDriver .
|
||||
"
|
||||
,client.c_name as company_name
|
||||
" .
|
||||
$select .
|
||||
"
|
||||
FROM t_drivers as d
|
||||
INNER JOIN t_drivers_detail AS dt ON d.id = dt.did
|
||||
LEFT JOIN t_users AS vdr ON d.vendor_id = vdr.id
|
||||
LEFT JOIN t_clients AS client ON vdr.client_group_id = client.id
|
||||
" .
|
||||
$join .
|
||||
"
|
||||
WHERE d.dlt is null
|
||||
" .
|
||||
$where .
|
||||
"
|
||||
ORDER BY d.id ASC;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function getDrivers($auth, $filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$where_vendor = "";
|
||||
$join_vendor = "";
|
||||
if ($auth->role != Users::ROLE_ADMIN) {
|
||||
$where_vendor .= " AND d.vendor_id = " . $auth->uid;
|
||||
}
|
||||
if (isset($filter["status"])) {
|
||||
$where_vendor .= " AND d.status = ?";
|
||||
array_push($params, $filter["status"]);
|
||||
}
|
||||
return DB::select(
|
||||
"SELECT * FROM t_drivers as d WHERE dlt is null " .
|
||||
$where_vendor .
|
||||
";",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function showDriverById($did)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
self::defaultSelectDriver .
|
||||
"
|
||||
FROM t_drivers AS d
|
||||
INNER JOIN t_drivers_detail AS dt ON d.id = dt.did
|
||||
WHERE d.dlt is null AND d.id = ? LIMIT 1;",
|
||||
[$did]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getDriverById($did)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_drivers WHERE dlt is null AND id = ? LIMIT 1;",
|
||||
[$did]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getDriverByEmail($email)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_drivers WHERE dlt is null AND email = ? LIMIT 2;",
|
||||
[$email]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getDriverByPhone($phone)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_drivers WHERE dlt is null AND phone = ? LIMIT 2;",
|
||||
[$phone]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getDriverByNik($nik)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_drivers WHERE dlt is null AND nik = ? LIMIT 2;",
|
||||
[$nik]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getDriverByIdAllData($did)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT
|
||||
*,d.id as drv_id
|
||||
FROM t_drivers as d
|
||||
INNER JOIN t_drivers_detail as dt ON d.id = dt.did
|
||||
WHERE d.dlt is null
|
||||
AND d.id = ?
|
||||
LIMIT 1;",
|
||||
[$did]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getDriversNoInOrder($auth, $filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$where_vendor = "";
|
||||
$join_vendor = "";
|
||||
if ($auth->role != Users::ROLE_ADMIN) {
|
||||
$where_vendor .= " AND d.vendor_id = " . $auth->uid;
|
||||
}
|
||||
if (isset($filter["status"])) {
|
||||
$where_vendor .= " AND d.status = ?";
|
||||
array_push($params, $filter["status"]);
|
||||
}
|
||||
return DB::select(
|
||||
"SELECT
|
||||
d.*,ord.status as ord_status
|
||||
FROM t_drivers as d
|
||||
LEFT JOIN (SELECT MAX(ord_id) as max_ord_id,drv_id FROM t_orders_drivers GROUP BY drv_id) as ord_drv1 ON (d.id = ord_drv1.drv_id)
|
||||
LEFT JOIN t_orders as ord ON (ord_drv1.max_ord_id = ord.id)
|
||||
WHERE d.dlt is null
|
||||
AND (ord.status is null OR ord.status IN (" .
|
||||
Orders::STTS_CLIENT_PAY .
|
||||
"," .
|
||||
Orders::STTS_VENDOR_PAYED .
|
||||
"," .
|
||||
Orders::STTS_CLOSE .
|
||||
"," .
|
||||
Orders::STTS_CANCEL .
|
||||
"))
|
||||
" .
|
||||
$where_vendor .
|
||||
"
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function getDriversNoInOrderNew($auth, $filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$where_vendor = "";
|
||||
$join_vendor = "";
|
||||
if ($auth->role != Users::ROLE_ADMIN) {
|
||||
$where_vendor .= " AND d.vendor_id = " . $auth->uid;
|
||||
}
|
||||
if (isset($filter["status"])) {
|
||||
$where_vendor .= " AND d.status = ?";
|
||||
array_push($params, $filter["status"]);
|
||||
}
|
||||
return DB::select(
|
||||
"SELECT
|
||||
d.*
|
||||
FROM t_drivers as d
|
||||
WHERE d.dlt is null
|
||||
AND d.is_in_ord = " .
|
||||
Drivers::IN_ORD_NO .
|
||||
"
|
||||
" .
|
||||
$where_vendor .
|
||||
"
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function likeName($name)
|
||||
{
|
||||
$params = ["%" . $name . "%"];
|
||||
|
||||
return DB::select(
|
||||
"SELECT drv.*,drv_dtl.bank_id,drv_dtl.bank_code,drv_dtl.bank_name,drv_dtl.bank_short_name,drv_dtl.bank_branch_name,drv_dtl.bank_acc_number,drv_dtl.bank_acc_name FROM t_drivers as drv INNER JOIN t_drivers_detail as drv_dtl ON drv.id = drv_dtl.did WHERE dlt is null AND fullname LIKE ?;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function addDriver($data)
|
||||
{
|
||||
$did = DB::table("t_drivers")->insertGetId($data);
|
||||
return $did;
|
||||
}
|
||||
|
||||
public static function updateDriver($did, $data)
|
||||
{
|
||||
return DB::table("t_drivers")
|
||||
->where("id", $did)
|
||||
->update($data);
|
||||
}
|
||||
|
||||
public static function deleteDriver($did)
|
||||
{
|
||||
return DB::table("t_drivers")
|
||||
->where("id", $did)
|
||||
->delete();
|
||||
}
|
||||
|
||||
public static function listRelationships()
|
||||
{
|
||||
// ENUM('wife', 'husband', 'sister', 'brother', 'father', 'mother', 'uncle', 'aunt', 'daughter', 'children', 'grandfather', 'grandmother', 'nephew', 'niece', 'family', 'sibling', 'son', 'cousin')
|
||||
return [
|
||||
[
|
||||
"id" => "wife",
|
||||
"name" => "Wife",
|
||||
],
|
||||
[
|
||||
"id" => "husband",
|
||||
"name" => "Husband",
|
||||
],
|
||||
[
|
||||
"id" => "sister",
|
||||
"name" => "Sister",
|
||||
],
|
||||
[
|
||||
"id" => "brother",
|
||||
"name" => "Brother",
|
||||
],
|
||||
[
|
||||
"id" => "father",
|
||||
"name" => "Father",
|
||||
],
|
||||
[
|
||||
"id" => "mother",
|
||||
"name" => "Mother",
|
||||
],
|
||||
[
|
||||
"id" => "uncle",
|
||||
"name" => "Uncle",
|
||||
],
|
||||
[
|
||||
"id" => "aunt",
|
||||
"name" => "Aunt",
|
||||
],
|
||||
[
|
||||
"id" => "cousin",
|
||||
"name" => "Cousin",
|
||||
],
|
||||
[
|
||||
"id" => "daughter",
|
||||
"name" => "Daughter",
|
||||
],
|
||||
[
|
||||
"id" => "son",
|
||||
"name" => "Son",
|
||||
],
|
||||
[
|
||||
"id" => "children",
|
||||
"name" => "Children",
|
||||
],
|
||||
[
|
||||
"id" => "grandfather",
|
||||
"name" => "Grandfather",
|
||||
],
|
||||
[
|
||||
"id" => "grandmother",
|
||||
"name" => "Grandmother",
|
||||
],
|
||||
[
|
||||
"id" => "nephew",
|
||||
"name" => "Nephew",
|
||||
],
|
||||
[
|
||||
"id" => "niece",
|
||||
"name" => "Niece",
|
||||
],
|
||||
[
|
||||
"id" => "family",
|
||||
"name" => "Family",
|
||||
],
|
||||
[
|
||||
"id" => "sibling",
|
||||
"name" => "Sibling",
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
40
app/Models/DriversDetail.php
Executable file
40
app/Models/DriversDetail.php
Executable file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class DriversDetail extends Model
|
||||
{
|
||||
public static function getDetailByDid($did)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_drivers_detail WHERE did = ? LIMIT 1;", [$did]);
|
||||
}
|
||||
|
||||
public static function getDetailById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_drivers_detail WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function addDetail($data)
|
||||
{
|
||||
$id = DB::table("t_drivers_detail")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updateDetailByDid($id, $data)
|
||||
{
|
||||
return DB::table("t_drivers_detail")->where("did", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updateDetail($id, $data)
|
||||
{
|
||||
return DB::table("t_drivers_detail")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteDetail($id)
|
||||
{
|
||||
return DB::table("t_drivers_detail")->where("id", $id)->delete();
|
||||
}
|
||||
}
|
||||
87
app/Models/DrvPhoneDevices.php
Executable file
87
app/Models/DrvPhoneDevices.php
Executable file
@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class DrvPhoneDevices extends Model
|
||||
{
|
||||
// t_phone_devices
|
||||
const IS_INACTIVE = 0;
|
||||
const IS_ACTIVE = 1;
|
||||
|
||||
const IS_LOGOUT = 0;
|
||||
const IS_LOGIN = 1;
|
||||
|
||||
public static function get($filter = [])
|
||||
{
|
||||
$select = '';
|
||||
$where = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['id'])) {
|
||||
$where .= ' AND phn_drv.id = ?';
|
||||
$params[] = $filter['id'];
|
||||
}
|
||||
if (isset($filter['device_id'])) {
|
||||
$where .= ' AND phn_drv.device_id = ?';
|
||||
$params[] = $filter['device_id'];
|
||||
}
|
||||
if (isset($filter['id'])) {
|
||||
$where .= ' AND phn_drv.id = ?';
|
||||
$params[] = $filter['id'];
|
||||
}
|
||||
if (isset($filter['uid'])) {
|
||||
$where .= ' AND phn_drv.uid = ?';
|
||||
$params[] = $filter['uid'];
|
||||
}
|
||||
if (isset($filter['drv_id'])) {
|
||||
$where .= ' AND phn_drv.did = ?';
|
||||
$params[] = $filter['drv_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['is_login'])) {
|
||||
$where .= ' AND phn_drv.is_login = ?';
|
||||
$params[] = $filter['is_login'];
|
||||
}
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND phn_drv.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT
|
||||
phn_drv.*
|
||||
$select
|
||||
FROM t_phone_devices as phn_drv
|
||||
WHERE phn_drv.dlt is null
|
||||
$where
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_phone_devices")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_phone_devices")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdDrvId($did, $data)
|
||||
{
|
||||
return DB::table("t_phone_devices")->where("did", $did)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_phone_devices")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdDrvId($did)
|
||||
{
|
||||
return DB::table("t_phone_devices")->where("did", $did)->delete();
|
||||
}
|
||||
}
|
||||
60
app/Models/Dummy.php
Executable file
60
app/Models/Dummy.php
Executable file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Dummy extends Model
|
||||
{
|
||||
public static function addDummyTrack($data)
|
||||
{
|
||||
$id = DB::table("t_dummy_tracks")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function getByGpsId($gps_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_dummy_tracks WHERE gps_id = ?;", [$gps_id]);
|
||||
}
|
||||
|
||||
public static function updateDummyTrack($data)
|
||||
{
|
||||
return DB::table("t_dummy_tracks")->where("id", $data['id'])->update($data);
|
||||
}
|
||||
|
||||
public static function deleteDummyTrack($data)
|
||||
{
|
||||
return DB::table("t_dummy_tracks")->where("id", $data['id'])->delete();
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
public static function addDummyHub($data)
|
||||
{
|
||||
$id = DB::table("t_dummy_hubs")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
/**
|
||||
* https://stackoverflow.com/questions/574691/mysql-great-circle-distance-haversine-formula
|
||||
* miles: 3958.756 || 3959
|
||||
* km: 6371
|
||||
* meters: 6371000
|
||||
* more accurate using km/meters than miles i think ~ rafifmulia
|
||||
*/
|
||||
public static function nearestHubInCircle($lat, $lng)
|
||||
{
|
||||
$query = "SELECT id,name, ( 6371000 * acos( cos( radians( :lat1 ) ) * cos( radians( lat ) )
|
||||
* cos( radians( lng ) - radians( :lng ) ) + sin( radians( :lat2 ) ) * sin(radians( lat )) ) ) AS distance
|
||||
FROM t_dummy_hubs
|
||||
HAVING distance <= 800
|
||||
ORDER BY distance;";
|
||||
$params = [
|
||||
'lat1' => $lat,
|
||||
'lat2' => $lat,
|
||||
'lng' => $lng,
|
||||
];
|
||||
return DB::select($query, $params);
|
||||
}
|
||||
}
|
||||
621
app/Models/Finance.php
Executable file
621
app/Models/Finance.php
Executable file
@ -0,0 +1,621 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Models\OrdersVendors;
|
||||
use App\Models\Users;
|
||||
use App\Models\Orders;
|
||||
use App\Models\OrdersAItems;
|
||||
use App\Models\OrdersInvoices;
|
||||
|
||||
class Finance extends Model
|
||||
{
|
||||
public static function listBillings($filter = [])
|
||||
{
|
||||
$params = [
|
||||
OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_VDR_NO, OrdersAItems::INVC_TO_CLIENT_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT,
|
||||
OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_VDR_NO, OrdersAItems::INVC_TO_CLIENT_YES, OrdersAItems::IS_PAID_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT,
|
||||
OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_VDR_NO, OrdersAItems::INVC_TO_CLIENT_YES, OrdersAItems::IS_PAID_NO, OrdersAItems::IS_APRV_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT,
|
||||
];
|
||||
$select_order = '';
|
||||
$join_join = '';
|
||||
$where_where = '';
|
||||
$group_by = '';
|
||||
|
||||
if (isset($filter['ord_id'])) {
|
||||
$where_where .= ' AND ord.id = ?';
|
||||
$params[] = $filter['ord_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['start_date']) && isset($filter['end_date'])) {
|
||||
$where_where .= ' AND ord.crt BETWEEN ? AND ?';
|
||||
$params[] = $filter['start_date'];
|
||||
$params[] = $filter['end_date'];
|
||||
}
|
||||
|
||||
if (isset($filter['group_by'])) {
|
||||
$group_by .= ' GROUP BY ' . $filter['group_by'];
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
ord.id as ord_id,ord.code as ord_code,ord.status as ord_status
|
||||
,(SELECT SUM(amt_bill_total_flat) FROM t_orders_a_items WHERE dlt is null AND is_active = ? AND only_vdr = ? AND invc_to_client = ? AND is_bill_aprv = ? AND stts_merge IN (?,?) AND ord_id = ord.id) as total_billing
|
||||
,(SELECT SUM(amt_bill_total_flat) FROM t_orders_a_items WHERE dlt is null AND is_active = ? AND only_vdr = ? AND invc_to_client = ? AND is_bill_paid = ? AND is_bill_aprv = ? AND stts_merge IN (?,?) AND ord_id = ord.id) as total_payed
|
||||
,(SELECT SUM(amt_bill_total_flat) FROM t_orders_a_items WHERE dlt is null AND is_active = ? AND only_vdr = ? AND invc_to_client = ? AND is_bill_paid = ? AND is_bill_aprv = ? AND stts_merge IN (?,?) AND ord_id = ord.id) as total_remaining
|
||||
,ord.is_invc_paid,ord.invc_paid_at
|
||||
,ord_pck.pck_name,ord_pck.set_pck_at,ord_pck.pck_addr
|
||||
,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_pck.pck_prid LIMIT 1) as pck_prid_name
|
||||
,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) as pck_ktid_name
|
||||
-- ,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = ord_pck.pck_kcid LIMIT 1) as pck_kcid_name
|
||||
-- ,(SELECT nmKelurahan FROM t_region WHERE kodeKel = ord_pck.pck_klid LIMIT 1) as pck_klid_name
|
||||
,ord_drop.drop_name,ord_drop.drop_addr
|
||||
,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_drop.drop_prid LIMIT 1) as drop_prid_name
|
||||
,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) as drop_ktid_name
|
||||
-- ,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = ord_drop.drop_kcid LIMIT 1) as drop_kcid_name
|
||||
-- ,(SELECT nmKelurahan FROM t_region WHERE kodeKel = ord_drop.drop_klid LIMIT 1) as drop_klid_name
|
||||
,ord_c.c_name,ord_c.c_pt_name
|
||||
" . $select_order . "
|
||||
FROM t_orders as ord
|
||||
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
||||
INNER JOIN t_orders_pickups as ord_pck ON ord.id = ord_pck.ord_id
|
||||
INNER JOIN t_orders_drops as ord_drop ON ord.id = ord_drop.ord_id
|
||||
" . $join_join . "
|
||||
WHERE ord.dlt is null
|
||||
AND ord.is_active = " . Orders::IS_ACTIVE_YES . "
|
||||
" . $where_where . "
|
||||
" . $group_by . "
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function summaryBillings($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select_order = '';
|
||||
$join_join = '';
|
||||
$where_where = '';
|
||||
// for sum
|
||||
$join_sum = '';
|
||||
$where_sum = '';
|
||||
$params_sum_totbilling = [OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_VDR_NO, OrdersAItems::INVC_TO_CLIENT_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT];
|
||||
$params_sum_totpayed = [OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_VDR_NO, OrdersAItems::INVC_TO_CLIENT_YES, OrdersAItems::IS_PAID_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT];
|
||||
$params_sum_totremaining = [OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_VDR_NO, OrdersAItems::INVC_TO_CLIENT_YES, OrdersAItems::IS_PAID_NO, OrdersAItems::IS_APRV_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT,];
|
||||
|
||||
if (isset($filter['start_date']) && isset($filter['end_date'])) {
|
||||
$join_sum .= ' INNER JOIN t_orders as o ON a.ord_id = o.id';
|
||||
$where_sum .= ' AND o.crt BETWEEN ? AND ?';
|
||||
array_push($params_sum_totbilling, $filter['start_date'], $filter['end_date']);
|
||||
array_push($params_sum_totpayed, $filter['start_date'], $filter['end_date']);
|
||||
array_push($params_sum_totremaining, $filter['start_date'], $filter['end_date']);
|
||||
}
|
||||
|
||||
// php spread operator was invented on 7.2
|
||||
$params_real = array_merge($params_sum_totbilling, $params_sum_totpayed, $params_sum_totremaining, $params);
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
-- (SELECT SUM(price) FROM t_orders WHERE dlt is null AND confirm_client_pay_at != 0) as total_billing
|
||||
-- (SELECT SUM(price) FROM t_orders WHERE dlt is null) as total_billing -- sebelum ada fitur merge
|
||||
(SELECT SUM(amt_bill_total_flat) FROM t_orders_a_items as a $join_sum WHERE a.dlt is null AND a.is_active = ? AND a.only_vdr = ? AND a.invc_to_client = ? AND a.is_bill_aprv = ? AND a.stts_merge IN (?,?) $where_sum) as total_billing
|
||||
,(SELECT SUM(amt_bill_total_flat) FROM t_orders_a_items as a $join_sum WHERE a.dlt is null AND a.is_active = ? AND a.only_vdr = ? AND a.invc_to_client = ? AND a.is_bill_paid = ? AND a.is_bill_aprv = ? AND a.stts_merge IN (?,?) $where_sum) as total_payed
|
||||
,(SELECT SUM(amt_bill_total_flat) FROM t_orders_a_items as a $join_sum WHERE a.dlt is null AND a.is_active = ? AND a.only_vdr = ? AND a.invc_to_client = ? AND a.is_bill_paid = ? AND a.is_bill_aprv = ? AND a.stts_merge IN (?,?) $where_sum) as total_remaining
|
||||
" . $select_order . "
|
||||
FROM t_orders_a_items as ord_a
|
||||
" . $join_join . "
|
||||
WHERE ord_a.dlt is null
|
||||
AND ord_a.is_active = " . OrdersAItems::IS_ACTIVE_YES . "
|
||||
" . $where_where . "
|
||||
LIMIT 1
|
||||
;",
|
||||
$params_real
|
||||
);
|
||||
}
|
||||
|
||||
public static function listPayments($filter = [])
|
||||
{
|
||||
$params = [
|
||||
OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_CLIENT_NO, OrdersAItems::CALC_TO_VDR_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT,
|
||||
OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_CLIENT_NO, OrdersAItems::CALC_TO_VDR_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::IS_PAID_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT,
|
||||
OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_CLIENT_NO, OrdersAItems::CALC_TO_VDR_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::IS_PAID_NO, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT,
|
||||
];
|
||||
$select_order = '';
|
||||
$join_join = '';
|
||||
$where_where = '';
|
||||
$group_by = '';
|
||||
|
||||
if (isset($filter['ord_id'])) {
|
||||
$where_where .= ' AND ord.id = ?';
|
||||
$params[] = $filter['ord_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['start_date']) && isset($filter['end_date'])) {
|
||||
$where_where .= ' AND ord.crt BETWEEN ? AND ?';
|
||||
$params[] = $filter['start_date'];
|
||||
$params[] = $filter['end_date'];
|
||||
}
|
||||
|
||||
if (isset($filter['group_by'])) {
|
||||
$group_by .= ' GROUP BY ' . $filter['group_by'];
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
ord.id as ord_id,ord.code as ord_code,ord.status as ord_status
|
||||
,ord.group_code as ord_group_code
|
||||
,(SELECT SUM(amt_total_flat) FROM t_orders_a_items WHERE dlt is null AND is_active = ? AND only_client = ? AND calc_to_vdr = ? AND is_aprv = ? AND stts_merge IN (?,?) AND ord_id = ord.id) as total_payment
|
||||
,(SELECT SUM(amt_total_flat) FROM t_orders_a_items WHERE dlt is null AND is_active = ? AND only_client = ? AND calc_to_vdr = ? AND is_aprv = ? AND is_paid = ? AND stts_merge IN (?,?) AND ord_id = ord.id) as total_payed
|
||||
,(SELECT SUM(amt_total_flat) FROM t_orders_a_items WHERE dlt is null AND is_active = ? AND only_client = ? AND calc_to_vdr = ? AND is_aprv = ? AND is_paid = ? AND stts_merge IN (?,?) AND ord_id = ord.id) as total_remaining
|
||||
,ord.is_vdr_paid,ord.vdr_paid_at
|
||||
,ord_pck.pck_name,ord_pck.set_pck_at,ord_pck.pck_addr
|
||||
,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_pck.pck_prid LIMIT 1) as pck_prid_name
|
||||
,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) as pck_ktid_name
|
||||
-- ,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = ord_pck.pck_kcid LIMIT 1) as pck_kcid_name
|
||||
-- ,(SELECT nmKelurahan FROM t_region WHERE kodeKel = ord_pck.pck_klid LIMIT 1) as pck_klid_name
|
||||
,ord_drop.drop_name,ord_drop.drop_addr
|
||||
,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_drop.drop_prid LIMIT 1) as drop_prid_name
|
||||
,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) as drop_ktid_name
|
||||
-- ,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = ord_drop.drop_kcid LIMIT 1) as drop_kcid_name
|
||||
-- ,(SELECT nmKelurahan FROM t_region WHERE kodeKel = ord_drop.drop_klid LIMIT 1) as drop_klid_name
|
||||
,ord_c.c_name,ord_c.c_pt_name
|
||||
,ord_vdr.vdr_name,ord_vdr.vdr_pt_name
|
||||
" . $select_order . "
|
||||
FROM t_orders as ord
|
||||
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
||||
INNER JOIN t_orders_pickups as ord_pck ON ord.id = ord_pck.ord_id
|
||||
INNER JOIN t_orders_drops as ord_drop ON ord.id = ord_drop.ord_id
|
||||
INNER JOIN t_orders_vendors as ord_vdr ON ord.id = ord_vdr.ord_id
|
||||
" . $join_join . "
|
||||
WHERE ord.dlt is null
|
||||
AND ord.is_active = " . Orders::IS_ACTIVE_YES . "
|
||||
" . $where_where . "
|
||||
" . $group_by . "
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
// admin bank tetap terkalkulasi
|
||||
// bagaimana caranya main item client tidak tecalc di pembayaran ? where column only_client is no
|
||||
public static function summaryPayments($filter = [])
|
||||
{
|
||||
// general
|
||||
$params = [];
|
||||
$select_order = '';
|
||||
$join_join = '';
|
||||
$where_where = '';
|
||||
// for sum
|
||||
$join_sum = '';
|
||||
$where_sum = '';
|
||||
$params_sum_totpayment = [OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_CLIENT_NO, OrdersAItems::CALC_TO_VDR_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT];
|
||||
$params_sum_totpayed = [OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_CLIENT_NO, OrdersAItems::CALC_TO_VDR_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::IS_PAID_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT];
|
||||
$params_sum_totremaining = [OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_CLIENT_NO, OrdersAItems::CALC_TO_VDR_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::IS_PAID_NO, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT];
|
||||
|
||||
if (isset($filter['start_date']) && isset($filter['end_date'])) {
|
||||
$join_sum .= ' INNER JOIN t_orders as o ON a.ord_id = o.id';
|
||||
$where_sum .= ' AND o.crt BETWEEN ? AND ?';
|
||||
array_push($params_sum_totpayment, $filter['start_date'], $filter['end_date']);
|
||||
array_push($params_sum_totpayed, $filter['start_date'], $filter['end_date']);
|
||||
array_push($params_sum_totremaining, $filter['start_date'], $filter['end_date']);
|
||||
}
|
||||
|
||||
// php spread operator was invented on 7.2
|
||||
$params_real = array_merge($params_sum_totpayment, $params_sum_totpayed, $params_sum_totremaining, $params);
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
-- (SELECT SUM(buy_price) FROM t_orders WHERE dlt is null) as total_payment
|
||||
(SELECT SUM(a.amt_total_flat) FROM t_orders_a_items as a $join_sum WHERE a.dlt is null AND a.is_active = ? AND a.only_client = ? AND a.calc_to_vdr = ? AND a.is_aprv = ? AND a.stts_merge IN (?,?) $where_sum) as total_payment
|
||||
,(SELECT SUM(a.amt_total_flat) FROM t_orders_a_items as a $join_sum WHERE a.dlt is null AND a.is_active = ? AND a.only_client = ? AND a.calc_to_vdr = ? AND a.is_aprv = ? AND a.is_paid = ? AND a.stts_merge IN (?,?) $where_sum) as total_payed
|
||||
,(SELECT SUM(a.amt_total_flat) FROM t_orders_a_items as a $join_sum WHERE a.dlt is null AND a.is_active = ? AND a.only_client = ? AND a.calc_to_vdr = ? AND a.is_aprv = ? AND a.is_paid = ? AND a.stts_merge IN (?,?) $where_sum) as total_remaining
|
||||
" . $select_order . "
|
||||
FROM t_orders_a_items as ord_a
|
||||
" . $join_join . "
|
||||
WHERE ord_a.dlt is null
|
||||
AND ord_a.is_active = " . OrdersAItems::IS_ACTIVE_YES . "
|
||||
" . $where_where . "
|
||||
LIMIT 1
|
||||
;",
|
||||
$params_real
|
||||
);
|
||||
}
|
||||
|
||||
public static function listAdtItemsPayments($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select_order = '';
|
||||
$join_join = '';
|
||||
$where_where = '';
|
||||
$group_by = '';
|
||||
|
||||
if (isset($filter['is_access_by_admin'])) {
|
||||
$where_where .= ' AND crt_type = ?';
|
||||
$params[] = OrdersAItems::CRT_TYPE_ADMIN;
|
||||
}
|
||||
|
||||
if (isset($filter['ord_id'])) {
|
||||
// $where_where .= ' AND ord.id = ?';
|
||||
$where_where .= ' AND ord_a_item.ord_id = ?';
|
||||
$params[] = $filter['ord_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['ord_ids'])) {
|
||||
$binds_ids = "";
|
||||
foreach ($filter['ord_ids'] as $k => $v) {
|
||||
$binds_ids .= "?,";
|
||||
$params[] = $v;
|
||||
}
|
||||
if (substr($binds_ids, -1) === ',') {
|
||||
$binds_ids = substr($binds_ids, 0, -1);
|
||||
}
|
||||
$where_where .= " AND ord_a_item.ord_id IN ($binds_ids)";
|
||||
}
|
||||
|
||||
if (isset($filter['is_aprv'])) {
|
||||
$where_where .= ' AND ord_a_item.is_aprv = ?';
|
||||
$params[] = $filter['is_aprv'];
|
||||
}
|
||||
|
||||
if (isset($filter['get_user_crt'])) {
|
||||
$select_order .= ',ucrt.first_name as ucrt_name';
|
||||
$join_join .= ' LEFT JOIN t_users as ucrt ON ord_a_item.crt_by = ucrt.id';
|
||||
}
|
||||
|
||||
if (isset($filter['get_user_rjct'])) {
|
||||
$select_order .= ',urjct.first_name as urjct_name,urjct_bill.first_name as urjct_bill_name';
|
||||
$join_join .= ' LEFT JOIN t_users as urjct ON ord_a_item.rjct_by = urjct.id';
|
||||
$join_join .= ' LEFT JOIN t_users as urjct_bill ON ord_a_item.rjct_bill_by = urjct_bill.id';
|
||||
}
|
||||
|
||||
$params[] = OrdersAItems::ONLY_CLIENT_NO;
|
||||
$params[] = OrdersAItems::CALC_TO_VDR_YES;
|
||||
$params[] = OrdersAItems::IS_HIDDEN_NO;
|
||||
$params[] = OrdersAItems::STTS_MERGE_NO;
|
||||
$params[] = OrdersAItems::STTS_MERGE_RESULT;
|
||||
|
||||
if (isset($filter['group_by'])) {
|
||||
$group_by .= ' GROUP BY ' . $filter['group_by'];
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
ord_a_item.id as ord_a_item_id,ord_a_item.v_termin_id,ord_a_item.ord_id,ord_a_item.ord_code
|
||||
,ord_a_item.desc,ord_a_item.a_item_type,ord_a_item.crt_type as a_item_crt_type
|
||||
,ord_a_item.crt as a_item_crt_at
|
||||
,ord_a_item.amt_base_flat,ord_a_item.unit_qty,ord_a_item.amt_tax_type,ord_a_item.amt_total_tax_flat,ord_a_item.amt_total_flat
|
||||
,ord_a_item.ddln_pay_at,ord_a_item.ddln_pay_type
|
||||
,ord_a_item.is_paid,ord_a_item.paid_at,ord_a_item.paid_method,ord_a_item.paid_by
|
||||
,ord_a_item.is_bill_paid,ord_a_item.paid_bill_at,ord_a_item.paid_bill_method,ord_a_item.paid_bill_by
|
||||
,ord_a_item.bank_name,ord_a_item.bank_short_name,ord_a_item.bank_acc_number,ord_a_item.bank_acc_name
|
||||
,ord_a_item.invc_to_client
|
||||
,ord_a_item.img_proof_submission
|
||||
,ord_a_item.is_aprv,ord_a_item.rjct_at,ord_a_item.rjct_by,ord_a_item.rjct_bill_at,ord_a_item.rjct_bill_by
|
||||
-- ,ord_a_item.is_merge_to,ord_a_item.merge_to_a_id,ord_a_item.merge_to_ord_id,ord_a_item.merge_to_ord_code,ord_a_item.merge_to_at
|
||||
-- ,ord_a_item.is_merge_from,ord_a_item.merge_from_a_id,ord_a_item.merge_from_ord_id,ord_a_item.merge_from_ord_code,ord_a_item.merge_from_at
|
||||
,ord_a_item.stts_merge,ord_a_item.merge_to_code,ord_a_item.group_merge_code,ord_a_item.merge_at
|
||||
,ord_pck.pck_name,ord_pck.set_pck_at,ord_pck.pck_addr
|
||||
-- ,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_pck.pck_prid LIMIT 1) as pck_prid_name
|
||||
-- ,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) as pck_ktid_name
|
||||
-- ,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = ord_pck.pck_kcid LIMIT 1) as pck_kcid_name
|
||||
-- ,(SELECT nmKelurahan FROM t_region WHERE kodeKel = ord_pck.pck_klid LIMIT 1) as pck_klid_name
|
||||
,ord_drop.drop_name,ord_drop.drop_addr,ord_drop.chk_at as drop_chk_at
|
||||
-- ,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_drop.drop_prid LIMIT 1) as drop_prid_name
|
||||
-- ,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) as drop_ktid_name
|
||||
-- ,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = ord_drop.drop_kcid LIMIT 1) as drop_kcid_name
|
||||
-- ,(SELECT nmKelurahan FROM t_region WHERE kodeKel = ord_drop.drop_klid LIMIT 1) as drop_klid_name
|
||||
,ord_c.c_name,ord_c.c_pt_name
|
||||
" . $select_order . "
|
||||
FROM t_orders_a_items as ord_a_item
|
||||
INNER JOIN t_orders as ord ON ord_a_item.ord_id = ord.id
|
||||
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
||||
INNER JOIN t_orders_pickups as ord_pck ON ord.id = ord_pck.ord_id
|
||||
INNER JOIN t_orders_drops as ord_drop ON ord.id = ord_drop.ord_id
|
||||
" . $join_join . "
|
||||
WHERE ord.dlt is null
|
||||
AND ord_a_item.dlt is null
|
||||
AND ord.is_active = " . Orders::IS_ACTIVE_YES . "
|
||||
AND ord_a_item.is_active = " . OrdersAItems::IS_ACTIVE_YES . "
|
||||
" . $where_where . "
|
||||
AND ord_a_item.only_client = ?
|
||||
AND ord_a_item.calc_to_vdr = ?
|
||||
AND ord_a_item.is_hidden = ?
|
||||
AND ord_a_item.stts_merge IN (?,?)
|
||||
" . $group_by . "
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function listAdtItemsBillings($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select_order = '';
|
||||
$join_join = '';
|
||||
$where_where = '';
|
||||
$group_by = '';
|
||||
|
||||
if (isset($filter['ord_id'])) {
|
||||
$where_where .= ' AND ord.id = ?';
|
||||
$params[] = $filter['ord_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['is_bill_aprv'])) {
|
||||
$where_where .= ' AND ord_a_item.is_bill_aprv = ?';
|
||||
$params[] = $filter['is_bill_aprv'];
|
||||
}
|
||||
|
||||
$params[] = OrdersAItems::ONLY_VDR_NO;
|
||||
$params[] = OrdersAItems::INVC_TO_CLIENT_YES;
|
||||
$params[] = OrdersAItems::IS_HIDDEN_NO;
|
||||
$params[] = OrdersAItems::STTS_MERGE_NO;
|
||||
$params[] = OrdersAItems::STTS_MERGE_RESULT;
|
||||
|
||||
if (isset($filter['group_by'])) {
|
||||
$group_by .= ' GROUP BY ' . $filter['group_by'];
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
ord_a_item.id as ord_a_item_id,ord_a_item.v_termin_id,ord_a_item.ord_id,ord_a_item.ord_code
|
||||
,ord_a_item.desc,ord_a_item.a_item_type,ord_a_item.crt_type as a_item_crt_type
|
||||
,ord_a_item.unit_type,ut.name as unit_type_name,ord_a_item.unit_qty
|
||||
,ord_a_item.amt_bill_base_flat,ord_a_item.unit_qty,ord_a_item.amt_bill_total_flat
|
||||
,ord_a_item.is_paid,ord_a_item.paid_at,ord_a_item.paid_method,ord_a_item.paid_by
|
||||
,ord_a_item.is_bill_paid,ord_a_item.paid_bill_at,ord_a_item.paid_bill_method,ord_a_item.paid_bill_by
|
||||
,ord_termin.id as c_group_termin_id,ord_termin.termin_is_paid,ord_termin.termin_paid_at
|
||||
,ord_termin.sequence as termin_sequence,ord_termin.termin_ddln_type
|
||||
,ord_termin.termin_tax_type,ord_termin.termin_tax_ppn_percent,ord_termin.termin_tax_ppn_flat,ord_termin.termin_tax_pph_percent,ord_termin.termin_tax_pph_flat
|
||||
,ord_termin.amt_bill_confirm,ord_termin.amt_bill_confirm_note
|
||||
,ord_invc.id as invc_id,ord_invc.code as invc_code
|
||||
,ord_invc.amt_disc_type as invc_disc_type,ord_invc.amt_disc_percent as invc_disc_percent,ord_invc.amt_disc_flat as invc_disc_flat
|
||||
,ord_invc.is_gnrt_invc
|
||||
,ord_a_item.is_aprv,ord_a_item.rjct_at,ord_a_item.rjct_by,ord_a_item.rjct_bill_at,ord_a_item.rjct_bill_by
|
||||
,ord_a_item.stts_merge,ord_a_item.merge_to_code,ord_a_item.group_merge_code,ord_a_item.merge_at
|
||||
,ord_pck.pck_name,ord_pck.set_pck_at,ord_pck.pck_addr
|
||||
-- ,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_pck.pck_prid LIMIT 1) as pck_prid_name
|
||||
-- ,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) as pck_ktid_name
|
||||
-- ,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = ord_pck.pck_kcid LIMIT 1) as pck_kcid_name
|
||||
-- ,(SELECT nmKelurahan FROM t_region WHERE kodeKel = ord_pck.pck_klid LIMIT 1) as pck_klid_name
|
||||
,ord_drop.drop_name,ord_drop.drop_addr,ord_drop.chk_at as drop_chk_at
|
||||
-- ,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_drop.drop_prid LIMIT 1) as drop_prid_name
|
||||
-- ,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) as drop_ktid_name
|
||||
-- ,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = ord_drop.drop_kcid LIMIT 1) as drop_kcid_name
|
||||
-- ,(SELECT nmKelurahan FROM t_region WHERE kodeKel = ord_drop.drop_klid LIMIT 1) as drop_klid_name
|
||||
,ord_c.c_id,ord_c.c_name,ord_c.c_pt_id,ord_c.c_pt_name
|
||||
" . $select_order . "
|
||||
FROM t_orders_a_items as ord_a_item
|
||||
INNER JOIN t_orders as ord ON ord_a_item.ord_id = ord.id
|
||||
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
||||
INNER JOIN t_orders_pickups as ord_pck ON ord.id = ord_pck.ord_id
|
||||
INNER JOIN t_orders_drops as ord_drop ON ord.id = ord_drop.ord_id
|
||||
INNER JOIN t_orders_termins as ord_termin ON ord_a_item.c_termin_id = ord_termin.id
|
||||
LEFT JOIN t_orders_invoices as ord_invc ON ord_termin.id = ord_invc.c_termin_id
|
||||
LEFT JOIN t_unit_types as ut ON ord_a_item.unit_type = ut.id
|
||||
" . $join_join . "
|
||||
WHERE ord.dlt is null
|
||||
AND ord_a_item.dlt is null
|
||||
AND ord.is_active = " . Orders::IS_ACTIVE_YES . "
|
||||
AND ord_a_item.is_active = " . OrdersAItems::IS_ACTIVE_YES . "
|
||||
" . $where_where . "
|
||||
AND only_vdr = ?
|
||||
AND invc_to_client = ?
|
||||
AND ord_a_item.is_hidden = ?
|
||||
AND ord_a_item.stts_merge IN (?,?)
|
||||
" . $group_by . "
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function listLedgerBl($filter = [])
|
||||
{
|
||||
$params = [
|
||||
OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_VDR_NO, OrdersAItems::INVC_TO_CLIENT_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::IS_PAID_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT,
|
||||
OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_CLIENT_NO, OrdersAItems::CALC_TO_VDR_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::IS_PAID_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT,
|
||||
];
|
||||
$select_order = '';
|
||||
$join_join = '';
|
||||
$where_where = '';
|
||||
$group_by = '';
|
||||
|
||||
if (isset($filter['ord_id'])) {
|
||||
$where_where .= ' AND ord.id = ?';
|
||||
$params[] = $filter['ord_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['with_items'])) {
|
||||
$select_order .= "
|
||||
,ord_a_item.id as ord_a_item_id
|
||||
,ord_a_item.a_item_type,ord_a_item.desc as item_desc,ord_a_item.unit_type,unit_type.name as unit_type_name,ord_a_item.unit_qty
|
||||
,ord_a_item.amt_base_flat,ord_a_item.amt_result_flat,ord_a_item.amt_total_flat
|
||||
,ord_a_item.amt_bill_base_flat,ord_a_item.amt_bill_result_flat,ord_a_item.amt_bill_total_flat
|
||||
,ord_a_item.is_paid,ord_a_item.paid_at,ord_a_item.is_bill_paid,ord_a_item.paid_bill_at
|
||||
,ord_a_item.invc_to_client,ord_a_item.calc_to_vdr,ord_a_item.is_adm_price,ord_a_item.only_client,ord_a_item.only_vdr,ord_a_item.is_hidden,ord_a_item.is_tax,ord_a_item.is_disc
|
||||
,ord_a_item.is_aprv,ord_a_item.is_bill_aprv
|
||||
";
|
||||
$join_join .= "
|
||||
INNER JOIN t_orders_a_items as ord_a_item ON ord.id = ord_a_item.ord_id
|
||||
LEFT JOIN t_unit_types as unit_type ON ord_a_item.unit_type = unit_type.id
|
||||
";
|
||||
// perlu diperbaiki cara if di query, jika kalkulasi ke vendor maka is_aprv = , jika ke client is_bill_aprv = 1
|
||||
$where_where .= ' AND ord_a_item.dlt is null AND (ord_a_item.calc_to_vdr = ' . OrdersAItems::CALC_TO_VDR_YES . ' OR ord_a_item.invc_to_client = ' . OrdersAItems::INVC_TO_CLIENT_YES . ') AND (ord_a_item.is_aprv = ' . OrdersAItems::IS_APRV_YES . ' OR ord_a_item.is_bill_aprv = ' . OrdersAItems::IS_APRV_YES . ')';
|
||||
}
|
||||
|
||||
if (isset($filter['start_date']) && isset($filter['end_date'])) {
|
||||
$where_where .= ' AND ord.crt BETWEEN ? AND ?';
|
||||
$params[] = $filter['start_date'];
|
||||
$params[] = $filter['end_date'];
|
||||
}
|
||||
|
||||
if (isset($filter['group_by'])) {
|
||||
$group_by .= ' GROUP BY ' . $filter['group_by'];
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
ord.id as ord_id,ord.code as ord_code,ord.status as ord_status
|
||||
,@total_in:=(SELECT SUM(amt_bill_total_flat) FROM t_orders_a_items WHERE dlt is null AND is_active = ? AND only_vdr = ? AND invc_to_client = ? AND is_bill_aprv = ? AND is_bill_paid = ? AND stts_merge IN (?,?) AND ord_id = ord.id) as total_in
|
||||
,@total_out:=(SELECT SUM(amt_total_flat) FROM t_orders_a_items WHERE dlt is null AND is_active = ? AND only_client = ? AND calc_to_vdr = ? AND is_aprv = ? AND is_paid = ? AND stts_merge IN (?,?) AND ord_id = ord.id) as total_out
|
||||
,(IFNULL(@total_in, 0) - IFNULL(@total_out, 0)) as total_bl
|
||||
,ord_pck.pck_name,ord_pck.set_pck_at,ord_pck.pck_addr
|
||||
,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_pck.pck_prid LIMIT 1) as pck_prid_name
|
||||
,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) as pck_ktid_name
|
||||
-- ,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = ord_pck.pck_kcid LIMIT 1) as pck_kcid_name
|
||||
-- ,(SELECT nmKelurahan FROM t_region WHERE kodeKel = ord_pck.pck_klid LIMIT 1) as pck_klid_name
|
||||
,ord_drop.drop_name,ord_drop.drop_addr
|
||||
,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_drop.drop_prid LIMIT 1) as drop_prid_name
|
||||
,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) as drop_ktid_name
|
||||
-- ,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = ord_drop.drop_kcid LIMIT 1) as drop_kcid_name
|
||||
-- ,(SELECT nmKelurahan FROM t_region WHERE kodeKel = ord_drop.drop_klid LIMIT 1) as drop_klid_name
|
||||
,ord_c.c_name,ord_c.c_pt_name
|
||||
,ord_vdr.vdr_name,ord_vdr.vdr_pt_name
|
||||
" . $select_order . "
|
||||
FROM t_orders as ord
|
||||
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
||||
INNER JOIN t_orders_pickups as ord_pck ON ord.id = ord_pck.ord_id
|
||||
INNER JOIN t_orders_drops as ord_drop ON ord.id = ord_drop.ord_id
|
||||
INNER JOIN t_orders_vendors as ord_vdr ON ord.id = ord_vdr.ord_id
|
||||
" . $join_join . "
|
||||
WHERE ord.dlt is null
|
||||
AND ord.is_active = " . Orders::IS_ACTIVE_YES . "
|
||||
" . $where_where . "
|
||||
" . $group_by . "
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function summaryLedgerBl($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select_order = '';
|
||||
$join_join = '';
|
||||
$where_where = '';
|
||||
// for sum
|
||||
$join_sum = '';
|
||||
$where_sum = '';
|
||||
$params_sum_totin = [OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_VDR_NO, OrdersAItems::INVC_TO_CLIENT_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::IS_PAID_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT];
|
||||
$params_sum_totout = [OrdersAItems::IS_ACTIVE_YES, OrdersAItems::ONLY_CLIENT_NO, OrdersAItems::CALC_TO_VDR_YES, OrdersAItems::IS_APRV_YES, OrdersAItems::IS_PAID_YES, OrdersAItems::STTS_MERGE_NO, OrdersAItems::STTS_MERGE_RESULT];
|
||||
|
||||
if (isset($filter['start_date']) && isset($filter['end_date'])) {
|
||||
$join_sum .= ' INNER JOIN t_orders as o ON a.ord_id = o.id';
|
||||
$where_sum .= ' AND o.crt BETWEEN ? AND ?';
|
||||
array_push($params_sum_totin, $filter['start_date'], $filter['end_date']);
|
||||
array_push($params_sum_totout, $filter['start_date'], $filter['end_date']);
|
||||
}
|
||||
|
||||
// php spread operator was invented on 7.2
|
||||
$params_real = array_merge($params_sum_totin, $params_sum_totout, $params);
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
@total_in:=(SELECT SUM(amt_bill_total_flat) FROM t_orders_a_items as a $join_sum WHERE a.dlt is null AND a.is_active = ? AND a.only_vdr = ? AND a.invc_to_client = ? AND a.is_bill_aprv = ? AND a.is_bill_paid = ? AND a.stts_merge IN (?,?) $where_sum) as total_in
|
||||
,@total_out:=(SELECT SUM(amt_total_flat) FROM t_orders_a_items as a $join_sum WHERE a.dlt is null AND a.is_active = ? AND a.only_client = ? AND a.calc_to_vdr = ? AND a.is_aprv = ? AND a.is_paid = ? AND a.stts_merge IN (?,?) $where_sum) as total_out
|
||||
,(IFNULL(@total_in, 0) - IFNULL(@total_out, 0)) as total_bl
|
||||
" . $select_order . "
|
||||
FROM t_orders_a_items as ord_a
|
||||
" . $join_join . "
|
||||
WHERE ord_a.dlt is null
|
||||
AND ord_a.is_active = " . OrdersAItems::IS_ACTIVE_YES . "
|
||||
" . $where_where . "
|
||||
LIMIT 1
|
||||
;",
|
||||
$params_real
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Baru saja pembayaran dilunaskan baik dari client / vendor
|
||||
* false => error
|
||||
* 0 => not paid, 1 => just paid off, 2 => paid off
|
||||
*/
|
||||
public static function checkJustPaidOff($ord_id)
|
||||
{
|
||||
$order = Orders::showOrder(['id' => $ord_id]);
|
||||
if (count($order) < 1 || $order === false) return false;
|
||||
$out = [
|
||||
'invc_paid' => 0,
|
||||
'vdr_paid' => 0,
|
||||
'invc_vdr_paid' => 0,
|
||||
];
|
||||
$currentBill = Finance::listBillings(['ord_id' => $ord_id]);
|
||||
$currentPay = Finance::listPayments(['ord_id' => $ord_id]);
|
||||
// paid off
|
||||
if ($currentBill[0]->total_billing === $currentBill[0]->total_payed || $currentPay[0]->total_payment === $currentPay[0]->total_payed) {
|
||||
if ($currentBill[0]->total_billing === $currentBill[0]->total_payed) {
|
||||
// just paid off
|
||||
if ($order[0]->is_invc_paid !== Orders::IS_PAID_YES) {
|
||||
$out['invc_paid'] = 1;
|
||||
} else {
|
||||
$out['invc_paid'] = 2;
|
||||
}
|
||||
}
|
||||
if ($currentPay[0]->total_payment === $currentPay[0]->total_payed) {
|
||||
// just paid off
|
||||
if ($order[0]->is_vdr_paid !== Orders::IS_PAID_YES) {
|
||||
$out['vdr_paid'] = 1;
|
||||
} else {
|
||||
$out['vdr_paid'] = 2;
|
||||
}
|
||||
}
|
||||
if ($currentBill[0]->total_billing === $currentBill[0]->total_payed && $currentPay[0]->total_payment === $currentPay[0]->total_payed) {
|
||||
// just paid off
|
||||
if ($out['invc_paid'] === 1 || $out['vdr_paid'] === 1) {
|
||||
$out['invc_vdr_paid'] = 1;
|
||||
} else {
|
||||
$out['invc_vdr_paid'] = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
|
||||
public static function updtChangeInvc($c_termin_id)
|
||||
{
|
||||
$ord_invc = OrdersInvoices::getByTerminId($c_termin_id);
|
||||
if ($ord_invc !== false && count($ord_invc) > 0) {
|
||||
OrdersInvoices::updt($ord_invc[0]->id, [
|
||||
'is_gnrt_invc' => OrdersInvoices::IS_GNRT_INVC_NO,
|
||||
]);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function availOrdToMerge($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = '';
|
||||
$join = '';
|
||||
$where = '';
|
||||
$group_by = '';
|
||||
|
||||
$where .= ' AND ord.stts_merge IN (?,?)';
|
||||
$params[] = OrdersAItems::STTS_MERGE_NO;
|
||||
$params[] = OrdersAItems::STTS_MERGE_RESULT;
|
||||
|
||||
if (isset($filter['except_ord_id'])) {
|
||||
$where .= ' AND ord.id = ?';
|
||||
$params[] = $filter['except_ord_id'];
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
ord.*
|
||||
" . $select . "
|
||||
FROM t_orders as ord
|
||||
" . $join . "
|
||||
WHERE ord.dlt is null
|
||||
AND ord.stts_merge = " . Orders::STTS_MERGE_NO . "
|
||||
" . $where . "
|
||||
ORDER BY ord.id DESC
|
||||
" . $group_by . "
|
||||
LIMIT 100
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
}
|
||||
65
app/Models/Insurances.php
Executable file
65
app/Models/Insurances.php
Executable file
@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Insurances extends Model
|
||||
{
|
||||
|
||||
const IS_ACTIVE = 1;
|
||||
const IS_INACTIVE = 2;
|
||||
|
||||
const defaultSelectedInsurances = "
|
||||
insurances.*
|
||||
";
|
||||
|
||||
public static function listInsurances()
|
||||
{
|
||||
return DB::select("SELECT "
|
||||
. Insurances::defaultSelectedInsurances . "
|
||||
FROM t_insurances as insurances
|
||||
WHERE insurances.dlt is null;");
|
||||
}
|
||||
|
||||
public static function showInsuranceById($iid)
|
||||
{
|
||||
return DB::select("SELECT "
|
||||
. Insurances::defaultSelectedInsurances . "
|
||||
FROM t_insurances as insurances
|
||||
WHERE insurances.dlt is null AND insurances.id = ?
|
||||
LIMIT 1;", [$iid]);
|
||||
}
|
||||
|
||||
public static function getInsurances()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_insurances WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getInsuranceById($iid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_insurances WHERE dlt is null AND id = ? LIMIT 1;", [$iid]);
|
||||
}
|
||||
|
||||
public static function getInsurancesByRangeBeneficiaryAndActive($price)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_insurances WHERE dlt is null AND is_active = " . Insurances::IS_ACTIVE . " AND ((premi_min_price >= ? AND premi_max_price <= ?) OR (premi_min_price <= ? AND premi_max_price >= ?)) ORDER BY premi_price DESC;", [$price, $price, $price, $price]);
|
||||
}
|
||||
|
||||
public static function addInsurance($data)
|
||||
{
|
||||
$iid = DB::table("t_insurances")->insertGetId($data);
|
||||
return $iid;
|
||||
}
|
||||
|
||||
public static function updateInsurance($iid, $data)
|
||||
{
|
||||
return DB::table("t_insurances")->where("id", $iid)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteInsurance($iid)
|
||||
{
|
||||
return DB::table("t_insurances")->where("id", $iid)->delete();
|
||||
}
|
||||
}
|
||||
106
app/Models/LogbookKeys.php
Executable file
106
app/Models/LogbookKeys.php
Executable file
@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class LogbookKeys extends Model
|
||||
{
|
||||
const IS_INACTIVE = 0;
|
||||
const IS_ACTIVE = 1;
|
||||
|
||||
const defaultSelectedLgbKeys = "
|
||||
lgb_key.*
|
||||
";
|
||||
|
||||
public static function listLgbKeys($filter = [])
|
||||
{
|
||||
$select = ''; $join = ''; $where = ''; $group_by = ''; $order_by = ''; $limit = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND lgb_key.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
|
||||
if (isset($filter['group_by'])) $where .= ' GROUP BY ' . $filter['group_by'];
|
||||
if (isset($filter['order_by'])) $where .= ' ORDER BY ' . $filter['order_by'];
|
||||
if (isset($filter['limit'])) $where .= ' LIMIT ' . $filter['limit'];
|
||||
|
||||
return DB::select("SELECT "
|
||||
. LogbookKeys::defaultSelectedLgbKeys . "
|
||||
$select
|
||||
FROM t_lgb_keys as lgb_key
|
||||
$join
|
||||
WHERE lgb_key.dlt is null
|
||||
$where
|
||||
$group_by
|
||||
$order_by
|
||||
$limit
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function showLgbKey($filter = [])
|
||||
{
|
||||
$select = ''; $join = ''; $where = ''; $group_by = ''; $order_by = ''; $limit = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['lgb_key_id'])) {
|
||||
$where .= ' AND lgb_key.id = ?';
|
||||
$params[] = $filter['lgb_key_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['group_by'])) $where .= ' GROUP BY ' . $filter['group_by'];
|
||||
if (isset($filter['order_by'])) $where .= ' ORDER BY ' . $filter['order_by'];
|
||||
if (isset($filter['limit'])) $where .= ' LIMIT ' . $filter['limit'];
|
||||
|
||||
return DB::select("SELECT "
|
||||
. LogbookKeys::defaultSelectedLgbKeys . "
|
||||
$select
|
||||
FROM t_lgb_keys as lgb_key
|
||||
$join
|
||||
WHERE lgb_key.dlt is null
|
||||
$where
|
||||
$group_by
|
||||
$order_by
|
||||
$limit
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function getLgbKeys()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_lgb_keys WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getLgbKeyById($lgb_key_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_lgb_keys WHERE dlt is null AND id = ? LIMIT 1;", [$lgb_key_id]);
|
||||
}
|
||||
|
||||
public static function getLgbKeyByCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_lgb_keys WHERE dlt is null AND code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getLgbKeyByPckDrop($pck_id, $drop_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_lgb_keys WHERE dlt is null AND pck_id = ? AND drop_id = ? LIMIT 1;", [$pck_id, $drop_id]);
|
||||
}
|
||||
|
||||
public static function addLgbKey($data)
|
||||
{
|
||||
$lgb_key_id = DB::table("t_lgb_keys")->insertGetId($data);
|
||||
return $lgb_key_id;
|
||||
}
|
||||
|
||||
public static function updateLgbKey($lgb_key_id, $data)
|
||||
{
|
||||
return DB::table("t_lgb_keys")->where("id", $lgb_key_id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteLgbKey($lgb_key_id)
|
||||
{
|
||||
return DB::table("t_lgb_keys")->where("id", $lgb_key_id)->delete();
|
||||
}
|
||||
}
|
||||
107
app/Models/LogbookTypes.php
Executable file
107
app/Models/LogbookTypes.php
Executable file
@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class LogbookTypes extends Model
|
||||
{
|
||||
|
||||
const IS_INACTIVE = 0;
|
||||
const IS_ACTIVE = 1;
|
||||
|
||||
const defaultSelectedLgbTypes = "
|
||||
lgb_type.*
|
||||
";
|
||||
|
||||
public static function listLgbTypes($filter = [])
|
||||
{
|
||||
$select = ''; $join = ''; $where = ''; $group_by = ''; $order_by = ''; $limit = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND lgb_type.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
|
||||
if (isset($filter['group_by'])) $where .= ' GROUP BY ' . $filter['group_by'];
|
||||
if (isset($filter['order_by'])) $where .= ' ORDER BY ' . $filter['order_by'];
|
||||
if (isset($filter['limit'])) $where .= ' LIMIT ' . $filter['limit'];
|
||||
|
||||
return DB::select("SELECT "
|
||||
. LogbookTypes::defaultSelectedLgbTypes . "
|
||||
$select
|
||||
FROM t_lgb_types as lgb_type
|
||||
$join
|
||||
WHERE lgb_type.dlt is null
|
||||
$where
|
||||
$group_by
|
||||
$order_by
|
||||
$limit
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function showLgbType($filter = [])
|
||||
{
|
||||
$select = ''; $join = ''; $where = ''; $group_by = ''; $order_by = ''; $limit = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['lgb_type_id'])) {
|
||||
$where .= ' AND lgb_type.id = ?';
|
||||
$params[] = $filter['lgb_type_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['group_by'])) $where .= ' GROUP BY ' . $filter['group_by'];
|
||||
if (isset($filter['order_by'])) $where .= ' ORDER BY ' . $filter['order_by'];
|
||||
if (isset($filter['limit'])) $where .= ' LIMIT ' . $filter['limit'];
|
||||
|
||||
return DB::select("SELECT "
|
||||
. LogbookTypes::defaultSelectedLgbTypes . "
|
||||
$select
|
||||
FROM t_lgb_types as lgb_type
|
||||
$join
|
||||
WHERE lgb_type.dlt is null
|
||||
$where
|
||||
$group_by
|
||||
$order_by
|
||||
$limit
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function getLgbTypes()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_lgb_types WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getLgbTypeById($lgb_type_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_lgb_types WHERE dlt is null AND id = ? LIMIT 1;", [$lgb_type_id]);
|
||||
}
|
||||
|
||||
public static function getLgbTypeByCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_lgb_types WHERE dlt is null AND code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getLgbTypeByPckDrop($pck_id, $drop_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_lgb_types WHERE dlt is null AND pck_id = ? AND drop_id = ? LIMIT 1;", [$pck_id, $drop_id]);
|
||||
}
|
||||
|
||||
public static function addLgbType($data)
|
||||
{
|
||||
$lgb_type_id = DB::table("t_lgb_types")->insertGetId($data);
|
||||
return $lgb_type_id;
|
||||
}
|
||||
|
||||
public static function updateLgbType($lgb_type_id, $data)
|
||||
{
|
||||
return DB::table("t_lgb_types")->where("id", $lgb_type_id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteLgbType($lgb_type_id)
|
||||
{
|
||||
return DB::table("t_lgb_types")->where("id", $lgb_type_id)->delete();
|
||||
}
|
||||
}
|
||||
635
app/Models/Orders.php
Executable file
635
app/Models/Orders.php
Executable file
@ -0,0 +1,635 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Models\OrdersVendors;
|
||||
use App\Models\Users;
|
||||
|
||||
class Orders extends Model
|
||||
{
|
||||
const ONE_KG_ONE_CBM = 1328;
|
||||
|
||||
const TYPE_FCL = 1;
|
||||
const TYPE_LCL = 2;
|
||||
|
||||
const STTS_WAIT = 1;
|
||||
const STTS_CONFIRM = 21;
|
||||
const STTS_HAVE_GET_VHC = 22;
|
||||
const STTS_PCK = 2;
|
||||
const STTS_GO = 3;
|
||||
const STTS_ARV = 4;
|
||||
const STTS_DROP = 5;
|
||||
const STTS_CLIENT_PAY = 6;
|
||||
const STTS_VENDOR_PAYED = 8;
|
||||
const STTS_CLOSE = 10;
|
||||
const STTS_CANCEL = 11;
|
||||
|
||||
const IS_FIX_PRICE_NO = 0;
|
||||
const IS_FIX_PRICE_YES = 1;
|
||||
|
||||
const CANCEL_TYPE_IGNORE = 1;
|
||||
const CANCEL_TYPE_CLIENT = 2;
|
||||
const CANCEL_TYPE_VDR_NOT_READY = 3;
|
||||
|
||||
const IS_ACCIDENT_NO = 0;
|
||||
const IS_ACCIDENT_YES = 1;
|
||||
|
||||
const CHK_STTS_WAITING = 0;
|
||||
const CHK_STTS_HAS_PICKUP = 1;
|
||||
const CHK_STTS_HAS_DROP = 3;
|
||||
|
||||
const IS_PAID_NO = 0;
|
||||
const IS_PAID_YES = 1;
|
||||
|
||||
const IS_ACTIVE_NO = 0;
|
||||
const IS_ACTIVE_YES = 1;
|
||||
|
||||
const CRT_TYPE_ORDER_CLIENT = 1; // normal_via_client;
|
||||
const CRT_TYPE_ORDER_ADMIN = 2; // normal_via_admin;
|
||||
const CRT_TYPE_ORDER_ADMIN_SPECIAL = 3; // special_via_admin;
|
||||
|
||||
// merge per trx
|
||||
const STTS_MERGE_NO = 0;
|
||||
const STTS_MERGE_TO = 1;
|
||||
const STTS_MERGE_RESULT = 2;
|
||||
|
||||
/**
|
||||
* column merge disini untuk merge per trx
|
||||
*/
|
||||
|
||||
const defaultSelectedOrders = "
|
||||
ord.*
|
||||
,ord.id as ord_id,ord.code as ord_code
|
||||
,ord_pck.pck_name,ord_pck.stts_pck,ord_pck.pck_addr
|
||||
,ord_drop.drop_name,ord_drop.stts_drop,ord_drop.drop_addr
|
||||
,ord_c.c_name
|
||||
,ord_vdr.vdr_name
|
||||
,ord_drv.drv_name
|
||||
,ord_vhc.vhc_id,ord_vhc.vhc_name,ord_vhc.vhc_nopol1,ord_vhc.vhc_nopol2,ord_vhc.vhc_nopol3
|
||||
,ord_rate.id as ord_rate_id
|
||||
";
|
||||
const defaultWhereOrders = "
|
||||
WHERE ord.dlt is null
|
||||
";
|
||||
|
||||
const defaultSelectedOrdersDetail = "
|
||||
ord.*
|
||||
,ord.id as ord_id,ord.code as ord_code
|
||||
,ord_pck.id as ord_pck_id,ord_pck.pck_id as ord_pck_zone_id,ord_pck.pck_name,ord_pck.pck_addr,ord_pck.set_pck_at,ord_pck.pck_at,ord_pck.pck_enter_at,ord_pck.pck_leave_at
|
||||
,ord_drop.id as ord_drop_id,ord_drop.drop_id as ord_drop_zone_id,ord_drop.drop_name,ord_drop.drop_addr,ord_drop.drop_at,ord_drop.drop_enter_at,ord_drop.drop_leave_at
|
||||
,ord_c.id as ord_client_id,ord_c.c_id,ord_c.c_name,ord_c.c_phone_code,ord_c.c_phone_val,ord_c.c_mail,ord_c.prefer_truck_type
|
||||
,ord_vdr.id as ord_vdr_id,ord_vdr.vdr_id,ord_vdr.vdr_name,ord_vdr.vdr_phone_code,ord_vdr.vdr_phone_val,ord_vdr.vdr_mail,ord_vdr.vdr_addr,ord_vdr.status as vdr_status,ord_vdr.respond_at as vdr_respond_at,ord_vdr.crt as vdr_crt,ord_vdr.is_pkp as is_vdr_pkp
|
||||
,ord_drv.drv_id,ord_drv.drv_name,ord_drv.drv_phone_code,ord_drv.drv_phone_val,ord_drv.drv_name2,ord_drv.drv_phone2_val,ord_drv.drv_mail,ord_drv.drv_addr
|
||||
,ord_vhc.vhc_id,ord_vhc.vhc_name,ord_vhc.vhc_nopol1,ord_vhc.vhc_nopol2,ord_vhc.vhc_nopol3
|
||||
,ord_rate.id as ord_rate_id,ord_rate.buy_ftl
|
||||
";
|
||||
const defaultWhereOrdersDetail = "
|
||||
WHERE ord.dlt is null
|
||||
";
|
||||
|
||||
public static function listOrders($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select_order = "";
|
||||
$join_join = "";
|
||||
$where_where = "";
|
||||
$group_by = "";
|
||||
$order_by = "";
|
||||
|
||||
if (isset($filter["client_id"])) {
|
||||
$where_where .= " AND ord_c.c_id = ? ";
|
||||
array_push($params, $filter["client_id"]);
|
||||
}
|
||||
|
||||
if (isset($filter["client_pt_id"])) {
|
||||
$where_where .= " AND ord_c.c_pt_id = ? ";
|
||||
array_push($params, $filter["client_pt_id"]);
|
||||
}
|
||||
|
||||
if (isset($filter["vendor_id"])) {
|
||||
$where_where .= " AND ord_vdr.vdr_id = ? ";
|
||||
$where_where .= " AND ord_vdr.status = " . OrdersVendors::STTS_ACC;
|
||||
array_push($params, $filter["vendor_id"]);
|
||||
}
|
||||
|
||||
if (isset($filter["get_stts_checker"])) {
|
||||
$select_order .=
|
||||
" ,ord_pck.chk_id as pck_chk_id,ord_pck.chk_at as pck_chk_at,ord_pck.chk_stts as pck_chk_stts";
|
||||
$select_order .=
|
||||
" ,ord_drop.chk_id as drop_chk_id,ord_drop.chk_at as drop_chk_at,ord_drop.chk_stts as drop_chk_stts";
|
||||
}
|
||||
if (isset($filter["chk_id"])) {
|
||||
if ($filter["chk_type"] == Users::CHK_TYPE_PICKUP) {
|
||||
$where_where .= " AND (ord_pck.chk_id = ? OR ord_pck.chk_id = 0) ";
|
||||
array_push($params, $filter["chk_id"]);
|
||||
} elseif ($filter["chk_type"] == Users::CHK_TYPE_DROP) {
|
||||
$where_where .= " AND (ord_drop.chk_id = ? OR ord_drop.chk_id = 0) ";
|
||||
array_push($params, $filter["chk_id"]);
|
||||
}
|
||||
}
|
||||
if (isset($filter["order_open"])) {
|
||||
$where_where .= " AND ord.status IN (?,?,?,?,?,?,?,?) ";
|
||||
array_push(
|
||||
$params,
|
||||
Orders::STTS_WAIT,
|
||||
Orders::STTS_WAIT,
|
||||
Orders::STTS_CONFIRM,
|
||||
Orders::STTS_HAVE_GET_VHC,
|
||||
Orders::STTS_GO,
|
||||
Orders::STTS_PCK,
|
||||
Orders::STTS_ARV,
|
||||
Orders::STTS_DROP,
|
||||
);
|
||||
}
|
||||
|
||||
if (isset($filter["ready_checker"])) {
|
||||
$where_where .= " AND ord.status IN (?,?,?,?,?,?,?,?) ";
|
||||
array_push(
|
||||
$params,
|
||||
Orders::STTS_HAVE_GET_VHC,
|
||||
Orders::STTS_GO,
|
||||
Orders::STTS_PCK,
|
||||
Orders::STTS_ARV,
|
||||
Orders::STTS_DROP,
|
||||
Orders::STTS_CLIENT_PAY,
|
||||
Orders::STTS_VENDOR_PAYED,
|
||||
Orders::STTS_CLOSE,
|
||||
);
|
||||
}
|
||||
|
||||
if (isset($filter["client_id_active_orders"])) {
|
||||
$where_where .= " AND ord_c.c_id = ? AND ord.status IN (?,?,?,?,?) ";
|
||||
array_push(
|
||||
$params,
|
||||
$filter["client_id_active_orders"],
|
||||
Orders::STTS_HAVE_GET_VHC,
|
||||
Orders::STTS_GO,
|
||||
Orders::STTS_PCK,
|
||||
Orders::STTS_ARV,
|
||||
Orders::STTS_DROP,
|
||||
);
|
||||
}
|
||||
if (isset($filter["is_accident"])) {
|
||||
$where_where .= " AND ord.is_accident = ? ";
|
||||
array_push($params, $filter["is_accident"]);
|
||||
}
|
||||
|
||||
if (isset($filter["couple_pck_drop"])) {
|
||||
$select_order .=
|
||||
" ,ord_pck_drop.id as ord_pck_drop_id,ord_pck_drop.stts as stts_delivery,ord_pck_drop.is_aprv_pck,ord_pck_drop.aprv_pck_at";
|
||||
$join_join .= " INNER JOIN t_orders_pck_drop as ord_pck_drop ON ord.id = ord_pck_drop.ord_id";
|
||||
$join_join .= " INNER JOIN t_orders_pickups as ord_pck ON ord_pck_drop.pck_id = ord_pck.id";
|
||||
$join_join .= " INNER JOIN t_orders_drops as ord_drop ON ord_pck_drop.drop_id = ord_drop.id";
|
||||
|
||||
if (isset($filter["ord_pck_drop_id"])) {
|
||||
$where_where .= " AND ord_pck_drop.id = ?";
|
||||
array_push($params, $filter["ord_pck_drop_id"]);
|
||||
}
|
||||
} else {
|
||||
$join_join .= " INNER JOIN t_orders_pickups as ord_pck ON ord.id = ord_pck.ord_id";
|
||||
$join_join .= " INNER JOIN t_orders_drops as ord_drop ON ord.id = ord_drop.ord_id";
|
||||
}
|
||||
|
||||
if (isset($filter["join_pockets"])) {
|
||||
$select_order .=
|
||||
" ,ord_pocket.pocket_id,ord_pocket.pocket_type,ord_pocket.id as ord_pocket_id,ord_pocket.pocket_name";
|
||||
$join_join .= " INNER JOIN t_orders_pockets as ord_pocket ON ord.id = ord_pocket.ord_id";
|
||||
}
|
||||
|
||||
// $group_by .= ' GROUP BY ord.group_code';
|
||||
if (isset($filter["group_by"])) {
|
||||
$group_by .= " GROUP BY " . $filter["group_by"];
|
||||
}
|
||||
if (isset($filter["order_by"])) {
|
||||
$order_by .= " ORDER BY " . $filter["order_by"];
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
Orders::defaultSelectedOrders .
|
||||
"
|
||||
" .
|
||||
$select_order .
|
||||
"
|
||||
FROM t_orders as ord
|
||||
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
||||
LEFT JOIN t_orders_rates as ord_rate ON ord.id = ord_rate.ord_id
|
||||
LEFT JOIN ( SELECT MIN(respond_at) as respond_at,ord_id,vdr_id FROM t_orders_vendors WHERE status = " .
|
||||
OrdersVendors::STTS_ACC .
|
||||
" GROUP BY ord_id ) AS ord_vdr1 ON (ord.id = ord_vdr1.ord_id)
|
||||
LEFT JOIN t_orders_vendors as ord_vdr ON ( ord_vdr.respond_at = ord_vdr1.respond_at)
|
||||
LEFT JOIN t_orders_drivers as ord_drv ON ord.id = ord_drv.ord_id
|
||||
LEFT JOIN t_orders_vehicles as ord_vhc ON ord.id = ord_vhc.ord_id
|
||||
" .
|
||||
$join_join .
|
||||
"
|
||||
" .
|
||||
Orders::defaultWhereOrders .
|
||||
"
|
||||
" .
|
||||
$where_where .
|
||||
"
|
||||
" .
|
||||
$group_by .
|
||||
"
|
||||
" .
|
||||
$order_by .
|
||||
"
|
||||
;",
|
||||
$params,
|
||||
);
|
||||
}
|
||||
|
||||
public static function showOrder($filter)
|
||||
{
|
||||
$params = [];
|
||||
$select_order = "";
|
||||
$where_order = "";
|
||||
$join_order = "";
|
||||
$group_by = "";
|
||||
|
||||
if (isset($filter["id"])) {
|
||||
$where_order .= " AND ord.id = ? ";
|
||||
array_push($params, $filter["id"]);
|
||||
} elseif (isset($filter["code"])) {
|
||||
$where_order .= " AND ord.code = ? ";
|
||||
array_push($params, $filter["code"]);
|
||||
} elseif (isset($filter["codes"])) {
|
||||
$binds_codes = "";
|
||||
foreach ($filter["codes"] as $k => $v) {
|
||||
$binds_codes .= "?,";
|
||||
$params[] = $v;
|
||||
}
|
||||
if (substr($binds_codes, -1) === ",") {
|
||||
$binds_codes = substr($binds_codes, 0, -1);
|
||||
}
|
||||
$where_order .= " AND ord.code IN ($binds_codes)";
|
||||
} elseif (isset($filter["group_merge_code"])) {
|
||||
$where_order .= " AND ord.group_merge_code IN (?)";
|
||||
$params[] = $filter["group_merge_code"];
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($filter["center_pck"])) {
|
||||
$select_order .= ",ST_AsText(ST_Centroid(pck_points)) as pck_center";
|
||||
}
|
||||
|
||||
if (isset($filter["get_prefer_type_truck"])) {
|
||||
$select_order .= ",tt.name as prefer_truck_type_name";
|
||||
$join_order .= " LEFT JOIN t_vehicles_types as tt ON ord_c.prefer_truck_type = tt.id";
|
||||
}
|
||||
|
||||
if (isset($filter["get_additional_vehicles_info"])) {
|
||||
$select_order .=
|
||||
",ord_vhc.vhc_type_id, tt2.name as vhc_type_name, ord_vhc.vhc_brand_id, tb.name as vhc_brand_name";
|
||||
$join_order .= " LEFT JOIN t_vehicles_types as tt2 ON ord_vhc.vhc_type_id = tt2.id";
|
||||
$join_order .= " LEFT JOIN t_vehicles_brands as tb ON ord_vhc.vhc_brand_id = tb.id";
|
||||
}
|
||||
|
||||
if (isset($filter["get_zone_data"])) {
|
||||
$select_order .=
|
||||
",ord_pck.pck_hex_color,ord_pck.pck_shape,ord_pck.pck_radius,ord_pck.pck_bounds,ord_pck.pck_latlngs,ST_AsText(ST_Centroid(pck_points)) as pck_center";
|
||||
$select_order .=
|
||||
",ord_drop.drop_hex_color,ord_drop.drop_shape,ord_drop.drop_radius,ord_drop.drop_bounds,ord_drop.drop_latlngs,ST_AsText(ST_Centroid(drop_points)) as drop_center";
|
||||
}
|
||||
|
||||
if (isset($filter["get_zone_zonasi"])) {
|
||||
$select_order .=
|
||||
",(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_pck.pck_prid LIMIT 1) as pck_prid_name ,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) as pck_ktid_name";
|
||||
$select_order .=
|
||||
",(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = ord_drop.drop_prid LIMIT 1) as drop_prid_name ,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) as drop_ktid_name";
|
||||
}
|
||||
|
||||
if (isset($filter["get_pic_zone"])) {
|
||||
$select_order .=
|
||||
",ord_pck.pic_name as pck_pic_name,ord_pck.pic_phone_code as pck_pic_phone_code,ord_pck.pic_phone_val as pck_pic_phone_val,ord_pck.pic_mail as pck_pic_mail";
|
||||
$select_order .=
|
||||
",ord_drop.pic_name as drop_pic_name,ord_drop.pic_phone_code as drop_pic_phone_code,ord_drop.pic_phone_val as drop_pic_phone_val,ord_drop.pic_mail as drop_pic_mail";
|
||||
}
|
||||
if (isset($filter["get_client_pt"])) {
|
||||
$select_order .=
|
||||
",ord_c.c_pt_id,ord_c.c_pt_name,ord_c.c_pt_phone_code,ord_c.c_pt_phone_val,ord_c.c_pt_mail,ord_c.c_pt_addr";
|
||||
$select_order .=
|
||||
",ord_c.c_pt_pic_name,ord_c.c_pt_pic_phone_code,ord_c.c_pt_pic_phone_val,ord_c.c_pt_pic_mail,ord_c.c_pt_pic_addr";
|
||||
}
|
||||
|
||||
if (isset($filter["get_exp_vendor"])) {
|
||||
$select_order .= ",ord_vdr.is_exp as vdr_is_exp,ord_vdr.exp_at as vdr_exp_at";
|
||||
}
|
||||
if (isset($filter["vdr_id"])) {
|
||||
$select_order .= ",ord_vdr.find_vhcs";
|
||||
$where_order .= " AND ord_vdr.vdr_id = ?";
|
||||
array_push($params, $filter["vdr_id"]);
|
||||
$join_order .= " LEFT JOIN t_orders_vendors as ord_vdr ON ord.id = ord_vdr.ord_id";
|
||||
} else {
|
||||
$join_order .=
|
||||
"
|
||||
LEFT JOIN ( SELECT MIN(respond_at) as respond_at,ord_id,vdr_id FROM t_orders_vendors WHERE status = " .
|
||||
OrdersVendors::STTS_ACC .
|
||||
" GROUP BY ord_id ) AS ord_vdr1 ON (ord.id = ord_vdr1.ord_id)
|
||||
LEFT JOIN t_orders_vendors as ord_vdr ON ( ord_vdr.respond_at = ord_vdr1.respond_at)
|
||||
";
|
||||
}
|
||||
|
||||
if (isset($filter["get_drv_bank"])) {
|
||||
$select_order .=
|
||||
",ord_drv.drv_bank_id,ord_drv.drv_bank_code,ord_drv.drv_bank_name,ord_drv.drv_bank_short_name,ord_drv.drv_bank_branch_name,ord_drv.drv_bank_acc_number,ord_drv.drv_bank_acc_name";
|
||||
}
|
||||
if (isset($filter["get_vdr_bank"])) {
|
||||
$select_order .=
|
||||
",ord_vdr.vdr_bank_id,ord_vdr.vdr_bank_code,ord_vdr.vdr_bank_name,ord_vdr.vdr_bank_short_name,ord_vdr.vdr_bank_acc_number,ord_vdr.vdr_bank_acc_name";
|
||||
}
|
||||
|
||||
if (isset($filter["get_stts_checker"])) {
|
||||
$select_order .=
|
||||
" ,ord_pck.chk_id as pck_chk_id,ord_pck.chk_at as pck_chk_at,ord_pck.chk_stts as pck_chk_stts";
|
||||
$select_order .=
|
||||
" ,ord_drop.chk_id as drop_chk_id,ord_drop.chk_at as drop_chk_at,ord_drop.chk_stts as drop_chk_stts";
|
||||
}
|
||||
if (isset($filter["chk_id"])) {
|
||||
if ($filter["chk_type"] == Users::CHK_TYPE_PICKUP) {
|
||||
$where_order .= " AND (ord_pck.chk_id = ? OR ord_pck.chk_id = 0) ";
|
||||
array_push($params, $filter["chk_id"]);
|
||||
} elseif ($filter["chk_type"] == Users::CHK_TYPE_DROP) {
|
||||
$where_order .= " AND (ord_drop.chk_id = ? OR ord_drop.chk_id = 0) ";
|
||||
array_push($params, $filter["chk_id"]);
|
||||
}
|
||||
}
|
||||
if (isset($filter["get_checker_user"])) {
|
||||
$select_order .=
|
||||
" ,ord_pck.chk_name as pck_chk_name,ord_pck.chk_mail as pck_chk_mail,ord_pck.chk_phone_val as pck_chk_phone_val";
|
||||
$select_order .=
|
||||
" ,ord_drop.chk_name as drop_chk_name,ord_drop.chk_mail as drop_chk_mail,ord_drop.chk_phone_val as drop_chk_phone_val";
|
||||
}
|
||||
|
||||
if (isset($filter["get_bid_info"])) {
|
||||
$select_order .=
|
||||
" ,ord_vdr.is_mailing_bid,ord_vdr.is_mailing_bid_at,ord_vdr.is_want,ord_vdr.is_want_at";
|
||||
}
|
||||
|
||||
// get img pickup and drop
|
||||
if (isset($filter["get_checker_data"])) {
|
||||
$select_order .=
|
||||
" ,ord_pck.chk_seal_number as ord_pck_seal_number,ord_pck.chk_seal_img as ord_pck_seal_img,ord_pck.chk_drv_armd_img as ord_pck_drv_armd_img,ord_pck.chk_nopol_img as ord_pck_nopol_img,ord_pck.chk_docs_client_img as ord_pck_docs_client_img,ord_pck.chk_seal_install_img as ord_pck_seal_install_img,ord_pck.chk_goods_img as ord_pck_goods_img";
|
||||
$select_order .=
|
||||
" ,ord_drop.chk_arrived_img as ord_drop_arrived_img,ord_drop.chk_handover_img as ord_drop_handover_img,ord_drop.chk_do_ttd_img as ord_drop_do_ttd_img,ord_drop.chk_spk_img as ord_drop_spk_img";
|
||||
}
|
||||
|
||||
if (isset($filter["get_accidents"])) {
|
||||
$select_order .=
|
||||
",ord_acdnt.id as ord_acdnt_id,ord_acdnt.accident_location as ord_acdnt_location,ord_acdnt.accident_story as ord_acdnt_story,ord_acdnt.accident_imgs as ord_acdnt_imgs";
|
||||
$select_order .=
|
||||
",ord_acdnt.new_nopol1 as ord_acdnt_new_nopol1,ord_acdnt.new_nopol2 as ord_acdnt_new_nopol2,ord_acdnt.new_nopol3 as ord_acdnt_new_nopol3,ord_acdnt.new_vhc_type_id as ord_acdnt_new_vhc_type_id";
|
||||
$select_order .= ",tt3.name as ord_acdnt_new_vhc_type_name";
|
||||
$select_order .=
|
||||
",ord_acdnt.new_drv_name as ord_acdnt_new_drv_name,ord_acdnt.new_drv_phone_code as ord_acdnt_new_drv_phone_code,ord_acdnt.new_drv_phone_val as ord_acdnt_new_drv_phone_val";
|
||||
$select_order .= ",ord_acdnt.crt as ord_acdnt_crt_at,ord_acdnt.updt as ord_acdnt_updt_at";
|
||||
$join_order .= " LEFT JOIN t_orders_accidents as ord_acdnt ON ord.id = ord_acdnt.ord_id";
|
||||
$join_order .= " LEFT JOIN t_vehicles_types as tt3 ON ord_vhc.vhc_type_id = tt3.id";
|
||||
}
|
||||
|
||||
if (isset($filter["select_region_pck_drop"])) {
|
||||
$select_order .=
|
||||
",(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) pck_ktname, (SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) drop_ktname";
|
||||
}
|
||||
|
||||
if (isset($filter["couple_pck_drop"])) {
|
||||
$select_order .=
|
||||
" ,ord_pck_drop.id as ord_pck_drop_id,ord_pck_drop.stts as stts_delivery,ord_pck_drop.is_aprv_pck,ord_pck_drop.aprv_pck_at";
|
||||
$join_order .= " INNER JOIN t_orders_pck_drop as ord_pck_drop ON ord.id = ord_pck_drop.ord_id";
|
||||
$join_order .= " INNER JOIN t_orders_pickups as ord_pck ON ord_pck_drop.pck_id = ord_pck.id";
|
||||
$join_order .= " INNER JOIN t_orders_drops as ord_drop ON ord_pck_drop.drop_id = ord_drop.id";
|
||||
|
||||
if (isset($filter["ord_pck_drop_id"])) {
|
||||
$where_order .= " AND ord_pck_drop.id = ?";
|
||||
array_push($params, $filter["ord_pck_drop_id"]);
|
||||
}
|
||||
if (isset($filter["get_user_aprv_pck"])) {
|
||||
$select_order .=
|
||||
" ,(SELECT first_name FROM t_users WHERE id = ord_pck_drop.aprv_pck_by LIMIT 1) as aprv_pck_by_name";
|
||||
}
|
||||
} else {
|
||||
$join_order .= " INNER JOIN t_orders_pickups as ord_pck ON ord.id = ord_pck.ord_id";
|
||||
$join_order .= " INNER JOIN t_orders_drops as ord_drop ON ord.id = ord_drop.ord_id";
|
||||
}
|
||||
|
||||
if (isset($filter["join_pockets"])) {
|
||||
$select_order .=
|
||||
" ,ord_pocket.pocket_id,ord_pocket.pocket_type,ord_pocket.id as ord_pocket_id,ord_pocket.pocket_name";
|
||||
$join_order .= " INNER JOIN t_orders_pockets as ord_pocket ON ord.id = ord_pocket.ord_id";
|
||||
}
|
||||
|
||||
if (isset($filter["group_by"])) {
|
||||
$group_by .= " GROUP BY " . $filter["group_by"];
|
||||
}
|
||||
|
||||
if (!isset($filter["limit"])) {
|
||||
$filter["limit"] = 1;
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
Orders::defaultSelectedOrdersDetail .
|
||||
"
|
||||
" .
|
||||
$select_order .
|
||||
"
|
||||
FROM t_orders as ord
|
||||
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
||||
LEFT JOIN t_orders_rates as ord_rate ON ord.id = ord_rate.ord_id
|
||||
LEFT JOIN t_orders_drivers as ord_drv ON ord.id = ord_drv.ord_id
|
||||
LEFT JOIN t_orders_vehicles as ord_vhc ON ord.id = ord_vhc.ord_id
|
||||
" .
|
||||
$join_order .
|
||||
"
|
||||
" .
|
||||
Orders::defaultWhereOrdersDetail .
|
||||
"
|
||||
" .
|
||||
$where_order .
|
||||
"
|
||||
" .
|
||||
$group_by .
|
||||
"
|
||||
LIMIT " .
|
||||
$filter["limit"] .
|
||||
";",
|
||||
$params,
|
||||
);
|
||||
}
|
||||
|
||||
public static function getOrders()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getOrdersClientActive($client_id)
|
||||
{
|
||||
$stts =
|
||||
Orders::STTS_WAIT .
|
||||
"," .
|
||||
Orders::STTS_CONFIRM .
|
||||
"," .
|
||||
Orders::STTS_HAVE_GET_VHC .
|
||||
"," .
|
||||
Orders::STTS_PCK .
|
||||
"," .
|
||||
Orders::STTS_GO .
|
||||
"," .
|
||||
Orders::STTS_ARV .
|
||||
"," .
|
||||
Orders::STTS_DROP;
|
||||
return DB::select(
|
||||
"SELECT
|
||||
ord.*,ord_c.*
|
||||
,ord_c.pay_at as client_pay_at,ord_c.is_pay as client_is_pay
|
||||
FROM t_orders as ord
|
||||
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
||||
WHERE ord.dlt is null AND ord.status IN (?) AND ord_c.c_id = ?;",
|
||||
[$stts, $client_id],
|
||||
);
|
||||
}
|
||||
|
||||
public static function getOrdersByClient($client_id, $limit = 1000)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT
|
||||
ord.*,ord_c.*
|
||||
,ord_c.pay_at as client_pay_at,ord_c.is_pay as client_is_pay
|
||||
FROM t_orders as ord
|
||||
INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id
|
||||
WHERE ord.dlt is null AND ord_c.c_id = ?
|
||||
LIMIT ?;",
|
||||
[$client_id, $limit],
|
||||
);
|
||||
}
|
||||
|
||||
public static function getOrderById($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders WHERE dlt is null AND id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function getOrderByCode($ordcode)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders WHERE dlt is null AND code = ? LIMIT 1;", [$ordcode]);
|
||||
}
|
||||
|
||||
// special case utk generate order code tanpa where dlt is null
|
||||
public static function getOrderLikeCode($ordcode)
|
||||
{
|
||||
// return DB::select("SELECT COUNT(id) as total FROM t_orders WHERE dlt is null AND code LIKE ? LIMIT 1;", [$ordcode.'%']);
|
||||
return DB::select("SELECT COUNT(id) as total FROM t_orders WHERE code LIKE ? LIMIT 1;", [
|
||||
$ordcode . "%",
|
||||
]);
|
||||
}
|
||||
|
||||
public static function getPoints($filter)
|
||||
{
|
||||
$params = [];
|
||||
$select = "";
|
||||
$join = "";
|
||||
$where = "";
|
||||
$limit = "";
|
||||
|
||||
if (isset($filter["id"])) {
|
||||
$where .= " AND ord.id = ? ";
|
||||
array_push($params, $filter["id"]);
|
||||
} elseif (isset($filter["code"])) {
|
||||
$where .= " AND ord.code = ? ";
|
||||
array_push($params, $filter["code"]);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($filter["point_id"])) {
|
||||
$where .= " AND topd.id = ? ";
|
||||
array_push($params, $filter["point_id"]);
|
||||
}
|
||||
|
||||
if (isset($filter["center_pck"])) {
|
||||
$select .= ",ST_AsText(ST_Centroid(pck_points)) as pck_center";
|
||||
}
|
||||
|
||||
if (isset($filter["get_zone_data"])) {
|
||||
$select .=
|
||||
",ord_pck.pck_hex_color,ord_pck.pck_shape,ord_pck.pck_radius,ord_pck.pck_bounds,ord_pck.pck_latlngs,ST_AsText(ST_Centroid(pck_points)) as pck_center";
|
||||
$select .=
|
||||
",ord_drop.drop_hex_color,ord_drop.drop_shape,ord_drop.drop_radius,ord_drop.drop_bounds,ord_drop.drop_latlngs,ST_AsText(ST_Centroid(drop_points)) as drop_center";
|
||||
}
|
||||
|
||||
if (isset($filter["get_pic_zone"])) {
|
||||
$select .=
|
||||
",ord_pck.pic_name as pck_pic_name,ord_pck.pic_phone_code as pck_pic_phone_code,ord_pck.pic_phone_val as pck_pic_phone_val,ord_pck.pic_mail as pck_pic_mail";
|
||||
$select .=
|
||||
",ord_drop.pic_name as drop_pic_name,ord_drop.pic_phone_code as drop_pic_phone_code,ord_drop.pic_phone_val as drop_pic_phone_val,ord_drop.pic_mail as drop_pic_mail";
|
||||
}
|
||||
|
||||
if (isset($filter["select_region_pck_drop"])) {
|
||||
$select .=
|
||||
",(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) pck_ktname, (SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) drop_ktname";
|
||||
}
|
||||
|
||||
if (isset($filter["limit"])) {
|
||||
$limit .= " LIMIT " . $filter["limit"];
|
||||
}
|
||||
|
||||
// -- total_pck must be equal to total_drop
|
||||
return DB::select(
|
||||
"SELECT
|
||||
ord.*
|
||||
,ord.id as ord_id,ord.code as ord_code
|
||||
,ord_pck.id as ord_pck_id,ord_pck.pck_id as ord_pck_zone_id,ord_pck.pck_name,ord_pck.pck_addr,ord_pck.set_pck_at,ord_pck.pck_at,ord_pck.pck_enter_at,ord_pck.pck_leave_at
|
||||
,ord_drop.id as ord_drop_id,ord_drop.drop_id as ord_drop_zone_id,ord_drop.drop_name,ord_drop.drop_addr,ord_drop.drop_at,ord_drop.drop_enter_at,ord_drop.drop_leave_at
|
||||
,topd.id as point_id
|
||||
" .
|
||||
$select .
|
||||
"
|
||||
FROM t_orders as ord
|
||||
LEFT JOIN t_orders_pck_drop topd ON
|
||||
topd.ord_id = ord.id
|
||||
LEFT JOIN t_orders_pickups as ord_pck ON
|
||||
topd.pck_id = ord_pck.id
|
||||
LEFT JOIN t_orders_drops as ord_drop ON
|
||||
topd.drop_id = ord_drop.id
|
||||
" .
|
||||
$join .
|
||||
"
|
||||
" .
|
||||
Orders::defaultWhereOrdersDetail .
|
||||
"
|
||||
" .
|
||||
$where .
|
||||
"
|
||||
" .
|
||||
$limit .
|
||||
"
|
||||
",
|
||||
$params,
|
||||
);
|
||||
}
|
||||
|
||||
public static function addOrder($data)
|
||||
{
|
||||
$ordid = DB::table("t_orders")->insertGetId($data);
|
||||
return $ordid;
|
||||
}
|
||||
|
||||
public static function updateOrder($ordid, $data)
|
||||
{
|
||||
return DB::table("t_orders")
|
||||
->where("id", $ordid)
|
||||
->update($data);
|
||||
}
|
||||
|
||||
public static function deleteOrder($ordid)
|
||||
{
|
||||
return DB::table("t_orders")
|
||||
->where("id", $ordid)
|
||||
->delete();
|
||||
}
|
||||
}
|
||||
397
app/Models/OrdersAItems.php
Executable file
397
app/Models/OrdersAItems.php
Executable file
@ -0,0 +1,397 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersAItems extends Model
|
||||
{
|
||||
// t_orders_a_items fungsinya untuk nalangin pembayaran
|
||||
|
||||
const FLOW_TYPE_PAYMENT = 1;
|
||||
const FLOW_TYPE_BILLING = 2;
|
||||
const FLOW_TYPE_HYBRID = 3;
|
||||
|
||||
const TYPE_CASH_OUT = 1;
|
||||
const TYPE_CASH_IN = 2;
|
||||
const TYPE_CASH_HYBRID = 3;
|
||||
|
||||
const A_TYPE_PRIMARY = 1;
|
||||
const A_TYPE_SECONDARY = 2;
|
||||
|
||||
const AMT_TYPE_FLAT = 1;
|
||||
const AMT_TYPE_PERCENT = 2;
|
||||
|
||||
// 1=>refer ddln_pay_at, 2=>refer to order finish(pengantaran selesai)
|
||||
const DDLN_PAY_TYPE_TIME = 1;
|
||||
const DDLN_PAY_TYPE_ORD_FINISH = 2;
|
||||
|
||||
const IS_PAID_NO = 0;
|
||||
const IS_PAID_YES = 1;
|
||||
|
||||
const IS_HIDDEN_NO = 0;
|
||||
const IS_HIDDEN_YES = 1;
|
||||
|
||||
// tax yang berlaku utk 1 row saja
|
||||
const IS_TAX_NO = 0;
|
||||
const IS_TAX_YES = 1;
|
||||
|
||||
const IS_DISC_NO = 0;
|
||||
const IS_DISC_YES = 1;
|
||||
|
||||
const IS_SUBTRACT_NO = 0;
|
||||
const IS_SUBTRACT_YES = 1;
|
||||
|
||||
// 1=>transfer
|
||||
const PAID_TYPE_TF = 1;
|
||||
|
||||
const INVC_TO_CLIENT_YES = 1;
|
||||
const INVC_TO_CLIENT_NO = 2;
|
||||
|
||||
const CALC_TO_VDR_YES = 1;
|
||||
const CALC_TO_VDR_NO = 2;
|
||||
|
||||
const ONLY_CLIENT_YES = 1;
|
||||
const ONLY_CLIENT_NO = 2;
|
||||
|
||||
const ONLY_VDR_YES = 1;
|
||||
const ONLY_VDR_NO = 2;
|
||||
|
||||
const IS_ADM_PRICE_NO = 0;
|
||||
const IS_ADM_PRICE_YES = 1;
|
||||
|
||||
const IS_APRV_NO = 0;
|
||||
const IS_APRV_YES = 1;
|
||||
|
||||
const IS_ACTIVE_NO = 0;
|
||||
const IS_ACTIVE_YES = 1;
|
||||
|
||||
// tax yang include dengan itemnya
|
||||
const AMT_TAX_TYPE_WITHOUT = 0; // tanpa pajak
|
||||
const AMT_TAX_TYPE_INCLUDE = 1; // termasuk pajak || pajak dibayarkan sendiri oleh (client/vendor)
|
||||
const AMT_TAX_TYPE_EXCLUDE = 2; // belum termasuk pajak || pajak dibayarkan oleh bonceng
|
||||
const PPN_PERCENT = 1.1;
|
||||
const PPN_PERCENT_INCLUDE = 1.011;
|
||||
const PPH_PERCENT = 2;
|
||||
|
||||
// merge satuan
|
||||
const IS_MERGE_NO = 0;
|
||||
const IS_MERGE_YES = 1;
|
||||
|
||||
// merge per trx
|
||||
const STTS_MERGE_NO = 0;
|
||||
const STTS_MERGE_TO = 1;
|
||||
const STTS_MERGE_RESULT = 2;
|
||||
|
||||
// 0=>system, 1=>admin, 2=>finance
|
||||
const CRT_TYPE_SYSTEM = 0;
|
||||
const CRT_TYPE_ADMIN = 1;
|
||||
const CRT_TYPE_FINANCE = 2;
|
||||
|
||||
/**
|
||||
* termin_at itu deadline pembayaran
|
||||
* column merge disini untuk merge satuan:
|
||||
* is_merge_to, merge_to_a_id, merge_to_ord_id, merge_to_ord_code, merge_to_at, merge_to_by
|
||||
* is_merge_from, merge_from_a_id, merge_from_ord_id, merge_from_ord_code, merge_from_at, merge_from_by
|
||||
* column merge disini untuk merge per trx:
|
||||
* stts_merge, merge_to_code, group_merge_code, merge_at
|
||||
*/
|
||||
|
||||
public static function listAItems($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = '';
|
||||
$where = '';
|
||||
|
||||
if (isset($filter['c_termin_id'])) {
|
||||
$where .= ' AND ord_a_item.c_termin_id = ?';
|
||||
$params[] = $filter['c_termin_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['is_hidden'])) {
|
||||
$where .= ' AND ord_a_item.is_hidden = ?';
|
||||
$params[] = $filter['is_hidden'];
|
||||
}
|
||||
|
||||
if (isset($filter['is_tax'])) {
|
||||
$where .= ' AND ord_a_item.is_tax = ?';
|
||||
$params[] = $filter['is_tax'];
|
||||
}
|
||||
|
||||
if (isset($filter['is_ppn'])) {
|
||||
$where .= ' AND ord_a_item.is_ppn = ?';
|
||||
$params[] = $filter['is_ppn'];
|
||||
}
|
||||
|
||||
if (isset($filter['is_pph'])) {
|
||||
$where .= ' AND ord_a_item.is_pph = ?';
|
||||
$params[] = $filter['is_pph'];
|
||||
}
|
||||
|
||||
if (isset($filter['is_disc'])) {
|
||||
$where .= ' AND ord_a_item.is_disc = ?';
|
||||
$params[] = $filter['is_disc'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT
|
||||
ord_a_item.id as ord_a_item_id
|
||||
,ord_a_item.*
|
||||
$select
|
||||
FROM
|
||||
t_orders_a_items as ord_a_item
|
||||
WHERE dlt is null
|
||||
$where
|
||||
;",
|
||||
$params);
|
||||
}
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_a_items;");
|
||||
}
|
||||
|
||||
public static function showAItem($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$join = '';
|
||||
$select = '';
|
||||
$where = '';
|
||||
$group_by = '';
|
||||
$limit = '';
|
||||
|
||||
if (isset($filter['ord_a_item_id'])) {
|
||||
$where .= ' AND ord_a_item.id = ?';
|
||||
$params[] = $filter['ord_a_item_id'];
|
||||
} else if (isset($filter['group_merge_code'])) {
|
||||
$where .= ' AND ord_a_item.group_merge_code IN (?)';
|
||||
$params[] = $filter['group_merge_code'];
|
||||
}
|
||||
|
||||
if (isset($filter['ord_id'])) {
|
||||
$where .= ' AND ord_a_item.ord_id = ?';
|
||||
$params[] = $filter['ord_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['exclude_ord_a_item_id'])) {
|
||||
$where .= ' AND ord_a_item.id != ?';
|
||||
$params[] = $filter['exclude_ord_a_item_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['is_adm_price'])) {
|
||||
$where .= ' AND ord_a_item.is_adm_price = ?';
|
||||
$params[] = $filter['is_adm_price'];
|
||||
}
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND ord_a_item.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
if (isset($filter['a_item_type'])) {
|
||||
$where .= ' AND ord_a_item.a_item_type = ?';
|
||||
$params[] = $filter['a_item_type'];
|
||||
}
|
||||
if (isset($filter['v_termin_id_not_zero'])) {
|
||||
$where .= ' AND ord_a_item.v_termin_id != 0';
|
||||
}
|
||||
if (isset($filter['c_termin_id_not_zero'])) {
|
||||
$where .= ' AND ord_a_item.c_termin_id != 0';
|
||||
}
|
||||
|
||||
if (isset($filter['get_user_crt'])) {
|
||||
$select .= ',ucrt.first_name as ucrt_name';
|
||||
$join .= ' LEFT JOIN t_users as ucrt ON ord_a_item.crt_by = ucrt.id';
|
||||
}
|
||||
|
||||
if (isset($filter['get_user_rjct'])) {
|
||||
$select .= ',urjct.first_name as urjct_name,urjct_bill.first_name as urjct_bill_name';
|
||||
$join .= ' LEFT JOIN t_users as urjct ON ord_a_item.rjct_by = urjct.id';
|
||||
$join .= ' LEFT JOIN t_users as urjct_bill ON ord_a_item.rjct_bill_by = urjct_bill.id';
|
||||
}
|
||||
|
||||
if (isset($filter['prev_main_item_id'])) {
|
||||
$where .= ' AND ord_a_item.id < ?';
|
||||
$params[] = $filter['prev_main_item_id'];
|
||||
}
|
||||
|
||||
if (isset($filter['limit'])) {
|
||||
$limit .= ' LIMIT ?';
|
||||
$params[] = $filter['limit'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT
|
||||
ord_a_item.id as ord_a_item_id
|
||||
,ord_a_item.*
|
||||
$select
|
||||
FROM
|
||||
t_orders_a_items as ord_a_item
|
||||
$join
|
||||
WHERE ord_a_item.dlt is null
|
||||
$where
|
||||
$group_by
|
||||
$limit
|
||||
;",
|
||||
$params);
|
||||
}
|
||||
|
||||
public static function showAItemById($ord_a_item_id, $filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$join = '';
|
||||
$select = '';
|
||||
$where = '';
|
||||
|
||||
if (isset($filter['is_adm_price'])) {
|
||||
$where .= ' AND ord_a_item.is_adm_price = ?';
|
||||
$params[] = $filter['is_adm_price'];
|
||||
}
|
||||
|
||||
if (isset($filter['get_user_crt'])) {
|
||||
$select .= ',ucrt.first_name as ucrt_name';
|
||||
$join .= ' LEFT JOIN t_users as ucrt ON ord_a_item.crt_by = ucrt.id';
|
||||
}
|
||||
|
||||
if (isset($filter['get_user_rjct'])) {
|
||||
$select .= ',urjct.first_name as urjct_name,urjct_bill.first_name as urjct_bill_name';
|
||||
$join .= ' LEFT JOIN t_users as urjct ON ord_a_item.rjct_by = urjct.id';
|
||||
$join .= ' LEFT JOIN t_users as urjct_bill ON ord_a_item.rjct_bill_by = urjct_bill.id';
|
||||
}
|
||||
|
||||
$params[] = $ord_a_item_id;
|
||||
|
||||
return DB::select("SELECT
|
||||
ord_a_item.id as ord_a_item_id
|
||||
,ord_a_item.*
|
||||
$select
|
||||
FROM
|
||||
t_orders_a_items as ord_a_item
|
||||
$join
|
||||
WHERE ord_a_item.dlt is null
|
||||
$where
|
||||
AND ord_a_item.id = ?
|
||||
;",
|
||||
$params);
|
||||
}
|
||||
|
||||
public static function showAItemByIds($ids)
|
||||
{
|
||||
$params = [];
|
||||
$select = '';
|
||||
$where = '';
|
||||
|
||||
if ($ids && count($ids) > 0) {
|
||||
$binds_ids = "";
|
||||
foreach ($ids as $k => $v) {
|
||||
$binds_ids .= "?,";
|
||||
$params[] = $v;
|
||||
}
|
||||
if (substr($binds_ids, -1) === ',') {
|
||||
$binds_ids = substr($binds_ids, 0, -1);
|
||||
}
|
||||
$where .= " AND ord_a_item.id IN ($binds_ids)";
|
||||
} else {
|
||||
$where .= " AND ord_a_item.id = ?";
|
||||
$params[] = 0;
|
||||
}
|
||||
|
||||
return DB::select("SELECT
|
||||
ord_a_item.id as ord_a_item_id
|
||||
,ord_a_item.*
|
||||
,ut.name as unit_type_name
|
||||
$select
|
||||
FROM t_orders_a_items as ord_a_item
|
||||
LEFT JOIN t_unit_types as ut ON ord_a_item.unit_type = ut.id
|
||||
WHERE ord_a_item.dlt is null
|
||||
$where
|
||||
;",
|
||||
$params);
|
||||
}
|
||||
|
||||
// termin ids
|
||||
public static function showAItemByVids($tids, $filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = '';
|
||||
$where = '';
|
||||
|
||||
if ($tids && count($tids) > 0) {
|
||||
$binds_ids = "";
|
||||
foreach ($tids as $k => $v) {
|
||||
$binds_ids .= "?,";
|
||||
$params[] = $v;
|
||||
}
|
||||
if (substr($binds_ids, -1) === ',') {
|
||||
$binds_ids = substr($binds_ids, 0, -1);
|
||||
}
|
||||
if (isset($filter['c_termin_id'])) {
|
||||
$where .= " AND ord_a_item.c_termin_id IN ($binds_ids)";
|
||||
} else {
|
||||
$where .= " AND ord_a_item.v_termin_id IN ($binds_ids)";
|
||||
}
|
||||
} else {
|
||||
if (isset($filter['c_termin_id'])) {
|
||||
$where .= " AND ord_a_item.c_termin_id = ?";
|
||||
} else {
|
||||
$where .= " AND ord_a_item.v_termin_id = ?";
|
||||
}
|
||||
$params[] = 0;
|
||||
}
|
||||
|
||||
if (isset($filter['a_item_type'])) {
|
||||
$where .= " AND ord_a_item.a_item_type = ?";
|
||||
$params[] = $filter['a_item_type'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT
|
||||
ord_a_item.id as ord_a_item_id
|
||||
,ord_a_item.*
|
||||
,ut.name as unit_type_name
|
||||
$select
|
||||
FROM t_orders_a_items as ord_a_item
|
||||
LEFT JOIN t_unit_types as ut ON ord_a_item.unit_type = ut.id
|
||||
WHERE ord_a_item.dlt is null
|
||||
$where
|
||||
;",
|
||||
$params);
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_a_items WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_a_items WHERE ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_a_items WHERE ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_a_items")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_a_items")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_a_items")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_a_items")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_a_items")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
50
app/Models/OrdersAccidents.php
Executable file
50
app/Models/OrdersAccidents.php
Executable file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersAccidents extends Model
|
||||
{
|
||||
public static function getAccidents()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_accidents WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getAccidentById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_accidents WHERE dlt is null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getAccidentByOrdId($ord_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_accidents WHERE dlt is null AND ord_id = ? LIMIT 1;", [$ord_id]);
|
||||
}
|
||||
|
||||
public static function addAccident($data)
|
||||
{
|
||||
$id = DB::table("t_orders_accidents")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updateAccident($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_accidents")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updateAccidentByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_accidents")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteAccident($id)
|
||||
{
|
||||
return DB::table("t_orders_accidents")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function deleteAccidentByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_accidents")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
142
app/Models/OrdersCheckpoints.php
Executable file
142
app/Models/OrdersCheckpoints.php
Executable file
@ -0,0 +1,142 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersCheckpoints extends Model
|
||||
{
|
||||
const defaultSelectedCheckpoints = "
|
||||
point.*
|
||||
,point.id as ord_checkpoint_id
|
||||
,pck.name as pck_name,pck.fulladdress as pck_fulladdress
|
||||
,drp.name as drop_name,drp.fulladdress as drop_fulladdress
|
||||
";
|
||||
|
||||
const IS_UNPAID = 0;
|
||||
const IS_PAID = 1;
|
||||
const IS_TF_FAIL = 2;
|
||||
|
||||
const TF_METHOD_MANUAL = 1;
|
||||
const TF_METHOD_DANA = 2;
|
||||
|
||||
public static function listCheckpoints($filter = [])
|
||||
{
|
||||
$select = ''; $join = ''; $where = ''; $group_by = ''; $order_by = ''; $limit = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['id'])) {
|
||||
$where .= ' AND point.id = ?';
|
||||
$params[] = $filter['id'];
|
||||
}
|
||||
if (isset($filter['pocket_id'])) {
|
||||
$where .= ' AND point.pocket_id = ?';
|
||||
$params[] = $filter['pocket_id'];
|
||||
}
|
||||
if (isset($filter['ord_pocket_id'])) {
|
||||
$where .= ' AND point.ord_pocket_id = ?';
|
||||
$params[] = $filter['ord_pocket_id'];
|
||||
}
|
||||
if (isset($filter['sort'])) {
|
||||
$where .= ' AND point.pocket_sort = ?';
|
||||
$params[] = $filter['sort'];
|
||||
}
|
||||
if (isset($filter['ord_id'])) {
|
||||
$where .= ' AND point.ord_id = ?';
|
||||
$params[] = $filter['ord_id'];
|
||||
}
|
||||
if (isset($filter['ord_code'])) {
|
||||
$where .= ' AND point.ord_code = ?';
|
||||
$params[] = $filter['ord_code'];
|
||||
}
|
||||
if (isset($filter['tf_method'])) {
|
||||
$where .= ' AND point.tf_method = ?';
|
||||
$params[] = $filter['tf_method'];
|
||||
}
|
||||
if (isset($filter['where_not_tf_at'])) {
|
||||
$where .= ' AND point.tf_at != ?';
|
||||
$params[] = $filter['where_not_tf_at'];
|
||||
}
|
||||
|
||||
if (isset($filter['order_by'])) {
|
||||
$order_by = 'ORDER BY ' . $filter['order_by'];
|
||||
}
|
||||
if (isset($filter['group_by'])) {
|
||||
$group_by = 'GROUP BY ' . $filter['group_by'];
|
||||
}
|
||||
if (isset($filter['limit'])) {
|
||||
$limit = 'LIMIT ' . $filter['limit'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT "
|
||||
. OrdersCheckpoints::defaultSelectedCheckpoints . "
|
||||
$select
|
||||
FROM t_orders_checkpoints as point
|
||||
INNER JOIN t_zones as pck ON point.pck_id = pck.id
|
||||
LEFT JOIN t_zones as drp ON point.drop_id = drp.id
|
||||
WHERE point.dlt is null
|
||||
$where
|
||||
$group_by
|
||||
$order_by
|
||||
$limit
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function showCheckpointById($pocket_id)
|
||||
{
|
||||
return DB::select("SELECT "
|
||||
. OrdersCheckpoints::defaultSelectedCheckpoints . "
|
||||
FROM t_orders_checkpoints as point
|
||||
LEFT JOIN t_zones as pck ON point.pck_id = pck.id
|
||||
LEFT JOIN t_zones as drp ON point.drop_id = drp.id
|
||||
WHERE point.dlt is null AND point.id = ?
|
||||
LIMIT 1;", [$pocket_id]);
|
||||
}
|
||||
|
||||
public static function getCheckpoints()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_checkpoints WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getCheckpointById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_checkpoints WHERE dlt is null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getCheckpointByPckDrop($pck_id, $drop_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_checkpoints WHERE dlt is null AND pck_id = ? AND drop_id = ? LIMIT 1;", [$pck_id, $drop_id]);
|
||||
}
|
||||
|
||||
public static function addCheckpoint($data)
|
||||
{
|
||||
$pid = DB::table("t_orders_checkpoints")->insertGetId($data);
|
||||
return $pid;
|
||||
}
|
||||
|
||||
public static function updateCheckpoint($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_checkpoints")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_checkpoints")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteCheckpoint($id)
|
||||
{
|
||||
return DB::table("t_orders_checkpoints")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function deleteCheckpointByPocketId($pocket_id)
|
||||
{
|
||||
return DB::table("t_orders_checkpoints")->where("pocket_id", $pocket_id)->delete();
|
||||
}
|
||||
|
||||
public static function deleteCheckpointByOrdPocketId($ord_pocket_id)
|
||||
{
|
||||
return DB::table("t_orders_checkpoints")->where("ord_pocket_id", $ord_pocket_id)->delete();
|
||||
}
|
||||
}
|
||||
62
app/Models/OrdersClients.php
Executable file
62
app/Models/OrdersClients.php
Executable file
@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersClients extends Model
|
||||
{
|
||||
|
||||
const IS_NON_PKP = 0;
|
||||
const IS_PKP_YES = 1;
|
||||
|
||||
const IS_NOT_PAY = 1;
|
||||
const IS_PAYED = 2;
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_clients;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_clients WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_clients WHERE ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_clients WHERE ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_clients")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_clients")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_clients")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_clients")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_clients")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
60
app/Models/OrdersDrivers.php
Executable file
60
app/Models/OrdersDrivers.php
Executable file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersDrivers extends Model
|
||||
{
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drivers;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drivers WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drivers WHERE ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdCodeByStatus($code, $status)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drivers WHERE ord_code = ? AND status = ? LIMIT 1;", [$code, $status]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drivers WHERE ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_drivers")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_drivers")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_drivers")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_drivers")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_drivers")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
111
app/Models/OrdersDriversUploads.php
Executable file
111
app/Models/OrdersDriversUploads.php
Executable file
@ -0,0 +1,111 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersDriversUploads extends Model
|
||||
{
|
||||
const STTS_UP_OTW_PICKUP = 1;
|
||||
const STTS_UP_ARRIVED_PICKUP = 2;
|
||||
const STTS_UP_PROCESS_PICKUP = 3;
|
||||
const STTS_UP_FINISH_PICKUP = 4;
|
||||
const STTS_UP_TRAVEL_DOCUMENT = 5;
|
||||
const STTS_UP_OTW_DROP = 6;
|
||||
const STTS_UP_ARRIVED_DROP = 7;
|
||||
const STTS_UP_PROCESS_DROP = 8;
|
||||
const STTS_UP_FINISH_DROP = 9;
|
||||
const STTS_UP_HANDOVER_DOCUMENT = 10;
|
||||
const STTS_UP_ACCIDENT = 11;
|
||||
|
||||
const IS_INACTIVE = 0;
|
||||
const IS_ACTIVE = 1;
|
||||
|
||||
public static function list($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = '';
|
||||
$where = '';
|
||||
$join = '';
|
||||
$limit = '';
|
||||
|
||||
if (isset($filter['id'])) {
|
||||
$where .= ' AND drv_up.id = ?';
|
||||
$params[] = $filter['id'];
|
||||
}
|
||||
if (isset($filter['ord_id'])) {
|
||||
$where .= ' AND drv_up.ord_id = ?';
|
||||
$params[] = $filter['ord_id'];
|
||||
}
|
||||
if (isset($filter['ord_code'])) {
|
||||
$where .= ' AND drv_up.ord_code = ?';
|
||||
$params[] = $filter['ord_code'];
|
||||
}
|
||||
if (isset($filter['did'])) {
|
||||
$where .= ' AND drv_up.did = ?';
|
||||
$params[] = $filter['did'];
|
||||
}
|
||||
if (isset($filter['pck_id'])) {
|
||||
$where .= ' AND drv_up.pck_id = ?';
|
||||
$params[] = $filter['pck_id'];
|
||||
}
|
||||
if (isset($filter['drop_id'])) {
|
||||
$where .= ' AND drv_up.drop_id = ?';
|
||||
$params[] = $filter['drop_id'];
|
||||
}
|
||||
if (isset($filter['ord_pck_drop_id'])) {
|
||||
$where .= ' AND drv_up.ord_pck_drop_id = ?';
|
||||
$params[] = $filter['ord_pck_drop_id'];
|
||||
}
|
||||
|
||||
$query = "SELECT drv_up.* $select FROM t_orders_drivers_uploads as drv_up $join WHERE drv_up.dlt is null $where $limit;";
|
||||
return DB::select($query, $params);
|
||||
}
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drivers_uploads;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drivers_uploads WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drivers_uploads WHERE ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drivers_uploads WHERE ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_drivers_uploads")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_drivers_uploads")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_drivers_uploads")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_drivers_uploads")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_drivers_uploads")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
63
app/Models/OrdersDrops.php
Executable file
63
app/Models/OrdersDrops.php
Executable file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersDrops extends Model
|
||||
{
|
||||
const STTS_WAIT = 1;
|
||||
const STTS_DROPING = 2;
|
||||
const STTS_DROPED = 3;
|
||||
const STTS_FAIL = 4;
|
||||
|
||||
const CHK_STTS_NO = 1;
|
||||
const CHK_STTS_SUBMIT = 2;
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drops;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drops WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drops WHERE ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_drops WHERE ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_drops")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_drops")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_drops")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_drops")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_drops")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
59
app/Models/OrdersInsurances.php
Executable file
59
app/Models/OrdersInsurances.php
Executable file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersInsurances extends Model
|
||||
{
|
||||
|
||||
const AMT_TYPE_FLAT = 1;
|
||||
const AMT_TYPE_PERCENT = 2;
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_insurances;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_insurances WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_insurances WHERE ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_insurances WHERE ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_insurances")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_insurances")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_insurances")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_insurances")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_insurances")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
109
app/Models/OrdersInvoices.php
Executable file
109
app/Models/OrdersInvoices.php
Executable file
@ -0,0 +1,109 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersInvoices extends Model
|
||||
{
|
||||
const FLOW_TYPE_PAYMENT = 1;
|
||||
const FLOW_TYPE_BILLING = 2;
|
||||
const FLOW_TYPE_HYBRID = 3;
|
||||
|
||||
const TYPE_CASH_OUT = 1;
|
||||
const TYPE_CASH_IN = 2;
|
||||
const TYPE_CASH_HYBRID = 3;
|
||||
|
||||
const AMT_TYPE_FLAT = 1;
|
||||
const AMT_TYPE_PERCENT = 2;
|
||||
|
||||
// 1=>refer pay_due_at, 2=>jatuh tempo 14 hari kerja
|
||||
const PAY_DUE_TYPE_TIME = 1;
|
||||
const PAY_DUE_TYPE_14_WORK_DAY = 2;
|
||||
|
||||
const IS_PAID_NO = 0;
|
||||
const IS_PAID_YES = 1;
|
||||
|
||||
const IS_GNRT_INVC_NO = 0;
|
||||
const IS_GNRT_INVC_YES = 1;
|
||||
|
||||
// 1=>transfer
|
||||
const PAID_TYPE_TF = 1;
|
||||
|
||||
// 1=>admin, 2=>finance
|
||||
const CRT_TYPE_SYSTEM = 0;
|
||||
const CRT_TYPE_ADMIN = 1;
|
||||
const CRT_TYPE_FINANCE = 2;
|
||||
|
||||
// 1=>client
|
||||
const INVC_FOR_CLIENT = 1;
|
||||
|
||||
const DFT_TAX_PERCENT = 0;
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_invoices WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_invoices WHERE dlt is null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_invoices WHERE dlt is null AND code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_invoices WHERE dlt is null AND ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_invoices WHERE dlt is null AND ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function getByTerminId($terminid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_invoices WHERE dlt is null AND c_termin_id = ? LIMIT 1;", [$terminid]);
|
||||
}
|
||||
|
||||
public static function getLikeCode($code)
|
||||
{
|
||||
return DB::select("SELECT COUNT(id) as total FROM t_orders_invoices WHERE dlt is null AND code LIKE ? LIMIT 1;", [$code.'%']);
|
||||
}
|
||||
|
||||
public static function getLikeCodeLastRunningNumber($code)
|
||||
{
|
||||
return DB::select("SELECT code FROM t_orders_invoices WHERE dlt is null AND code LIKE ? ORDER BY code DESC LIMIT 1;", [$code.'%']);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_invoices")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_invoices")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_invoices")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_invoices")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_invoices")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
87
app/Models/OrdersItems.php
Executable file
87
app/Models/OrdersItems.php
Executable file
@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersItems extends Model
|
||||
{
|
||||
|
||||
const DEFAULT_WEIGHT_UNIT = 'kg';
|
||||
const DEFAULT_DIMENSION_UNIT = 'm';
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_items;");
|
||||
}
|
||||
|
||||
public static function getsByOrdId($ordid, $filter = [])
|
||||
{
|
||||
$params = [$ordid];
|
||||
$where_item = '';
|
||||
|
||||
if (isset($filter['get_not_deleted'])) {
|
||||
$where_item .= ' AND item.chk_pck_dlt = 0';
|
||||
$where_item .= ' AND item.chk_drop_dlt = 0';
|
||||
}
|
||||
|
||||
return DB::select("SELECT
|
||||
*
|
||||
FROM t_orders_items as item
|
||||
WHERE item.ord_id = ?
|
||||
" . $where_item . "
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function getsByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_items WHERE ord_code = ?;", [$code]);
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_items WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_items WHERE ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_items WHERE ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function getOrderItemByCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_items WHERE item_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_items")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_items")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_items")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_items")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_items")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
103
app/Models/OrdersLogsTf.php
Executable file
103
app/Models/OrdersLogsTf.php
Executable file
@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersLogsTf extends Model
|
||||
{
|
||||
const defaultSelectedLogsTf = "
|
||||
log_tf.*
|
||||
";
|
||||
|
||||
const TYPE_TF_CHECKPOINT = 1;
|
||||
|
||||
const STTS_UNPAID = 0;
|
||||
const STTS_PAID = 1;
|
||||
const STTS_FAIL = 2;
|
||||
const STTS_PENDING = 3;
|
||||
|
||||
const METHOD_MANUAL = 1;
|
||||
const METHOD_DANA = 2;
|
||||
|
||||
public static function listLogsTf($filter = [])
|
||||
{
|
||||
$select = ''; $join = ''; $where = ''; $group_by = ''; $order_by = ''; $limit = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['ord_id'])) {
|
||||
$where .= ' AND log_tf.ord_id = ?';
|
||||
$params[] = $filter['ord_id'];
|
||||
}
|
||||
if (isset($filter['ord_code'])) {
|
||||
$where .= ' AND log_tf.ord_code = ?';
|
||||
$params[] = $filter['ord_code'];
|
||||
}
|
||||
if (isset($filter['checkpoint_id'])) {
|
||||
$where .= ' AND log_tf.checkpoint_id = ?';
|
||||
$params[] = $filter['checkpoint_id'];
|
||||
}
|
||||
if (isset($filter['type'])) {
|
||||
$where .= ' AND log_tf.type = ?';
|
||||
$params[] = $filter['type'];
|
||||
}
|
||||
if (isset($filter['method'])) {
|
||||
$where .= ' AND log_tf.method = ?';
|
||||
$params[] = $filter['method'];
|
||||
}
|
||||
|
||||
if (isset($filter['order_by'])) {
|
||||
$order_by = 'ORDER BY ' . $filter['order_by'];
|
||||
}
|
||||
if (isset($filter['group_by'])) {
|
||||
$group_by = 'GROUP BY ' . $filter['group_by'];
|
||||
}
|
||||
if (isset($filter['limit'])) {
|
||||
$limit = 'LIMIT ' . $filter['limit'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT "
|
||||
. OrdersLogsTf::defaultSelectedLogsTf . "
|
||||
$select
|
||||
FROM t_orders_logs_tf as log_tf
|
||||
$join
|
||||
WHERE log_tf.dlt is null
|
||||
$where
|
||||
$group_by
|
||||
$order_by
|
||||
$limit
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function getLogsTf()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_logs_tf WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getLogsTfById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_logs_tf WHERE dlt is null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function addLogsTf($data)
|
||||
{
|
||||
$pid = DB::table("t_orders_logs_tf")->insertGetId($data);
|
||||
return $pid;
|
||||
}
|
||||
|
||||
public static function updateLogsTf($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_logs_tf")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_logs_tf")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteLogsTf($id)
|
||||
{
|
||||
return DB::table("t_orders_logs_tf")->where("id", $id)->delete();
|
||||
}
|
||||
}
|
||||
70
app/Models/OrdersPckDrop.php
Executable file
70
app/Models/OrdersPckDrop.php
Executable file
@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersPckDrop extends Model
|
||||
{
|
||||
// stts_delivery
|
||||
const STTS_DELIVERY_OTW_PICKUP = 1;
|
||||
const STTS_DELIVERY_ARRIVED_PICKUP = 2;
|
||||
const STTS_DELIVERY_PROCESS_PICKUP = 3;
|
||||
const STTS_DELIVERY_FINISH_PICKUP = 4;
|
||||
const STTS_DELIVERY_TRAVEL_DOC = 5;
|
||||
const STTS_DELIVERY_OTW_DROP = 6;
|
||||
const STTS_DELIVERY_ARRIVED_DROP = 7;
|
||||
const STTS_DELIVERY_PROCESS_DROP = 8;
|
||||
const STTS_DELIVERY_FINISH_DROP = 9;
|
||||
const STTS_DELIVERY_HANDOVER_DOC = 10;
|
||||
|
||||
const IS_APRV_NO = 0;
|
||||
const IS_APRV_YES = 1;
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_pck_drop;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_pck_drop WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_pck_drop WHERE ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_pck_drop WHERE ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_pck_drop")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_pck_drop")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_pck_drop")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_pck_drop")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_pck_drop")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
63
app/Models/OrdersPickups.php
Executable file
63
app/Models/OrdersPickups.php
Executable file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersPickups extends Model
|
||||
{
|
||||
const STTS_WAIT = 1;
|
||||
const STTS_PICKING = 2;
|
||||
const STTS_PICKED = 3;
|
||||
const STTS_FAIL = 4;
|
||||
|
||||
const CHK_STTS_NO = 1;
|
||||
const CHK_STTS_SUBMIT = 2;
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_pickups;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_pickups WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_pickups WHERE ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_pickups WHERE ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_pickups")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_pickups")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_pickups")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_pickups")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_pickups")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
104
app/Models/OrdersPockets.php
Executable file
104
app/Models/OrdersPockets.php
Executable file
@ -0,0 +1,104 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersPockets extends Model
|
||||
{
|
||||
|
||||
const defaultSelectedPockets = "
|
||||
pm.*
|
||||
,pck.name as pck_name,pck.fulladdress as pck_fulladdress
|
||||
,drp.name as drop_name,drp.fulladdress as drop_fulladdress
|
||||
";
|
||||
|
||||
public static function listPockets($filter = [])
|
||||
{
|
||||
$select = '';
|
||||
$where = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['pck_id'])) {
|
||||
$where .= ' AND pm.pck_id = ?';
|
||||
$params[] = $filter['pck_id'];
|
||||
}
|
||||
if (isset($filter['drop_id'])) {
|
||||
$where .= ' AND pm.drop_id = ?';
|
||||
$params[] = $filter['drop_id'];
|
||||
}
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND pm.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
if (isset($filter['cptid'])) {
|
||||
$where .= ' AND pck.client_group_id = ?';
|
||||
$params[] = $filter['cptid'];
|
||||
$where .= ' AND drp.client_group_id = ?';
|
||||
$params[] = $filter['cptid'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT "
|
||||
. OrdersPockets::defaultSelectedPockets . "
|
||||
$select
|
||||
FROM t_orders_pockets as pm
|
||||
INNER JOIN t_zones as pck ON pm.pck_id = pck.id
|
||||
INNER JOIN t_zones as drp ON pm.drop_id = drp.id
|
||||
WHERE pm.dlt is null
|
||||
$where
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function showPocketById($pocket_id)
|
||||
{
|
||||
return DB::select("SELECT "
|
||||
. OrdersPockets::defaultSelectedPockets . "
|
||||
FROM t_orders_pockets as pm
|
||||
INNER JOIN t_zones as pck ON pm.pck_id = pck.id
|
||||
INNER JOIN t_zones as drp ON pm.drop_id = drp.id
|
||||
WHERE pm.dlt is null AND pm.id = ?
|
||||
LIMIT 1;", [$pocket_id]);
|
||||
}
|
||||
|
||||
public static function getPockets()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_pockets WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getPocketById($pocket_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_pockets WHERE dlt is null AND id = ? LIMIT 1;", [$pocket_id]);
|
||||
}
|
||||
|
||||
public static function getPocketByCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_pockets WHERE dlt is null AND code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getPocketByPckDrop($pck_id, $drop_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_pockets WHERE dlt is null AND pck_id = ? AND drop_id = ? LIMIT 1;", [$pck_id, $drop_id]);
|
||||
}
|
||||
|
||||
public static function addPocket($data)
|
||||
{
|
||||
$pocket_id = DB::table("t_orders_pockets")->insertGetId($data);
|
||||
return $pocket_id;
|
||||
}
|
||||
|
||||
public static function updatePocket($pocket_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_pockets")->where("id", $pocket_id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_pockets")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function deletePocket($pocket_id)
|
||||
{
|
||||
return DB::table("t_orders_pockets")->where("id", $pocket_id)->delete();
|
||||
}
|
||||
}
|
||||
60
app/Models/OrdersRates.php
Executable file
60
app/Models/OrdersRates.php
Executable file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersRates extends Model
|
||||
{
|
||||
const STTS_WAIT = 1;
|
||||
const STTS_DROPING = 2;
|
||||
const STTS_DROPED = 3;
|
||||
const STTS_FAIL = 4;
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_rates;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_rates WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_rates WHERE ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_rates WHERE ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_rates")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_rates")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_rates")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_rates")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_rates")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
149
app/Models/OrdersTermins.php
Executable file
149
app/Models/OrdersTermins.php
Executable file
@ -0,0 +1,149 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersTermins extends Model
|
||||
{
|
||||
const FLOW_TYPE_PAYMENT = 1;
|
||||
const FLOW_TYPE_BILLING = 2;
|
||||
const FLOW_TYPE_HYBRID = 3;
|
||||
|
||||
const TYPE_CASH_OUT = 1;
|
||||
const TYPE_CASH_IN = 2;
|
||||
const TYPE_CASH_HYBRID = 3;
|
||||
|
||||
const AMT_TYPE_FLAT = 1;
|
||||
const AMT_TYPE_PERCENT = 2;
|
||||
|
||||
// 1=>refer termin_ddln_at, 2=>refer to order finish(pengantaran selesai)
|
||||
const DDLN_TERMIN_TYPE_TIME = 1;
|
||||
const DDLN_TERMIN_TYPE_ORD_FINISH = 2;
|
||||
|
||||
const IS_PAID_NO = 0;
|
||||
const IS_PAID_YES = 1;
|
||||
|
||||
// 1=>transfer
|
||||
const PAID_TYPE_TF = 1;
|
||||
|
||||
// 1=>admin, 2=>finance
|
||||
const CRT_TYPE_SYSTEM = 0;
|
||||
const CRT_TYPE_ADMIN = 1;
|
||||
const CRT_TYPE_FINANCE = 2;
|
||||
|
||||
const IS_ACTIVE_NO = 0;
|
||||
const IS_ACTIVE_YES = 1;
|
||||
|
||||
// 1=>client, 2=>vendor
|
||||
const TERMIN_FOR_CLIENT = 1;
|
||||
const TERMIN_FOR_VENDOR = 2;
|
||||
|
||||
// merge per trx
|
||||
const STTS_MERGE_NO = 0;
|
||||
const STTS_MERGE_TO = 1;
|
||||
const STTS_MERGE_RESULT = 2;
|
||||
|
||||
/**
|
||||
* termin_at itu deadline pembayaran
|
||||
* column merge disini untuk merge per trx
|
||||
*/
|
||||
|
||||
public static function listWithFilter($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = '';
|
||||
$where = '';
|
||||
|
||||
if (isset($filter['ord_id'])) {
|
||||
$where .= ' AND ord_id = ?';
|
||||
$params[] = $filter['ord_id'];
|
||||
} else if (isset($filter['ord_code'])) {
|
||||
$where .= ' AND ord_code = ?';
|
||||
$params[] = $filter['ord_code'];
|
||||
}
|
||||
|
||||
if (isset($filter['termin_for'])) {
|
||||
$where .= ' AND termin_for = ?';
|
||||
$params[] = $filter['termin_for'];
|
||||
}
|
||||
|
||||
if (isset($filter['crt_type'])) {
|
||||
$where .= ' AND crt_type = ?';
|
||||
$params[] = $filter['crt_type'];
|
||||
}
|
||||
|
||||
if (isset($filter['termin_is_paid'])) {
|
||||
$where .= ' AND termin_is_paid = ?';
|
||||
$params[] = $filter['termin_is_paid'];
|
||||
}
|
||||
|
||||
if (isset($filter['in_stts_merge'])) {
|
||||
if (is_array($filter['in_stts_merge'])) {
|
||||
$where .= ' AND stts_merge IN (';
|
||||
foreach ($filter['in_stts_merge'] as $in) {
|
||||
$where .= '?,';
|
||||
$params[] = $in;
|
||||
}
|
||||
if (strpos(substr($where, -1), ',') !== false) {
|
||||
$where = substr($where, 0, -1) . ')';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return DB::select("SELECT
|
||||
ord_termin.*
|
||||
$select
|
||||
FROM t_orders_termins as ord_termin
|
||||
WHERE dlt is null
|
||||
$where
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_termins WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_termins WHERE dlt is null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_termins WHERE dlt is null AND ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_termins WHERE dlt is null AND ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_termins")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_termins")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_termins")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_termins")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_termins")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
60
app/Models/OrdersVehicles.php
Executable file
60
app/Models/OrdersVehicles.php
Executable file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersVehicles extends Model
|
||||
{
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_vehicles;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_vehicles WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_vehicles WHERE ord_code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getByOrdCodeByStatus($code, $status)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_vehicles WHERE ord_code = ? AND status = ? LIMIT 1;", [$code, $status]);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_vehicles WHERE ord_id = ? LIMIT 1;", [$ordid]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_vehicles")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_vehicles")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_vehicles")->where("ord_id", $ord_id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_vehicles")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_vehicles")->where("ord_id", $ord_id)->delete();
|
||||
}
|
||||
}
|
||||
193
app/Models/OrdersVendors.php
Executable file
193
app/Models/OrdersVendors.php
Executable file
@ -0,0 +1,193 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class OrdersVendors extends Model
|
||||
{
|
||||
const STTS_WAIT = 1;
|
||||
const STTS_ACC = 2;
|
||||
const STTS_REJECT = 3;
|
||||
const STTS_IGNORE = 4;
|
||||
const STTS_NOT_READY = 5; // want order but expired, bcs not fill data
|
||||
|
||||
const IS_NOT_PAY = 1;
|
||||
const IS_PAYED = 2;
|
||||
|
||||
const LINK_WILL_EXP = 1;
|
||||
const LINK_NOT_EXP = 2;
|
||||
|
||||
const IS_MAILING_BID_NOT = 0;
|
||||
const IS_MAILING_BID_SEND = 1;
|
||||
|
||||
const IS_WANT_IGNORE = 0;
|
||||
const IS_WANT_NO = 1;
|
||||
const IS_WANT_YES = 2;
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_orders_vendors;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_orders_vendors WHERE id = ? LIMIT 1;",
|
||||
[$id]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getByOrdCode($code)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_orders_vendors WHERE ord_code = ? LIMIT 1;",
|
||||
[$code]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getByOrdCodeByStatus($code, $status)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_orders_vendors WHERE ord_code = ? AND status = ? LIMIT 1;",
|
||||
[$code, $status]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getByOrdIdByStatus($id, $status)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_orders_vendors WHERE ord_id = ? AND status = ? LIMIT 1;",
|
||||
[$id, $status]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getByOrdId($ordid)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_orders_vendors WHERE ord_id = ? LIMIT 1;",
|
||||
[$ordid]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getByBidToken($tkn)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_orders_vendors WHERE bid_token = ? LIMIT 1;",
|
||||
[$tkn]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getByOrdIdAndVdrId($ordid, $vdrid)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_orders_vendors WHERE ord_id = ? AND vdr_id = ? LIMIT 1;",
|
||||
[$ordid, $vdrid]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getNextVendors($ordid, $not_vdr_id = 0)
|
||||
{
|
||||
// AND is_mailing_bid = " . OrdersVendors::IS_MAILING_BID_NOT . "
|
||||
return DB::select(
|
||||
"SELECT * FROM t_orders_vendors
|
||||
WHERE ord_id = ?
|
||||
AND is_want = " .
|
||||
OrdersVendors::IS_WANT_IGNORE .
|
||||
"
|
||||
AND respond_at = 0
|
||||
AND vdr_id != ?
|
||||
;",
|
||||
[$ordid, $not_vdr_id]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getOtherVendorsWantThisOrder($ordid, $not_vdr_id = 0)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_orders_vendors
|
||||
WHERE ord_id = ?
|
||||
AND is_mailing_bid = " .
|
||||
OrdersVendors::IS_MAILING_BID_SEND .
|
||||
"
|
||||
AND is_want = " .
|
||||
OrdersVendors::IS_WANT_YES .
|
||||
"
|
||||
AND status = " .
|
||||
OrdersVendors::STTS_WAIT .
|
||||
"
|
||||
AND respond_at = 0
|
||||
AND vdr_id != ?
|
||||
;",
|
||||
[$ordid, $not_vdr_id]
|
||||
);
|
||||
}
|
||||
|
||||
public static function searchVendorsByRate($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
|
||||
$query = "SELECT";
|
||||
$query .=
|
||||
" vendor.id as vdr_id,vendor.first_name,vendor.phone,vendor.phone_code,vendor.email,vendor.fulladdress";
|
||||
$query .=
|
||||
" ,rate.vdr_id as rate_vdr_id,rate.vhc_type as rate_vhc_type,rate.origin_prov as rate_origin_prov,rate.dest_city as rate_dest_city,rate.dest_district as rate_dest_district";
|
||||
$query .=
|
||||
" ,rate.fast_time as rate_fast_time,rate.long_time as rate_long_time,rate.sell_kg as rate_sell_kg,rate.sell_cbm as rate_sell_cbm,rate.sell_ftl as rate_sell_ftl";
|
||||
$query .= " FROM t_conf_rates AS rate";
|
||||
$query .= " INNER JOIN t_vehicles as v ON v.type_id = rate.vhc_type";
|
||||
$query .= " INNER JOIN t_users as vendor ON rate.vdr_id = vendor.id";
|
||||
$query .= " WHERE rate.vdr_id != 0 AND rate.dest_city != 0";
|
||||
$query .=
|
||||
" AND rate.origin_prov = ? AND (rate.dest_city = ? OR rate.dest_district = ?) AND rate.sell_ftl = ? AND rate.long_time = ?";
|
||||
array_push(
|
||||
$params,
|
||||
$filter["active_rates"]->origin_prov,
|
||||
$filter["active_rates"]->dest_city,
|
||||
$filter["active_rates"]->dest_district,
|
||||
$filter["active_rates"]->sell_ftl,
|
||||
$filter["active_rates"]->long_time
|
||||
);
|
||||
if ($filter["prefer_truck_type"]) {
|
||||
$query .= " AND v.type_id = ?";
|
||||
$params[] = $filter["prefer_truck_type"];
|
||||
}
|
||||
$query .= " GROUP BY rate.vdr_id";
|
||||
return DB::select($query, $params);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_orders_vendors")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_orders_vendors")
|
||||
->where("id", $id)
|
||||
->update($data);
|
||||
}
|
||||
|
||||
public static function updtByOrdId($ord_id, $data)
|
||||
{
|
||||
return DB::table("t_orders_vendors")
|
||||
->where("ord_id", $ord_id)
|
||||
->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_orders_vendors")
|
||||
->where("id", $id)
|
||||
->delete();
|
||||
}
|
||||
|
||||
public static function dltByOrdId($ord_id)
|
||||
{
|
||||
return DB::table("t_orders_vendors")
|
||||
->where("ord_id", $ord_id)
|
||||
->delete();
|
||||
}
|
||||
}
|
||||
149
app/Models/PocketMoney.php
Executable file
149
app/Models/PocketMoney.php
Executable file
@ -0,0 +1,149 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class PocketMoney extends Model
|
||||
{
|
||||
|
||||
const IS_INACTIVE = 0;
|
||||
const IS_ACTIVE = 1;
|
||||
|
||||
const TYPE_BUNDLE = 1;
|
||||
const TYPE_BUNDLE_TEXT = 'Bundle';
|
||||
const TYPE_CHECKPOINTS = 2;
|
||||
const TYPE_CHECKPOINTS_TEXT = 'Checkpoints';
|
||||
|
||||
const FLOW_DEPARTURE = 1;
|
||||
const FLOW_DEPARTURE_TEXT = 'Departure';
|
||||
const FLOW_ARRIVAL = 2;
|
||||
const FLOW_ARRIVAL_TEXT = 'Arrival';
|
||||
const FLOW_HYBRID = 3;
|
||||
const FLOW_HYBRID_TEXT = 'Hybpocket_id';
|
||||
|
||||
const defaultSelectedPockets = "
|
||||
pm.*
|
||||
,pck.name as pck_name,pck.fulladdress as pck_fulladdress
|
||||
,drp.name as drop_name,drp.fulladdress as drop_fulladdress
|
||||
";
|
||||
|
||||
public static function listPockets($filter = [])
|
||||
{
|
||||
$select = '';
|
||||
$where = '';
|
||||
$params = [];
|
||||
|
||||
if (isset($filter['pck_id'])) {
|
||||
$where .= ' AND pm.pck_id = ?';
|
||||
$params[] = $filter['pck_id'];
|
||||
}
|
||||
if (isset($filter['drop_id'])) {
|
||||
$where .= ' AND pm.drop_id = ?';
|
||||
$params[] = $filter['drop_id'];
|
||||
}
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND pm.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
if (isset($filter['cptid'])) {
|
||||
$where .= ' AND pck.client_group_id = ?';
|
||||
$params[] = $filter['cptid'];
|
||||
$where .= ' AND drp.client_group_id = ?';
|
||||
$params[] = $filter['cptid'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT "
|
||||
. PocketMoney::defaultSelectedPockets . "
|
||||
$select
|
||||
FROM t_pocket_money as pm
|
||||
INNER JOIN t_zones as pck ON pm.pck_id = pck.id
|
||||
INNER JOIN t_zones as drp ON pm.drop_id = drp.id
|
||||
WHERE pm.dlt is null
|
||||
$where
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function showPocketById($pocket_id)
|
||||
{
|
||||
return DB::select("SELECT "
|
||||
. PocketMoney::defaultSelectedPockets . "
|
||||
FROM t_pocket_money as pm
|
||||
INNER JOIN t_zones as pck ON pm.pck_id = pck.id
|
||||
INNER JOIN t_zones as drp ON pm.drop_id = drp.id
|
||||
WHERE pm.dlt is null AND pm.id = ?
|
||||
LIMIT 1;", [$pocket_id]);
|
||||
}
|
||||
|
||||
public static function getPockets()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_pocket_money WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getPocketById($pocket_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_pocket_money WHERE dlt is null AND id = ? LIMIT 1;", [$pocket_id]);
|
||||
}
|
||||
|
||||
public static function getPocketByCode($code)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_pocket_money WHERE dlt is null AND code = ? LIMIT 1;", [$code]);
|
||||
}
|
||||
|
||||
public static function getPocketByPckDrop($pck_id, $drop_id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_pocket_money WHERE dlt is null AND pck_id = ? AND drop_id = ? LIMIT 1;", [$pck_id, $drop_id]);
|
||||
}
|
||||
|
||||
public static function addPocket($data)
|
||||
{
|
||||
$pocket_id = DB::table("t_pocket_money")->insertGetId($data);
|
||||
return $pocket_id;
|
||||
}
|
||||
|
||||
public static function updatePocket($pocket_id, $data)
|
||||
{
|
||||
return DB::table("t_pocket_money")->where("id", $pocket_id)->update($data);
|
||||
}
|
||||
|
||||
public static function deletePocket($pocket_id)
|
||||
{
|
||||
return DB::table("t_pocket_money")->where("id", $pocket_id)->delete();
|
||||
}
|
||||
|
||||
public static function getTypes()
|
||||
{
|
||||
$datas = [];
|
||||
for ($i=0; $i<2; $i++) {
|
||||
$datas[$i] = new \stdClass();
|
||||
if ($i === 0) {
|
||||
$datas[$i]->id = PocketMoney::TYPE_BUNDLE;
|
||||
$datas[$i]->name = PocketMoney::TYPE_BUNDLE_TEXT;
|
||||
} else if ($i === 1) {
|
||||
$datas[$i]->id = PocketMoney::TYPE_CHECKPOINTS;
|
||||
$datas[$i]->name = PocketMoney::TYPE_CHECKPOINTS_TEXT;
|
||||
}
|
||||
}
|
||||
return $datas;
|
||||
}
|
||||
|
||||
public static function getFlows()
|
||||
{
|
||||
$datas = [];
|
||||
for ($i=0; $i<3; $i++) {
|
||||
$datas[$i] = new \stdClass();
|
||||
if ($i === 0) {
|
||||
$datas[$i]->id = PocketMoney::FLOW_DEPARTURE;
|
||||
$datas[$i]->name = PocketMoney::FLOW_DEPARTURE_TEXT;
|
||||
} else if ($i === 1) {
|
||||
$datas[$i]->id = PocketMoney::FLOW_ARRIVAL;
|
||||
$datas[$i]->name = PocketMoney::FLOW_ARRIVAL_TEXT;
|
||||
} else if ($i === 2) {
|
||||
$datas[$i]->id = PocketMoney::FLOW_HYBRID;
|
||||
$datas[$i]->name = PocketMoney::FLOW_HYBRID_TEXT;
|
||||
}
|
||||
}
|
||||
return $datas;
|
||||
}
|
||||
}
|
||||
49
app/Models/Region.php
Executable file
49
app/Models/Region.php
Executable file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Region extends Model
|
||||
{
|
||||
public static function listProv()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_region GROUP BY kodeProv;");
|
||||
}
|
||||
|
||||
public static function getLikeProv($prname)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_region WHERE nmProvinsiKel LIKE ? GROUP BY kodeProv;", ['%'.$prname.'%']);
|
||||
}
|
||||
|
||||
public static function listCity($kodeProv)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_region WHERE kodeProv = ? GROUP BY kodeKab;", [$kodeProv]);
|
||||
}
|
||||
|
||||
public static function getLikeCity($ktname)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_region WHERE nmKotamadyaKel LIKE ? GROUP BY kodeKab;", ['%'.$ktname.'%']);
|
||||
}
|
||||
|
||||
public static function listDistrict($kodeKab)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_region WHERE kodeKab = ? GROUP BY kodeKec;", [$kodeKab]);
|
||||
}
|
||||
|
||||
public static function getLikeDistrict($kcname)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_region WHERE nmKecamatanKel LIKE ? GROUP BY kodeKec;", ['%'.$kcname.'%']);
|
||||
}
|
||||
|
||||
public static function listVillage($kodeKec)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_region WHERE kodeKec = ? GROUP BY kodeKel;", [$kodeKec]);
|
||||
}
|
||||
|
||||
public static function getLikeVillage($klname)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_region WHERE nmKelurahan LIKE ? GROUP BY kodeKel;", ['%'.$klname.'%']);
|
||||
}
|
||||
}
|
||||
65
app/Models/StaticInsurances.php
Executable file
65
app/Models/StaticInsurances.php
Executable file
@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class StaticInsurances extends Model
|
||||
{
|
||||
|
||||
const IS_ACTIVE = 1;
|
||||
const IS_INACTIVE = 2;
|
||||
|
||||
const defaultSelectedStaticInsurances = "
|
||||
insurances.*
|
||||
";
|
||||
|
||||
public static function listStaticInsurances($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = '';
|
||||
$join = '';
|
||||
$where = '';
|
||||
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND insurances.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT "
|
||||
. StaticInsurances::defaultSelectedStaticInsurances . "
|
||||
$select
|
||||
FROM t_static_insurances as insurances
|
||||
$join
|
||||
WHERE insurances.dlt is null
|
||||
$where
|
||||
;", $params);
|
||||
}
|
||||
|
||||
public static function getStaticInsurances()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_static_insurances WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getInsuranceById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_static_insurances WHERE dlt is null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function addInsurance($data)
|
||||
{
|
||||
$id = DB::table("t_static_insurances")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updateInsurance($id, $data)
|
||||
{
|
||||
return DB::table("t_static_insurances")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteInsurance($id)
|
||||
{
|
||||
return DB::table("t_static_insurances")->where("id", $id)->delete();
|
||||
}
|
||||
}
|
||||
555
app/Models/Tracks.php
Executable file
555
app/Models/Tracks.php
Executable file
@ -0,0 +1,555 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Helper;
|
||||
use App\Models\Vehicles;
|
||||
|
||||
class Tracks extends Model
|
||||
{
|
||||
const T_TRACKS = "t_gps_tracks";
|
||||
const T_TRACKS_ADDR = "t_gps_tracks_address";
|
||||
|
||||
const STTS_REVERSE_GEO_SC = 1;
|
||||
const STTS_REVERSE_GEO_NOT = 2;
|
||||
const STTS_REVERSE_GEO_ER = 3;
|
||||
const STTS_REVERSE_GEO_LOST = 4;
|
||||
|
||||
const STTS_EN_IDLING = 1;
|
||||
const STTS_EN_MOVING = 2;
|
||||
const STTS_EN_STOPING = 3;
|
||||
|
||||
const STTS_IGNITION_DFT = 0;
|
||||
const STTS_IGNITION_ON = 1;
|
||||
const STTS_IGNITION_OFF = 2;
|
||||
const STTS_IGNITION_LOW = 3;
|
||||
const STTS_IGNITION_HIGH = 4;
|
||||
|
||||
const STTS_GPS_DFT = 0; // default
|
||||
const STTS_GPS_ON = 1;
|
||||
const STTS_GPS_OFF = 2;
|
||||
|
||||
// 1=>no signal, 2=>extremely weak signal 3=>very weak signal, 4=>good signal, 5=>strong signal
|
||||
const STTS_GSM_DFT = 0; // default
|
||||
const STTS_GSM_NO_SIGNAL = 1;
|
||||
const STTS_GSM_BAD_SIGNAL = 2;
|
||||
const STTS_GSM_WEAK_SIGNAL = 3;
|
||||
const STTS_GSM_GOOD_SIGNAL = 4;
|
||||
const STTS_GSM_STRONG_SIGNAL = 5;
|
||||
|
||||
// type source
|
||||
const SOURCE_GPS_TRACKER = 1;
|
||||
const SOURCE_SMARTPHONE = 2;
|
||||
|
||||
/**
|
||||
* perlu tambahin filter untuk melihat tracking yang sesuai dengan vehiclenya aja
|
||||
* karena ada case:
|
||||
* device sudah sampai dilokasi pengantaran dan dimatikan, ketika dipakai lagi data tracking yang lama kelihatan dan loncat
|
||||
* untuk mengatasi itu di service_tracking juga perlu validasi tambahan, entah seperti apa caranya
|
||||
*/
|
||||
public static function listCurrentTracks($filter = [])
|
||||
{
|
||||
$now = time();
|
||||
$params = [];
|
||||
|
||||
$query = "SELECT";
|
||||
$query .=
|
||||
" v.id as vid,v.device_id,v.name as vhc_name,c.name as vhc_cat_name,t.name as vhc_type_name";
|
||||
$query .= " ,v.nopol1,v.nopol2,v.nopol3,vd.fvhc_img";
|
||||
$query .= " ,v.is_track_holiday,v.track_sch_d,v.track_sch_h,vd.speed_limit,v.crt as vhc_crt";
|
||||
$query .= " ,client.id as client_group_id,client.c_name as client_group_name";
|
||||
$query .= " ,tr.ignition,tr.stts_engine,tr.stts_gps,tr.stts_gsm";
|
||||
$query .= " ,tr.pre_milleage,tr.sum_milleage,tr.vhc_milleage,v.sum_milleage AS vhc_sum_milleage_1";
|
||||
|
||||
// FRO
|
||||
// $query .= " ,(SELECT SUM(pre_milleage) FROM " . self::T_TRACKS . " WHERE vhc_id = v.id LIMIT 1) as vhc_sum_milleage";
|
||||
|
||||
// $query .= " ,(SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine = " . self::STTS_EN_IDLING . " AND vhc_id = v.id AND crt_s >= (
|
||||
// SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine IN (" . self::STTS_EN_STOPING . "," . self::STTS_EN_MOVING . ") AND vhc_id = v.id AND crt_s <= tr.crt_s ORDER BY id DESC LIMIT 1
|
||||
// ) ORDER BY id ASC LIMIT 1) as lst_idle_at";
|
||||
|
||||
// $query .= " ,(SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine = " . self::STTS_EN_STOPING . " AND vhc_id = v.id AND crt_s >= (
|
||||
// SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine IN (" . self::STTS_EN_IDLING . "," . self::STTS_EN_MOVING . ") AND vhc_id = v.id AND crt_s <= tr.crt_s ORDER BY id DESC LIMIT 1
|
||||
// ) ORDER BY id ASC LIMIT 1) as lst_stop_at";
|
||||
|
||||
$query .=
|
||||
" ,tr.id AS lst_master_id,tr.latitude AS lst_lat,tr.longitude AS lst_lng,tr.speed AS lst_speed,tr.orientation AS lst_orientation";
|
||||
$query .= " ,tr.crt AS lst_loc_crt,tr.crt_d AS lst_loc_crt_d,tr.crt_s AS lst_loc_crt_s";
|
||||
$query .=
|
||||
" ,tr_addr.master_id AS lst_addr_master_id,tr_addr.country_text AS lst_country_text,tr_addr.state_text AS lst_state_text,tr_addr.city_text AS lst_city_text";
|
||||
$query .=
|
||||
" ,tr_addr.district_text AS lst_district_text,tr_addr.village_text AS lst_village_text,tr_addr.postcode AS lst_postcode";
|
||||
$query .= " ,tr_addr.streets AS lst_streets,tr_addr.fulladdress AS lst_fulladdress";
|
||||
|
||||
// FRO
|
||||
// $query .= " ,(SELECT COUNT(id) FROM " . self::T_TRACKS . " WHERE vhc_id = v.id AND action = 'heartbeat' AND crt BETWEEN ".($now-(10*60))." AND ".$now." LIMIT 1) as lst_heartbeat"; // heartbeat last data on further 10 minutes
|
||||
|
||||
if (isset($filter["active_rates"])) {
|
||||
$query .=
|
||||
",rate.vdr_id as rate_vdr_id,rate.vhc_type as rate_vhc_type,rate.origin_prov as rate_origin_prov,rate.dest_city as rate_dest_city,rate.dest_district as rate_dest_district";
|
||||
$query .=
|
||||
",rate.fast_time as rate_fast_time,rate.long_time as rate_long_time,rate.sell_kg as rate_sell_kg,rate.sell_cbm as rate_sell_cbm,rate.sell_ftl as rate_sell_ftl";
|
||||
}
|
||||
if (isset($filter["get_order_data"])) {
|
||||
$query .=
|
||||
",ord.id as ord_id,ord.code as ord_code,ord.status as ord_stts,ord.crt as ord_crt,ord_pck.pck_name as ord_pck_name,ord_pck.pck_addr as ord_pck_addr,ord_drop.drop_name as ord_drop_name,ord_drop.drop_addr as ord_drop_addr";
|
||||
$query .=
|
||||
",(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) ord_pck_ktname, (SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) ord_drop_ktname";
|
||||
$query .=
|
||||
",ord_drv.drv_name as ord_drv_name,ord_drv.drv_phone_val as ord_drv_phone_val,ord_drv.drv_phone2_val as ord_drv_phone2_val,ord_drv.drv_addr as ord_drv_addr";
|
||||
$query .= ",ord_c.c_name as ord_c_name,ord_c.c_pt_name as ord_c_pt_name";
|
||||
}
|
||||
$query .= " FROM t_vehicles AS v";
|
||||
$query .= " INNER JOIN t_vehicles_detail AS vd ON v.id = vd.vid";
|
||||
$query .= " INNER JOIN t_vehicles_types AS t ON v.type_id = t.id";
|
||||
$query .= " INNER JOIN t_vehicles_cats AS c ON v.cat_id = c.id";
|
||||
$query .= " LEFT JOIN t_users AS vendor ON v.vendor_id = vendor.id";
|
||||
$query .= " LEFT JOIN t_clients AS client ON vendor.client_group_id = client.id";
|
||||
// get last updated row from many rows
|
||||
// $query .= " LEFT JOIN ( SELECT MAX(crt) max_crt, device_id FROM " . self::T_TRACKS . " WHERE latitude is not null AND longitude is not null GROUP BY device_id ORDER BY crt DESC ) AS tr1 ON (v.device_id = tr1.device_id)"; // cara lama berlaku utk gps tracker saja
|
||||
// // $query .= " LEFT JOIN ( SELECT MAX(crt) max_crt, device_id, vhc_id FROM " . self::T_TRACKS . " WHERE latitude is not null AND longitude is not null GROUP BY vhc_id ORDER BY crt DESC ) AS tr1 ON (v.id = tr1.vhc_id)"; // support gps tracker dan smartphone / apapun yang mempunyai device_id(IMEI)
|
||||
// $query .= " LEFT JOIN " . self::T_TRACKS . " AS tr ON (tr.crt = tr1.max_crt)";
|
||||
// get last updated tracking from updated table realtime
|
||||
// $query .= " LEFT JOIN db_trucking.t_gps_tracks_rltm AS tr ON tr.vhc_id = v.id";
|
||||
$query .= " LEFT JOIN t_gps_tracks_rltm AS tr ON tr.vhc_id = v.id";
|
||||
// $query .= " LEFT JOIN " . self::T_TRACKS_ADDR . " AS tr_addr ON tr.id = tr_addr.master_id";
|
||||
|
||||
//FRO
|
||||
$query .=
|
||||
" LEFT JOIN " .
|
||||
self::T_TRACKS_ADDR .
|
||||
" AS tr_addr ON tr.latitude = tr_addr.lat and tr.longitude = tr_addr.lng";
|
||||
|
||||
if (isset($filter["active_rates"])) {
|
||||
// $query .= " INNER JOIN t_conf_rates as rate ON v.type_id = rate.vhc_type";
|
||||
$query .= " INNER JOIN t_conf_rates as rate ON v.vendor_id = rate.vdr_id";
|
||||
}
|
||||
if (isset($filter["get_order_data"])) {
|
||||
// the old way => only 1 order 1 vehicle
|
||||
// $query .= " LEFT JOIN t_orders as ord ON v.ord_id = ord.id";
|
||||
// $query .= " LEFT JOIN t_orders_pickups as ord_pck ON v.ord_id = ord_pck.ord_id";
|
||||
// $query .= " LEFT JOIN t_orders_drops as ord_drop ON v.ord_id = ord_drop.ord_id";
|
||||
// $query .= " LEFT JOIN t_orders_drivers as ord_drv ON v.ord_id = ord_drv.ord_id";
|
||||
// $query .= " LEFT JOIN t_orders_clients as ord_c ON v.ord_id = ord_c.ord_id";
|
||||
|
||||
// the new way => can handle 2 order in 1 vehicle
|
||||
$query .= " LEFT JOIN t_orders_vehicles as ord_vhc ON v.id = ord_vhc.vhc_id";
|
||||
$query .= " LEFT JOIN t_orders as ord ON ord_vhc.ord_id = ord.id";
|
||||
$query .= " LEFT JOIN t_orders_pickups as ord_pck ON ord_vhc.ord_id = ord_pck.ord_id";
|
||||
$query .= " LEFT JOIN t_orders_drops as ord_drop ON ord_vhc.ord_id = ord_drop.ord_id";
|
||||
$query .= " LEFT JOIN t_orders_drivers as ord_drv ON ord_vhc.ord_id = ord_drv.ord_id";
|
||||
$query .= " LEFT JOIN t_orders_clients as ord_c ON ord_vhc.ord_id = ord_c.ord_id";
|
||||
}
|
||||
$query .= " WHERE v.dlt is null";
|
||||
// $query .= " AND tr.action IN ('location','alarm')"; // kalo gamau ngambil data heartbeat(idling)
|
||||
// $query .= " AND tr.device_id = v.device_id"; // cara lama berlaku utk gps tracker saja
|
||||
// $query .= " AND tr.vhc_id = v.id"; // support gps tracker dan smartphone / apapun yang mempunyai device_id(IMEI) // bikin lemot
|
||||
$query .= " AND tr.latitude != 0 AND tr.latitude is not null";
|
||||
if (isset($filter["status"])) {
|
||||
$query .= " AND v.status = ?";
|
||||
$params[] = $filter["status"];
|
||||
}
|
||||
if (isset($filter["is_in_ord"])) {
|
||||
$query .= " AND v.is_in_ord = ?";
|
||||
$params[] = $filter["is_in_ord"];
|
||||
}
|
||||
if (isset($filter["nopol1"]) && isset($filter["nopol2"]) && isset($filter["nopol3"])) {
|
||||
$query .= " AND v.nopol1 = ? AND v.nopol2 = ? AND v.nopol3 = ?";
|
||||
array_push($params, $filter["nopol1"], $filter["nopol2"], $filter["nopol3"]);
|
||||
}
|
||||
if (isset($filter["vid"])) {
|
||||
$query .= " AND v.id = ?";
|
||||
$params[] = $filter["vid"];
|
||||
}
|
||||
if (isset($filter["vids"])) {
|
||||
if ($filter["vids"] && count($filter["vids"]) > 0) {
|
||||
$binds_vids = "";
|
||||
foreach ($filter["vids"] as $k => $v) {
|
||||
$binds_vids .= "?,";
|
||||
$params[] = $v;
|
||||
}
|
||||
if (substr($binds_vids, -1) === ",") {
|
||||
$binds_vids = substr($binds_vids, 0, -1);
|
||||
}
|
||||
$query .= " AND v.id IN ($binds_vids)";
|
||||
} else {
|
||||
$query .= " AND v.id = ?";
|
||||
$params[] = 0;
|
||||
}
|
||||
}
|
||||
if (isset($filter["own_by_vdr_id"])) {
|
||||
$query .= " AND v.vendor_id = ?";
|
||||
$params[] = $filter["own_by_vdr_id"];
|
||||
}
|
||||
if (isset($filter["active_rates"])) {
|
||||
// v1
|
||||
// $query .= " AND rate.vdr_id != 0 AND rate.dest_city != 0 AND rate.dest_district != 0";
|
||||
// $query .= " AND rate.origin_prov = ? AND (rate.dest_city = ? OR rate.dest_district = ?) AND rate.sell_kg = ? AND rate.sell_cbm = ? AND rate.long_time = ?";
|
||||
// array_push($params, $filter['active_rates']->origin_prov, $filter['active_rates']->dest_city, $filter['active_rates']->dest_district, $filter['active_rates']->sell_kg, $filter['active_rates']->sell_cbm, $filter['active_rates']->long_time);
|
||||
// v2
|
||||
$query .=
|
||||
" AND rate.vdr_id != 0 AND rate.dest_city != 0 AND rate.is_active = " . ConfRates::IS_ACTIVE;
|
||||
$query .=
|
||||
" AND rate.origin_prov = ? AND (rate.dest_city = ? OR rate.dest_district = ?) AND rate.sell_ftl = ? AND rate.long_time = ?";
|
||||
array_push(
|
||||
$params,
|
||||
$filter["active_rates"]->origin_prov,
|
||||
$filter["active_rates"]->dest_city,
|
||||
$filter["active_rates"]->dest_district,
|
||||
$filter["active_rates"]->sell_ftl,
|
||||
$filter["active_rates"]->long_time
|
||||
);
|
||||
}
|
||||
if (isset($filter["prefer_truck_type"])) {
|
||||
$query .= " AND v.type_id = ?";
|
||||
$params[] = $filter["prefer_truck_type"];
|
||||
}
|
||||
if (isset($filter["get_order_data"])) {
|
||||
if (isset($filter["client_id"])) {
|
||||
$query .= " AND ord_c.c_id = ?";
|
||||
$params[] = $filter["client_id"];
|
||||
}
|
||||
}
|
||||
if (isset($filter["company"])) {
|
||||
$query .= " AND client.id = ?";
|
||||
$params[] = $filter["company"];
|
||||
}
|
||||
|
||||
// $query .= " AND v.id = 70";
|
||||
|
||||
$query .= " GROUP BY v.id";
|
||||
$query .= " ORDER BY tr.crt_d DESC";
|
||||
$query .= " LIMIT 500;";
|
||||
|
||||
// dd($query);
|
||||
|
||||
$list = DB::select($query, $params);
|
||||
foreach ($list as $_list) {
|
||||
$_query =
|
||||
" SELECT SUM(pre_milleage) as vhc_sum_milleage FROM " . self::T_TRACKS . " WHERE vhc_id = ?";
|
||||
$_query = DB::select($_query, [$_list->vid]);
|
||||
$_list->vhc_sum_milleage = $_query[0]->vhc_sum_milleage;
|
||||
|
||||
$_query =
|
||||
"
|
||||
SELECT
|
||||
crt_s as lst_idle_at
|
||||
FROM
|
||||
" .
|
||||
self::T_TRACKS .
|
||||
"
|
||||
WHERE
|
||||
stts_engine = " .
|
||||
self::STTS_EN_IDLING .
|
||||
"
|
||||
AND vhc_id = ?
|
||||
AND crt_s >= (
|
||||
SELECT
|
||||
crt_s
|
||||
FROM
|
||||
" .
|
||||
self::T_TRACKS .
|
||||
"
|
||||
WHERE
|
||||
stts_engine IN (
|
||||
" .
|
||||
self::STTS_EN_STOPING .
|
||||
",
|
||||
" .
|
||||
self::STTS_EN_MOVING .
|
||||
")
|
||||
AND vhc_id = ?
|
||||
AND crt_s <= ?
|
||||
ORDER BY
|
||||
id DESC
|
||||
LIMIT 1
|
||||
)
|
||||
ORDER BY
|
||||
id ASC
|
||||
LIMIT 1";
|
||||
$_query = DB::select($_query, [$_list->vid, $_list->vid, $_list->lst_loc_crt_s]);
|
||||
$_list->lst_idle_at = count($_query) == 0 ? "" : $_query[0]->lst_idle_at;
|
||||
|
||||
$_query =
|
||||
"SELECT crt_s as lst_stop_at FROM " .
|
||||
self::T_TRACKS .
|
||||
" WHERE stts_engine = " .
|
||||
self::STTS_EN_STOPING .
|
||||
" AND vhc_id = ? AND crt_s >= (
|
||||
SELECT crt_s FROM " .
|
||||
self::T_TRACKS .
|
||||
" WHERE stts_engine IN (" .
|
||||
self::STTS_EN_IDLING .
|
||||
"," .
|
||||
self::STTS_EN_MOVING .
|
||||
") AND vhc_id = ? AND crt_s <= ? ORDER BY id DESC LIMIT 1
|
||||
) ORDER BY id ASC LIMIT 1 ";
|
||||
$_query = DB::select($_query, [$_list->vid, $_list->vid, $_list->lst_loc_crt_s]);
|
||||
$_list->lst_stop_at = count($_query) == 0 ? "" : $_query[0]->lst_stop_at;
|
||||
|
||||
$_query =
|
||||
" SELECT COUNT(id) as lst_heartbeat FROM " .
|
||||
self::T_TRACKS .
|
||||
" WHERE vhc_id = ? AND action = 'heartbeat' AND crt BETWEEN " .
|
||||
($now - 10 * 60) .
|
||||
" AND " .
|
||||
$now .
|
||||
" LIMIT 1";
|
||||
$_query = DB::select($_query, [$_list->vid]);
|
||||
$_list->lst_heartbeat = count($_query) == 0 ? "" : $_query[0]->lst_heartbeat;
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
public static function lastMoveTracks($vid, $filter = [])
|
||||
{
|
||||
$now = time();
|
||||
$params = [];
|
||||
|
||||
/**
|
||||
* bikin lemot 30s timeout karena ada 2 join di rows yang banyak
|
||||
* solution: indexing column
|
||||
* show index from t_gps_tracks_address;
|
||||
* create index addr_device_id on t_gps_tracks_address (device_id);
|
||||
* create index addr_master_id on t_gps_tracks_address (master_id);
|
||||
* show index from t_gps_tracks;
|
||||
* create index tracks_device_id on t_gps_tracks (device_id);
|
||||
* show index from t_vehicles;
|
||||
* create index vhc_device_id on t_vehicles (device_id);
|
||||
*
|
||||
* solution not working. Don't reinvent the wheel
|
||||
* create view. not working
|
||||
*/
|
||||
|
||||
$query = "SELECT";
|
||||
$query .= " v.id as vid,v.device_id,v.nopol1,v.nopol2,v.nopol3";
|
||||
$query .= " ,tr.id as master_id,tr.latitude,tr.longitude,tr.speed,tr.orientation";
|
||||
$query .= " ,tr.crt AS lst_loc_crt,tr.crt_d AS lst_loc_crt_d,tr.crt_s AS lst_loc_crt_s";
|
||||
$query .= " ,tr.ignition,tr.stts_engine";
|
||||
$query .= " ,tr.pre_milleage,tr.sum_milleage,tr.vhc_milleage,v.sum_milleage AS vhc_sum_milleage_1";
|
||||
$query .= " ,addr.master_id AS addr_master_id,addr.crt AS addr_loc_crt";
|
||||
$query .=
|
||||
" ,addr.country_text,addr.state_text,addr.city_text,addr.district_text,addr.village_text,addr.postcode,addr.streets,addr.postcode,addr.fulladdress";
|
||||
$query .= " FROM t_vehicles AS v";
|
||||
// $query .= " INNER JOIN " . self::T_TRACKS . " AS tr ON v.device_id = tr.device_id"; // cara lama berlaku utk gps tracker saja
|
||||
$query .= " INNER JOIN " . self::T_TRACKS . " AS tr ON v.id = tr.vhc_id"; // support gps tracker dan smartphone / apapun yang mempunyai device_id(IMEI)
|
||||
$query .= " LEFT JOIN " . self::T_TRACKS_ADDR . " AS addr ON tr.id = addr.master_id";
|
||||
$query .= " WHERE v.dlt is null";
|
||||
$query .= " AND v.id = ?";
|
||||
array_push($params, $vid);
|
||||
$query .= " AND tr.latitude is not null";
|
||||
$query .= " AND tr.longitude is not null";
|
||||
|
||||
// last move based on date
|
||||
// $query .= " AND tr.crt BETWEEN ? AND ?";
|
||||
// array_push($params, strtotime('-24 hours', $now), $now);
|
||||
|
||||
if (isset($filter["start_date"]) && isset($filter["end_date"])) {
|
||||
$query .= " AND tr.crt_d BETWEEN ? AND ?";
|
||||
array_push($params, $filter["start_date"], $filter["end_date"]);
|
||||
}
|
||||
|
||||
if (isset($filter["start_at"])) {
|
||||
$query .= " AND tr.crt > ?";
|
||||
$params[] = $filter["start_at"];
|
||||
}
|
||||
|
||||
// last move based on last count data
|
||||
$query .= " GROUP BY tr.crt_d";
|
||||
$query .= " ORDER BY tr.crt_d DESC";
|
||||
// array_push($params, strtotime('-24 hours', $now), $now);
|
||||
|
||||
if (isset($filter["limit"])) {
|
||||
$query .= " LIMIT ?";
|
||||
$params[] = $filter["limit"] ?? 500;
|
||||
}
|
||||
|
||||
$query .= " ;";
|
||||
|
||||
return DB::select($query, $params);
|
||||
}
|
||||
|
||||
public static function nearestInCircle($lat, $lng, $rad, $filter = [])
|
||||
{
|
||||
$earth_rad = Helper::EARTH_RADIUS_M;
|
||||
$t_gps_tracks = self::T_TRACKS;
|
||||
|
||||
$select_select = "";
|
||||
$join_join = "";
|
||||
$where_where = "";
|
||||
|
||||
$params = [
|
||||
"lat1" => $lat,
|
||||
"lat2" => $lat,
|
||||
"lng" => $lng,
|
||||
"v_status" => Vehicles::STTS_ACTIVE,
|
||||
"v_is_in_ord" => Vehicles::IN_ORD_NO,
|
||||
"rad" => $rad,
|
||||
];
|
||||
|
||||
if (isset($filter["active_rates"])) {
|
||||
$select_select .=
|
||||
",rate.vdr_id as rate_vdr_id,rate.vhc_type as rate_vhc_type,rate.origin_prov as rate_origin_prov,rate.dest_city as rate_dest_city,rate.dest_district as rate_dest_district";
|
||||
$select_select .=
|
||||
",rate.fast_time as rate_fast_time,rate.long_time as rate_long_time,rate.sell_kg as rate_sell_kg,rate.sell_cbm";
|
||||
}
|
||||
if (isset($filter["active_rates"])) {
|
||||
// $join_join .= " INNER JOIN t_conf_rates as rate ON v.type_id = rate.vhc_type";
|
||||
$join_join .= " INNER JOIN t_conf_rates as rate ON v.vendor_id = rate.vdr_id";
|
||||
}
|
||||
if (isset($filter["active_rates"])) {
|
||||
// v1
|
||||
// $where_where .= " AND rate.vdr_id != 0 AND rate.dest_city != 0 AND rate.dest_district != 0";
|
||||
// $where_where .= " AND rate.origin_prov = :origin_prov AND (rate.dest_city = :dest_city OR rate.dest_district = :dest_district) AND rate.sell_kg = :sell_kg AND rate.sell_cbm = :sell_cbm AND rate.long_time = :long_time";
|
||||
// v2
|
||||
$where_where .=
|
||||
" AND rate.vdr_id != 0 AND rate.dest_city != 0 AND rate.is_active = " . ConfRates::IS_ACTIVE;
|
||||
$where_where .=
|
||||
" AND rate.origin_prov = :origin_prov AND (rate.dest_city = :dest_city OR rate.dest_district = :dest_district) AND rate.sell_ftl = :sell_ftl AND rate.long_time = :long_time";
|
||||
$params["origin_prov"] = $filter["active_rates"]->origin_prov;
|
||||
$params["dest_city"] = $filter["active_rates"]->dest_city;
|
||||
$params["dest_district"] = $filter["active_rates"]->dest_district;
|
||||
// v1
|
||||
// $params['sell_kg'] = $filter['active_rates']->sell_kg;
|
||||
// $params['sell_cbm'] = $filter['active_rates']->sell_cbm;
|
||||
// v2
|
||||
$params["sell_ftl"] = $filter["active_rates"]->sell_ftl;
|
||||
$params["long_time"] = $filter["active_rates"]->long_time;
|
||||
}
|
||||
if (isset($filter["prefer_truck_type"])) {
|
||||
$where_where .= " AND v.type_id = :prefer_truck_type";
|
||||
$params["prefer_truck_type"] = $filter["prefer_truck_type"];
|
||||
}
|
||||
|
||||
$query = "SELECT v.*,tr.latitude,tr.longitude,tr.id as master_id
|
||||
,u.first_name as vendor_name,u.phone as vendor_phone,u.phone_code as vendor_phone_code,u.email as vendor_mail,u.fulladdress as vendor_addr
|
||||
,( $earth_rad * acos( cos( radians( :lat1 ) ) * cos( radians( tr.latitude ) )
|
||||
* cos( radians( tr.longitude ) - radians( :lng ) ) + sin( radians( :lat2 ) ) * sin(radians( tr.latitude )) ) ) AS distance
|
||||
$select_select
|
||||
FROM $t_gps_tracks as tr
|
||||
INNER JOIN t_vehicles as v ON tr.vhc_id = v.id
|
||||
INNER JOIN t_users as u ON v.vendor_id = u.id
|
||||
-- get last updated row from many rows
|
||||
LEFT JOIN ( SELECT MAX(crt) max_crt, vhc_id FROM $t_gps_tracks WHERE latitude is not null AND longitude is not null GROUP BY vhc_id ORDER BY crt DESC ) AS tr1 ON (v.id = tr1.vhc_id)
|
||||
$join_join
|
||||
WHERE v.dlt is null
|
||||
AND v.status = :v_status
|
||||
AND v.is_in_ord = :v_is_in_ord
|
||||
AND tr.latitude is not null
|
||||
AND tr.longitude != 0
|
||||
-- get last updated row from many rows
|
||||
AND tr.crt = tr1.max_crt
|
||||
$where_where
|
||||
GROUP BY tr.vhc_id
|
||||
HAVING distance <= :rad
|
||||
-- ORDER BY distance ASC
|
||||
ORDER BY tr.crt DESC
|
||||
;";
|
||||
return DB::select($query, $params);
|
||||
}
|
||||
|
||||
public static function addTracks($data)
|
||||
{
|
||||
$id = DB::table(self::T_TRACKS)->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function addTracksAddr($data)
|
||||
{
|
||||
$id = DB::table(self::T_TRACKS_ADDR)->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function listLogsGps($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$where_where = "";
|
||||
$limit = "";
|
||||
|
||||
if (isset($filter["crt_greater_than"])) {
|
||||
$where_where .= " AND crt > ?";
|
||||
$params[] = $filter["crt_greater_than"];
|
||||
}
|
||||
|
||||
if (isset($filter["limit"])) {
|
||||
$limit .= " LIMIT ?";
|
||||
$params[] = $filter["limit"];
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
*
|
||||
FROM " .
|
||||
self::T_TRACKS .
|
||||
" as tr
|
||||
WHERE device_id is not null
|
||||
AND device_id != 0
|
||||
" .
|
||||
$where_where .
|
||||
"
|
||||
ORDER BY tr.crt DESC
|
||||
" .
|
||||
$limit .
|
||||
"
|
||||
",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function gpsLocsAddr($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = "";
|
||||
$join = "";
|
||||
$where = "";
|
||||
$order_by = "";
|
||||
$group_by = "";
|
||||
$limit = "";
|
||||
|
||||
if (isset($filter["source"])) {
|
||||
$where .= " AND tr.source = ?";
|
||||
$params[] = $filter["source"];
|
||||
}
|
||||
|
||||
if (isset($filter["vhc_id"])) {
|
||||
$where .= " AND tr.vhc_id = ?";
|
||||
$params[] = $filter["vhc_id"];
|
||||
}
|
||||
|
||||
if (isset($filter["drv_id"])) {
|
||||
$where .= " AND tr.drv_id = ?";
|
||||
$params[] = $filter["drv_id"];
|
||||
}
|
||||
|
||||
if (isset($filter["group_by"])) {
|
||||
$group_by .= " GROUP BY " . $filter["group_by"];
|
||||
}
|
||||
if (isset($filter["order_by"])) {
|
||||
$order_by .= " ORDER BY " . $filter["order_by"];
|
||||
}
|
||||
if (isset($filter["limit"])) {
|
||||
$limit .= " LIMIT " . $filter["limit"];
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
tr.*
|
||||
,tr_addr.country_id,tr_addr.country_text,tr_addr.state_id,tr_addr.state_text,tr_addr.city_id,tr_addr.city_text
|
||||
,tr_addr.district_id,tr_addr.district_text,tr_addr.village_id,tr_addr.village_text,tr_addr.postcode,tr_addr.streets,tr_addr.fulladdress
|
||||
,tr_addr.stts_reverse_geo
|
||||
$select
|
||||
FROM t_gps_tracks as tr
|
||||
LEFT JOIN t_gps_tracks_address as tr_addr ON tr.id = tr_addr.master_id
|
||||
$join
|
||||
WHERE tr.latitude is not null AND tr.longitude != 0
|
||||
$where
|
||||
$group_by
|
||||
$order_by
|
||||
$limit
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
}
|
||||
94
app/Models/UnitTypes.php
Executable file
94
app/Models/UnitTypes.php
Executable file
@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class UnitTypes extends Model
|
||||
{
|
||||
const IS_ACTIVE = 1;
|
||||
const IS_INACTIVE = 2;
|
||||
|
||||
const IS_PUBLISH = 1;
|
||||
const IS_UNPUBLISH = 2;
|
||||
|
||||
// 1=>paket,2=>orang,3=>unit,4=>pcs
|
||||
const UNIT_TYPE_PAKET = 1;
|
||||
const UNIT_TYPE_ORANG = 2;
|
||||
const UNIT_TYPE_UNIT = 3;
|
||||
const UNIT_TYPE_PCS = 4;
|
||||
const UNIT_TYPE_LITER = 5;
|
||||
const UNIT_TYPE_CBM = 6;
|
||||
const UNIT_TYPE_KG = 7;
|
||||
const UNIT_TYPE_KOLI = 8;
|
||||
const UNIT_TYPE_DAY = 9;
|
||||
const UNIT_TYPE_HOUR = 10;
|
||||
const UNIT_TYPE_MINUTE = 11;
|
||||
const UNIT_TYPE_SECOND = 12;
|
||||
const UNIT_TYPE_METER = 13;
|
||||
const UNIT_TYPE_KM = 14;
|
||||
const UNIT_TYPE_GRAM = 15;
|
||||
const UNIT_TYPE_METER_PERSEGI = 16;
|
||||
const UNIT_TYPE_LOT = 17;
|
||||
const UNIT_TYPE_LS = 18;
|
||||
|
||||
public static function listUnitTypes($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = '';
|
||||
$where = '';
|
||||
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND ut.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
|
||||
if (isset($filter['is_publish'])) {
|
||||
$where .= ' AND ut.is_publish = ?';
|
||||
$params[] = $filter['is_publish'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT
|
||||
ut.*
|
||||
$select
|
||||
FROM
|
||||
t_unit_types as ut
|
||||
WHERE dlt is null
|
||||
$where
|
||||
ORDER BY ut.name ASC
|
||||
;",
|
||||
$params);
|
||||
}
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_unit_types as ut WHERE dlt is null ORDER BY ut.name ASC;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_unit_types as ut WHERE dlt is null AND id = ? ORDER BY ut.name ASC LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByName($name)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_unit_types as ut WHERE dlt is null AND name = ? ORDER BY ut.name ASC LIMIT 1;", [$name]);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_unit_types")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_unit_types")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_unit_types")->where("id", $id)->delete();
|
||||
}
|
||||
}
|
||||
268
app/Models/Users.php
Executable file
268
app/Models/Users.php
Executable file
@ -0,0 +1,268 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Users extends Model
|
||||
{
|
||||
const ROLE_SU = 1; // unused
|
||||
const ROLE_SUPERADMIN = 7;
|
||||
const ROLE_ADMIN = 2;
|
||||
const ROLE_VENDOR = 8;
|
||||
const ROLE_CHECKER = 9;
|
||||
const ROLE_USER = 3; // unused
|
||||
const ROLE_CLIENT_ADMIN = 4;
|
||||
const ROLE_VENDOR_DRIVER = 12;
|
||||
const ROLE_CLIENT_STAFF = 5; // unused
|
||||
const ROLE_CLIENT_USER = 6; // unused
|
||||
const ROLE_SPECIAL_TRACKING = 10;
|
||||
const ROLE_FINANCE = 11;
|
||||
|
||||
const STATUS_ACTIVE = 1;
|
||||
const STATUS_NOT_ACTIVE = 2;
|
||||
const STATUS_SUSPEND = 3;
|
||||
|
||||
const CHK_TYPE_PICKUP = 1;
|
||||
const CHK_TYPE_DROP = 2;
|
||||
const CHK_TYPE_ALL = 3;
|
||||
|
||||
const IS_TRACK_VHC_NO = 0;
|
||||
const IS_TRACK_VHC_YES = 1;
|
||||
const IS_TRACK_VHC_DEFAULT = 2;
|
||||
|
||||
const IS_VDR_BCNG_NO = 0;
|
||||
const IS_VDR_BCNG_YES = 1;
|
||||
|
||||
const DEFAULT_UID = 1; // swanusa account
|
||||
|
||||
const DEFAULT_PHONE_CODE = 62;
|
||||
|
||||
const defaultSelected = "
|
||||
u.*
|
||||
,c.c_name AS client_group_name,c.id AS client_group_id
|
||||
,r.name AS role_name
|
||||
";
|
||||
|
||||
public static function listUsers($filter = [])
|
||||
{
|
||||
$select_select = "";
|
||||
$join_join = "";
|
||||
$where_where = "";
|
||||
$other_other = "";
|
||||
$params = [];
|
||||
|
||||
if (isset($filter["role"])) {
|
||||
$where_where .= " AND u.role = ?";
|
||||
$params[] = $filter["role"];
|
||||
}
|
||||
if (isset($filter["id"])) {
|
||||
$where_where .= " AND u.id = ?";
|
||||
$params[] = $filter["id"];
|
||||
}
|
||||
|
||||
if (isset($filter["status"])) {
|
||||
$where_where .= " AND u.status = ?";
|
||||
$params[] = $filter["status"];
|
||||
}
|
||||
|
||||
if (isset($filter["company"])) {
|
||||
$where_where .= " AND c.id = ?";
|
||||
$params[] = $filter["company"];
|
||||
}
|
||||
|
||||
if (isset($filter["group_by_client_pt_id"])) {
|
||||
$other_other .= " GROUP BY c.id";
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
Users::defaultSelected .
|
||||
"
|
||||
$select_select
|
||||
FROM t_users AS u
|
||||
LEFT JOIN t_clients AS c ON u.client_group_id = c.id
|
||||
LEFT JOIN t_users_roles AS r ON u.role = r.id
|
||||
$join_join
|
||||
WHERE u.dlt is null
|
||||
$where_where
|
||||
$other_other
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function listUsersByRole($role)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
Users::defaultSelected .
|
||||
"
|
||||
FROM t_users AS u
|
||||
LEFT JOIN t_clients AS c ON u.client_group_id = c.id
|
||||
LEFT JOIN t_users_roles AS r ON u.role = r.id
|
||||
WHERE u.dlt is null
|
||||
AND u.role = ? ;",
|
||||
[$role]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getUsers()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_users WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function getUsersActiveByRole($role)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_users WHERE dlt is null AND status = " . Users::STATUS_ACTIVE . " AND role = ?;",
|
||||
[$role]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getUserById($uid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_users WHERE dlt is null AND id = ? LIMIT 1;", [$uid]);
|
||||
}
|
||||
|
||||
public static function showUserById($uid)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
Users::defaultSelected .
|
||||
"
|
||||
FROM t_users AS u
|
||||
LEFT JOIN t_clients AS c ON u.client_group_id = c.id
|
||||
LEFT JOIN t_users_roles AS r ON u.role = r.id
|
||||
WHERE u.dlt is null
|
||||
AND u.id = ?
|
||||
LIMIT 1;",
|
||||
[$uid]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getUserByEmail($email)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_users WHERE dlt is null AND email = ? LIMIT 2;", [$email]);
|
||||
}
|
||||
|
||||
public static function getUserByPhone($phone)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_users WHERE dlt is null AND phone = ? LIMIT 2;", [$phone]);
|
||||
}
|
||||
|
||||
public static function getUserByClientId($cid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_users WHERE dlt is null AND client_id = ? LIMIT 1;", [$cid]);
|
||||
}
|
||||
|
||||
public static function getUserByGroupClientId($cid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_users WHERE dlt is null AND client_group_id = ? LIMIT 1;", [$cid]);
|
||||
}
|
||||
|
||||
public static function likeName($name, $role = 0)
|
||||
{
|
||||
$params = ["%" . $name . "%", "%" . $name . "%"];
|
||||
$where = "";
|
||||
|
||||
if ($role !== 0) {
|
||||
$where .= " AND role = ?";
|
||||
$params[] = $role;
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT * FROM t_users WHERE dlt is null AND (first_name LIKE ? OR last_name LIKE ?) $where;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function addUser($data)
|
||||
{
|
||||
$uid = DB::table("t_users")->insertGetId($data);
|
||||
return $uid;
|
||||
}
|
||||
|
||||
public static function updateUser($uid, $data)
|
||||
{
|
||||
return DB::table("t_users")
|
||||
->where("id", $uid)
|
||||
->update($data);
|
||||
}
|
||||
|
||||
public static function updateUsersByGroupClientId($cid, $data)
|
||||
{
|
||||
return DB::table("t_users")
|
||||
->where("client_group_id", $cid)
|
||||
->update($data);
|
||||
}
|
||||
|
||||
public static function deleteUser($uid, $data)
|
||||
{
|
||||
return DB::table("t_users")
|
||||
->where("id", $uid)
|
||||
->delete();
|
||||
}
|
||||
|
||||
public static function arrStatus()
|
||||
{
|
||||
return [Users::STATUS_ACTIVE, Users::STATUS_NOT_ACTIVE];
|
||||
}
|
||||
|
||||
public static function arrRoles()
|
||||
{
|
||||
return [
|
||||
Users::ROLE_SU,
|
||||
Users::ROLE_SUPERADMIN,
|
||||
Users::ROLE_ADMIN,
|
||||
Users::ROLE_FINANCE,
|
||||
Users::ROLE_VENDOR,
|
||||
Users::ROLE_CHECKER,
|
||||
Users::ROLE_USER,
|
||||
Users::ROLE_CLIENT_ADMIN,
|
||||
Users::ROLE_CLIENT_STAFF,
|
||||
Users::ROLE_CLIENT_USER,
|
||||
Users::ROLE_SPECIAL_TRACKING,
|
||||
];
|
||||
}
|
||||
|
||||
public static function listRoles($currentRole)
|
||||
{
|
||||
if ($currentRole == Users::ROLE_SUPERADMIN) {
|
||||
return DB::select(
|
||||
"SELECT * FROM t_users_roles WHERE dlt is null AND status = 1 AND id IN (?,?,?,?,?,?);",
|
||||
[
|
||||
// Users::ROLE_SUPERADMIN,
|
||||
Users::ROLE_ADMIN,
|
||||
Users::ROLE_FINANCE,
|
||||
Users::ROLE_VENDOR,
|
||||
Users::ROLE_CHECKER,
|
||||
Users::ROLE_CLIENT_ADMIN,
|
||||
Users::ROLE_SPECIAL_TRACKING,
|
||||
]
|
||||
);
|
||||
} elseif ($currentRole == Users::ROLE_ADMIN) {
|
||||
return DB::select(
|
||||
"SELECT * FROM t_users_roles WHERE dlt is null AND status = 1 AND id IN (?,?,?,?,?,?);",
|
||||
[
|
||||
Users::ROLE_ADMIN,
|
||||
Users::ROLE_FINANCE,
|
||||
Users::ROLE_VENDOR,
|
||||
Users::ROLE_CHECKER,
|
||||
Users::ROLE_CLIENT_ADMIN,
|
||||
Users::ROLE_SPECIAL_TRACKING,
|
||||
]
|
||||
);
|
||||
} elseif ($currentRole == Users::ROLE_CLIENT_ADMIN) {
|
||||
// return DB::select("SELECT * FROM t_users_roles WHERE dlt is null AND id IN (?,?);", [
|
||||
// Users::ROLE_CLIENT_STAFF,
|
||||
// Users::ROLE_CLIENT_USER,
|
||||
// ]);
|
||||
}
|
||||
return [];
|
||||
}
|
||||
}
|
||||
76
app/Models/UsersMenuPermissions.php
Executable file
76
app/Models/UsersMenuPermissions.php
Executable file
@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class UsersMenuPermissions extends Model
|
||||
{
|
||||
const IS_ACTIVE = 1;
|
||||
const IS_INACTIVE = 2;
|
||||
|
||||
const IS_NOPERMISSION = 0;
|
||||
const IS_PERMISSION = 1;
|
||||
|
||||
public static function listPermissionsMenus($filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = '';
|
||||
$where = '';
|
||||
|
||||
if (isset($filter['is_active'])) {
|
||||
$where .= ' AND pm.is_active = ?';
|
||||
$params[] = $filter['is_active'];
|
||||
}
|
||||
|
||||
return DB::select("SELECT
|
||||
pm.*
|
||||
$select
|
||||
FROM
|
||||
t_permissions_menus as pm
|
||||
WHERE pm.dlt is null
|
||||
$where
|
||||
ORDER BY pm.id ASC
|
||||
;",
|
||||
$params);
|
||||
}
|
||||
|
||||
public static function showPermissionsMenusById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_permissions_menus as pm WHERE dlt is null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function get()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_permissions_menus as pm WHERE dlt is null ORDER BY pm.name ASC;");
|
||||
}
|
||||
|
||||
public static function getById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_permissions_menus as pm WHERE dlt is null AND id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function getByName($name, $filter = [])
|
||||
{
|
||||
$params = [$name];
|
||||
$where = '';
|
||||
return DB::select("SELECT * FROM t_permissions_menus as pm WHERE dlt is null AND name = ? $where LIMIT 1;", $params);
|
||||
}
|
||||
|
||||
public static function add($data)
|
||||
{
|
||||
$id = DB::table("t_permissions_menus")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updt($id, $data)
|
||||
{
|
||||
return DB::table("t_permissions_menus")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function dlt($id)
|
||||
{
|
||||
return DB::table("t_permissions_menus")->where("id", $id)->delete();
|
||||
}
|
||||
}
|
||||
334
app/Models/Vehicles.php
Executable file
334
app/Models/Vehicles.php
Executable file
@ -0,0 +1,334 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class Vehicles extends Model
|
||||
{
|
||||
const DEFAULT_CAT_ID = 1; // truck
|
||||
const DEFAULT_TRACK_HOLIDAY = 1;
|
||||
const DEFAULT_TRACK_SCH_H = 24;
|
||||
const DEFAULT_TRACK_SCH_D = 7;
|
||||
|
||||
const MAX_DEVICE_ID = 16;
|
||||
const ENABLED_TRACK_HOLIDAY = 1;
|
||||
const DISABLED_TRACK_HOLIDAY = 2;
|
||||
|
||||
const STTS_ACTIVE = 1;
|
||||
const STTS_INACTIVE = 2;
|
||||
|
||||
const IN_ORD_YES = 1;
|
||||
const IN_ORD_NO = 2;
|
||||
|
||||
private const defaultSelectVehicle =
|
||||
"" .
|
||||
"v.*,vd.*," .
|
||||
"v.id as vid,vd.id as vd_id,v.sum_milleage," .
|
||||
"c.name as cat_name,t.name as type_name,b.name as brand_name,m.name as model_name," .
|
||||
"dc.fullname as dc_fullname,dc.phone as dc_phone,dc.phone_code as dc_phone_code," .
|
||||
"da.fullname as da_fullname,da.phone as da_phone,da.phone_code as da_phone_code," .
|
||||
"dvc.name as dvc_name,dvc.type as dvc_type";
|
||||
|
||||
public static function listVehicles($auth, $filter = [])
|
||||
{
|
||||
$params = [];
|
||||
$select = "";
|
||||
$where = "";
|
||||
|
||||
if ($auth->role == Users::ROLE_VENDOR) {
|
||||
$where .= " AND v.vendor_id = " . $auth->uid;
|
||||
}
|
||||
|
||||
if (isset($filter["company"])) {
|
||||
$where .= " AND client.id = ?";
|
||||
$params[] = $filter["company"];
|
||||
}
|
||||
|
||||
// vd.speed_limit,vd.fuel_capacity,vd.fuel_drop_treshold,vd.max_pressure,vd.fvhc_img,
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
self::defaultSelectVehicle .
|
||||
"
|
||||
,client.c_name as company_name
|
||||
" .
|
||||
$select .
|
||||
"
|
||||
FROM t_vehicles as v
|
||||
INNER JOIN t_vehicles_detail AS vd ON v.id = vd.vid
|
||||
LEFT JOIN t_vehicles_cats AS c ON v.cat_id = c.id
|
||||
LEFT JOIN t_vehicles_types AS t ON v.type_id = t.id
|
||||
LEFT JOIN t_vehicles_brands AS b ON v.brand_id = b.id
|
||||
LEFT JOIN t_vehicles_models AS m ON v.model_id = m.id
|
||||
LEFT JOIN t_drivers AS dc ON v.c_did = dc.id
|
||||
LEFT JOIN t_drivers AS da ON v.a_did = da.id
|
||||
LEFT JOIN t_users AS vdr ON v.vendor_id = vdr.id
|
||||
LEFT JOIN t_clients AS client ON vdr.client_group_id = client.id
|
||||
LEFT JOIN t_devices AS dvc ON v.device_id = dvc.device_id
|
||||
WHERE v.dlt is null
|
||||
" .
|
||||
$where .
|
||||
"
|
||||
ORDER BY v.id ASC;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function getVehicles()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_vehicles WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function showVehicleById($vid)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
self::defaultSelectVehicle .
|
||||
"
|
||||
FROM t_vehicles as v
|
||||
INNER JOIN t_vehicles_detail AS vd ON v.id = vd.vid
|
||||
LEFT JOIN t_vehicles_cats AS c ON v.cat_id = c.id
|
||||
LEFT JOIN t_vehicles_types AS t ON v.type_id = t.id
|
||||
LEFT JOIN t_vehicles_brands AS b ON v.brand_id = b.id
|
||||
LEFT JOIN t_vehicles_models AS m ON v.model_id = m.id
|
||||
LEFT JOIN t_drivers AS dc ON v.c_did = dc.id
|
||||
LEFT JOIN t_drivers AS da ON v.a_did = da.id
|
||||
LEFT JOIN t_devices AS dvc ON v.device_id = dvc.device_id
|
||||
WHERE v.dlt is null
|
||||
AND v.id = ?
|
||||
LIMIT 1;",
|
||||
[$vid]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getVehicleById($vid)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_vehicles WHERE dlt is null AND id = ? LIMIT 1;",
|
||||
[$vid]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getVehicleByDeviceId($device_id)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT v.*,vd.tax_exp,vd.kir_exp FROM t_vehicles as v INNER JOIN t_vehicles_detail as vd ON v.id = vd.vid WHERE v.dlt is null AND v.device_id = ? LIMIT 1;",
|
||||
[$device_id]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getVehicleBySimcard($simcard)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_vehicles WHERE dlt is null AND simcard = ? LIMIT 1;",
|
||||
[$simcard]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getVehicleByPlatNo($nopol1, $nopol2, $nopol3)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT v.*,vd.tax_exp,vd.kir_exp FROM t_vehicles as v INNER JOIN t_vehicles_detail as vd ON v.id = vd.vid WHERE v.dlt is null AND v.nopol1 = ? AND v.nopol2 = ? AND v.nopol3 = ? LIMIT 2;",
|
||||
[$nopol1, $nopol2, $nopol3]
|
||||
);
|
||||
}
|
||||
|
||||
public static function searchVehicleByPlatNo($nopol1, $nopol2, $nopol3)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT v.*,vd.tax_exp,vd.kir_exp FROM t_vehicles as v INNER JOIN t_vehicles_detail as vd ON v.id = vd.vid WHERE v.dlt is null AND v.nopol1 LIKE '%" .
|
||||
$nopol1 .
|
||||
"%' AND v.nopol2 LIKE '%" .
|
||||
$nopol2 .
|
||||
"%' AND v.nopol3 LIKE '%" .
|
||||
$nopol3 .
|
||||
"%';"
|
||||
);
|
||||
}
|
||||
|
||||
public static function getVehicleByIdAllData($vid)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT
|
||||
*,v.id as vhc_id
|
||||
FROM t_vehicles as v
|
||||
INNER JOIN t_vehicles_detail as vd ON v.id = vd.vid
|
||||
WHERE v.dlt is null
|
||||
AND v.id = ?
|
||||
LIMIT 1;",
|
||||
[$vid]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getVehiclesInIds($vids)
|
||||
{
|
||||
$params = [];
|
||||
$where_in = "";
|
||||
|
||||
$vids = explode(",", $vids);
|
||||
foreach ($vids as $vid) {
|
||||
$where_in .= "?,";
|
||||
array_push($params, $vid);
|
||||
}
|
||||
if (strpos($where_in, ",") !== false) {
|
||||
$where_in = substr($where_in, 0, -1);
|
||||
}
|
||||
return DB::select(
|
||||
"SELECT * FROM t_vehicles WHERE dlt is null AND id IN (" .
|
||||
$where_in .
|
||||
");",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function getVehiclesInIdsActiveNoInOrder($vids)
|
||||
{
|
||||
$params = [];
|
||||
$where_in = "";
|
||||
|
||||
$vids = explode(",", $vids);
|
||||
foreach ($vids as $vid) {
|
||||
$where_in .= "?,";
|
||||
array_push($params, $vid);
|
||||
}
|
||||
if (strpos($where_in, ",") !== false) {
|
||||
$where_in = substr($where_in, 0, -1);
|
||||
}
|
||||
return DB::select(
|
||||
"SELECT
|
||||
v.*,ord.status as ord_status
|
||||
FROM t_vehicles as v
|
||||
LEFT JOIN (SELECT MAX(ord_id) as max_ord_id,vhc_id FROM t_orders_vehicles GROUP BY vhc_id) as ord_vhc1 ON (v.id = ord_vhc1.vhc_id)
|
||||
LEFT JOIN t_orders as ord ON (ord_vhc1.max_ord_id = ord.id)
|
||||
WHERE v.dlt is null
|
||||
AND v.status = " .
|
||||
Vehicles::STTS_ACTIVE .
|
||||
"
|
||||
AND v.is_in_ord = " .
|
||||
Vehicles::IN_ORD_NO .
|
||||
"
|
||||
AND (ord.status is null OR ord.status IN (" .
|
||||
Orders::STTS_CLIENT_PAY .
|
||||
"," .
|
||||
Orders::STTS_VENDOR_PAYED .
|
||||
"," .
|
||||
Orders::STTS_CLOSE .
|
||||
"," .
|
||||
Orders::STTS_CANCEL .
|
||||
"))
|
||||
AND v.id IN (" .
|
||||
$where_in .
|
||||
")
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function getVehiclesInVendorIdsActiveNoInOrder(
|
||||
$vendorIds,
|
||||
$prefer_truck_type = 0
|
||||
) {
|
||||
$params = [];
|
||||
$where_in = "";
|
||||
$where_where = "";
|
||||
|
||||
$vendorIds = explode(",", $vendorIds);
|
||||
foreach ($vendorIds as $vendorId) {
|
||||
$where_in .= "?,";
|
||||
array_push($params, $vendorId);
|
||||
}
|
||||
if (strpos($where_in, ",") !== false) {
|
||||
$where_in = substr($where_in, 0, -1);
|
||||
}
|
||||
|
||||
if ($prefer_truck_type != 0) {
|
||||
$where_where = " AND v.type_id = ?";
|
||||
array_push($params, $prefer_truck_type);
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
v.*,ord.status as ord_status
|
||||
FROM t_vehicles as v
|
||||
LEFT JOIN (SELECT MAX(ord_id) as max_ord_id,vhc_id FROM t_orders_vehicles GROUP BY vhc_id) as ord_vhc1 ON (v.id = ord_vhc1.vhc_id)
|
||||
LEFT JOIN t_orders as ord ON (ord_vhc1.max_ord_id = ord.id)
|
||||
INNER JOIN t_gps_tracks as tr ON v.device_id = tr.device_id
|
||||
WHERE v.dlt is null
|
||||
AND v.status = " .
|
||||
Vehicles::STTS_ACTIVE .
|
||||
"
|
||||
AND v.is_in_ord = " .
|
||||
Vehicles::IN_ORD_NO .
|
||||
"
|
||||
AND (ord.status is null OR ord.status IN (" .
|
||||
Orders::STTS_CLIENT_PAY .
|
||||
"," .
|
||||
Orders::STTS_VENDOR_PAYED .
|
||||
"," .
|
||||
Orders::STTS_CLOSE .
|
||||
"," .
|
||||
Orders::STTS_CANCEL .
|
||||
"))
|
||||
AND v.vendor_id IN (" .
|
||||
$where_in .
|
||||
")
|
||||
$where_where
|
||||
GROUP BY v.id
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function addVehicle($data)
|
||||
{
|
||||
$vid = DB::table("t_vehicles")->insertGetId($data);
|
||||
return $vid;
|
||||
}
|
||||
|
||||
public static function updateVehicle($vid, $data)
|
||||
{
|
||||
return DB::table("t_vehicles")
|
||||
->where("id", $vid)
|
||||
->update($data);
|
||||
}
|
||||
|
||||
public static function deleteVehicle($vid)
|
||||
{
|
||||
return DB::table("t_vehicles")
|
||||
->where("id", $vid)
|
||||
->delete();
|
||||
}
|
||||
|
||||
// default 1: truck
|
||||
public static function listCats()
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_vehicles_cats WHERE dlt is null AND is_active = 1;"
|
||||
);
|
||||
}
|
||||
|
||||
// default 1: unknown
|
||||
public static function listBrands()
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_vehicles_brands WHERE dlt is null AND is_active = 1;"
|
||||
);
|
||||
}
|
||||
|
||||
public static function listTypes()
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_vehicles_types WHERE dlt is null AND is_active = 1;"
|
||||
);
|
||||
}
|
||||
|
||||
public static function listModels()
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT * FROM t_vehicles_models WHERE dlt is null AND is_active = 1;"
|
||||
);
|
||||
}
|
||||
}
|
||||
45
app/Models/VehiclesDetail.php
Executable file
45
app/Models/VehiclesDetail.php
Executable file
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class VehiclesDetail extends Model
|
||||
{
|
||||
public static function getDetailByVid($vid)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_vehicles_detail WHERE vid = ? LIMIT 1;", [$vid]);
|
||||
}
|
||||
|
||||
public static function getDetailById($id)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_vehicles_detail WHERE id = ? LIMIT 1;", [$id]);
|
||||
}
|
||||
|
||||
public static function addDetail($data)
|
||||
{
|
||||
$id = DB::table("t_vehicles_detail")->insertGetId($data);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public static function updateDetail($id, $data)
|
||||
{
|
||||
return DB::table("t_vehicles_detail")->where("id", $id)->update($data);
|
||||
}
|
||||
|
||||
public static function updateDetailByVid($vid, $data)
|
||||
{
|
||||
return DB::table("t_vehicles_detail")->where("vid", $vid)->update($data);
|
||||
}
|
||||
|
||||
public static function deleteDetail($id)
|
||||
{
|
||||
return DB::table("t_vehicles_detail")->where("id", $id)->delete();
|
||||
}
|
||||
|
||||
public static function deleteDetailByVid($vid)
|
||||
{
|
||||
return DB::table("t_vehicles_detail")->where("vid", $vid)->delete();
|
||||
}
|
||||
}
|
||||
388
app/Models/Zone.php
Executable file
388
app/Models/Zone.php
Executable file
@ -0,0 +1,388 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Models\Users;
|
||||
|
||||
class Zone extends Model
|
||||
{
|
||||
const ZONE_TYPE_WAREHOUSE = 1;
|
||||
const ZONE_TYPE_AREA = 2;
|
||||
|
||||
const ZONE_WORKFLOW_PICKUP = 1;
|
||||
const ZONE_WORKFLOW_DEST = 2; // alias drop zone
|
||||
const ZONE_WORKFLOW_PARKING = 3;
|
||||
const ZONE_WORKFLOW_SERVICE = 4;
|
||||
|
||||
const ZONE_BOUNDARY_CIRCLE = "circle";
|
||||
const ZONE_BOUNDARY_POLYGON = "polygon";
|
||||
const ZONE_BOUNDARY_RECTANGLE = "rectangle";
|
||||
const ZONE_BOUNDARY_NAME_CIRCLE = "Circle";
|
||||
const ZONE_BOUNDARY_NAME_POLYGON = "Polygon";
|
||||
const ZONE_BOUNDARY_NAME_RECTANGLE = "Rectangle";
|
||||
|
||||
const STATUS_ACTIVE = 1;
|
||||
const STATUS_INACTIVE = 2;
|
||||
|
||||
const defaultSelectInsideZone = "
|
||||
z.id as zid,z.name,z.desc,z.type,zt.name as type_name,z.workflow_type,zw.name as workflow_type_name
|
||||
,z.shiptocode,z.fulladdress,z.boundary_type,z.boundary_radius,z.boundary_latlngs,ST_AsText(boundary_points) as points
|
||||
,z.client_group_id,c.c_name,c_mail,c.pic_name,c.pic_mail
|
||||
";
|
||||
|
||||
public static function listZones($auth, $filter = [])
|
||||
{
|
||||
$params = [];
|
||||
|
||||
$query = "SELECT z.*";
|
||||
$query .= " ,c.c_name AS client_group_name";
|
||||
$query .= " ,zt.name AS type_name,zw.name AS workflow_type_name";
|
||||
$query .= " ,uc.first_name AS crt_name,up.first_name AS updt_name";
|
||||
$query .= " ,uc.role AS crt_role,up.role AS updt_role";
|
||||
$query .= " ,uc1.c_name AS crt_client_group_name,up1.c_name AS updt_client_group_name";
|
||||
$query .= " ,uc2.name AS crt_role_name,up2.name AS updt_role_name";
|
||||
$query .= " FROM t_zones AS z";
|
||||
$query .= " LEFT JOIN t_clients AS c ON z.client_group_id = c.id";
|
||||
$query .= " LEFT JOIN t_zones_types AS zt ON z.type = zt.id";
|
||||
$query .= " LEFT JOIN t_zones_workflows AS zw ON z.workflow_type = zw.id";
|
||||
$query .= " LEFT JOIN t_users AS uc ON z.crt_by = uc.id";
|
||||
$query .= " LEFT JOIN t_clients AS uc1 ON uc.client_group_id = uc1.id";
|
||||
$query .= " LEFT JOIN t_users AS up ON z.updt_by = up.id";
|
||||
$query .= " LEFT JOIN t_clients AS up1 ON uc.client_group_id = up1.id";
|
||||
$query .= " LEFT JOIN t_users_roles AS uc2 ON uc.role = uc2.id";
|
||||
$query .= " LEFT JOIN t_users_roles AS up2 ON up.role = up2.id";
|
||||
$query .= " WHERE z.dlt is null";
|
||||
|
||||
if ($auth->role == Users::ROLE_CLIENT_ADMIN) {
|
||||
$query .= " AND z.client_group_id = " . $auth->client_group_id;
|
||||
}
|
||||
|
||||
if ($auth->role == Users::ROLE_VENDOR) {
|
||||
$query .= " AND z.client_group_id = " . $auth->client_group_id;
|
||||
}
|
||||
|
||||
if (isset($filter["is_active"])) {
|
||||
if ($filter["is_active"] == self::STATUS_ACTIVE) {
|
||||
$query .= " AND z.status = " . self::STATUS_ACTIVE;
|
||||
} elseif ($filter["is_active"] == self::STATUS_INACTIVE) {
|
||||
$query .= " AND z.status = " . self::STATUS_INACTIVE;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($filter["company"])) {
|
||||
$query .= " AND c.id = ?";
|
||||
$params[] = $filter["company"];
|
||||
}
|
||||
|
||||
if (isset($filter["workflow_type"])) {
|
||||
$query .= " AND z.workflow_type = ?";
|
||||
$params[] = $filter["workflow_type"];
|
||||
}
|
||||
if (isset($filter["type"])) {
|
||||
$query .= " AND z.type = ?";
|
||||
$params[] = $filter["type"];
|
||||
}
|
||||
|
||||
return DB::select($query, $params);
|
||||
|
||||
// return DB::select("SELECT z.*
|
||||
// ,c.c_name AS client_group_name
|
||||
// ,zt.name AS type_name,zw.name AS workflow_type_name
|
||||
// ,uc.role AS crt_role,up.role AS updt_role
|
||||
// ,uc1.c_name AS crt_client_group_name,up1.c_name AS updt_client_group_name
|
||||
// ,uc2.name AS crt_role_name,up2.name AS updt_role_name
|
||||
// FROM t_zones AS z
|
||||
// LEFT JOIN t_clients AS c ON z.client_group_id = c.id
|
||||
// LEFT JOIN t_zones_types AS zt ON z.type = zt.id
|
||||
// LEFT JOIN t_zones_workflows AS zw ON z.workflow_type = zw.id
|
||||
// LEFT JOIN t_users AS uc ON z.crt_by = uc.id
|
||||
// LEFT JOIN t_clients AS uc1 ON uc.client_group_id = uc1.id
|
||||
// LEFT JOIN t_users AS up ON z.updt_by = up.id
|
||||
// LEFT JOIN t_clients AS up1 ON uc.client_group_id = up1.id
|
||||
// LEFT JOIN t_users_roles AS uc2 ON uc.role = uc2.id
|
||||
// LEFT JOIN t_users_roles AS up2 ON up.role = up2.id
|
||||
// WHERE z.dlt is null
|
||||
// ;");
|
||||
}
|
||||
|
||||
public static function getActiveZones($client_group_id = 0, $type = 0, $workflow_type = 0)
|
||||
{
|
||||
$where_client_group_id = "";
|
||||
if ($client_group_id != 0) {
|
||||
$where_client_group_id = " AND z.client_group_id = " . $client_group_id;
|
||||
}
|
||||
|
||||
$where_type = "";
|
||||
if ($type != 0) {
|
||||
$where_type = " AND z.type = " . $type;
|
||||
}
|
||||
|
||||
$where_workflow_type = "";
|
||||
if ($workflow_type != 0) {
|
||||
$where_workflow_type = " AND z.workflow_type = " . $workflow_type;
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
z.*
|
||||
FROM t_zones as z WHERE z.dlt is null AND z.status = " .
|
||||
Zone::STATUS_ACTIVE .
|
||||
$where_client_group_id .
|
||||
$where_type .
|
||||
$where_workflow_type .
|
||||
" ;"
|
||||
);
|
||||
}
|
||||
|
||||
public static function showZoneById($zid)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT z.*
|
||||
,c.c_name AS client_group_name
|
||||
,zt.name AS type_name,zw.name AS workflow_type_name
|
||||
,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = z.prid LIMIT 1) as prid_name
|
||||
,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = z.ktid LIMIT 1) as ktid_name
|
||||
,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = z.kcid LIMIT 1) as kcid_name
|
||||
,(SELECT nmKelurahan FROM t_region WHERE kodeKel = z.klid LIMIT 1) as klid_name
|
||||
,uc.role AS crt_role,up.role AS updt_role
|
||||
,uc1.c_name AS crt_client_group_name,up1.c_name AS updt_client_group_name
|
||||
,uc2.name AS crt_role_name,up2.name AS updt_role_name
|
||||
FROM t_zones AS z
|
||||
LEFT JOIN t_clients AS c ON z.client_group_id = c.id
|
||||
LEFT JOIN t_zones_types AS zt ON z.type = zt.id
|
||||
LEFT JOIN t_zones_workflows AS zw ON z.workflow_type = zw.id
|
||||
LEFT JOIN t_users AS uc ON z.crt_by = uc.id
|
||||
LEFT JOIN t_clients AS uc1 ON uc.client_group_id = uc1.id
|
||||
LEFT JOIN t_users AS up ON z.updt_by = up.id
|
||||
LEFT JOIN t_clients AS up1 ON uc.client_group_id = up1.id
|
||||
LEFT JOIN t_users_roles AS uc2 ON uc.role = uc2.id
|
||||
LEFT JOIN t_users_roles AS up2 ON up.role = up2.id
|
||||
WHERE z.dlt is null
|
||||
AND z.id = ?
|
||||
LIMIT 1;",
|
||||
[$zid]
|
||||
);
|
||||
}
|
||||
|
||||
public static function getZoneById($zid, $filter = [])
|
||||
{
|
||||
$select = "";
|
||||
|
||||
if (isset($filter["region_name"])) {
|
||||
$select .= DB::raw(
|
||||
",(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = z.prid LIMIT 1) as prid_name ,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = z.ktid LIMIT 1) as ktid_name"
|
||||
);
|
||||
}
|
||||
|
||||
return DB::select("SELECT z.* $select FROM t_zones as z WHERE z.dlt is null AND z.id = ? LIMIT 1;", [
|
||||
$zid,
|
||||
]);
|
||||
}
|
||||
|
||||
public static function getZoneByIds($zids)
|
||||
{
|
||||
// dd($zids);
|
||||
$params = [];
|
||||
$where_in = "";
|
||||
foreach ($zids as $zid) {
|
||||
$where_in .= "?,";
|
||||
array_push($params, $zid);
|
||||
}
|
||||
if (strpos($where_in, ",") !== false) {
|
||||
$where_in = substr($where_in, 0, -1);
|
||||
}
|
||||
return DB::select(
|
||||
"SELECT z.*
|
||||
,(SELECT nmProvinsiKel FROM t_region WHERE kodeProv = z.prid LIMIT 1) as prid_name
|
||||
,(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = z.ktid LIMIT 1) as ktid_name
|
||||
-- ,(SELECT nmKecamatanKel FROM t_region WHERE kodeKec = z.kcid LIMIT 1) as kcid_name
|
||||
-- ,(SELECT nmKelurahan FROM t_region WHERE kodeKel = z.klid LIMIT 1) as klid_name
|
||||
FROM t_zones as z WHERE z.dlt is null AND z.id IN ($where_in);",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function getZoneByName($name)
|
||||
{
|
||||
return DB::select("SELECT * FROM t_zones WHERE dlt is null AND name = ? LIMIT 2;", [$name]);
|
||||
}
|
||||
|
||||
public static function insideZoneCircle($lat, $lng)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
Zone::defaultSelectInsideZone .
|
||||
"
|
||||
,ST_Distance_Sphere( ST_GeomFromText('POINT($lng $lat)'), z.boundary_points) AS distance_meters
|
||||
,MBRContains( boundary_points, ST_GeomFromText('POINT($lng $lat)') ) as is_contain
|
||||
,MBRWithin( ST_GeomFromText('POINT($lng $lat)'), boundary_points ) as is_within
|
||||
FROM t_zones AS z
|
||||
INNER JOIN t_zones_types AS zt ON z.type = zt.id
|
||||
INNER JOIN t_zones_workflows AS zw ON z.workflow_type = zw.id
|
||||
LEFT JOIN t_clients AS c ON z.client_group_id = c.id
|
||||
WHERE z.dlt is null AND z.status = ? AND z.boundary_type IN (?)
|
||||
HAVING boundary_radius >= distance_meters
|
||||
;",
|
||||
[Zone::STATUS_ACTIVE, Zone::ZONE_BOUNDARY_CIRCLE]
|
||||
);
|
||||
}
|
||||
|
||||
public static function insideZoneShape($lat, $lng)
|
||||
{
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
Zone::defaultSelectInsideZone .
|
||||
"
|
||||
,ST_Distance_Sphere( ST_GeomFromText('POINT($lng $lat)'), z.boundary_points) AS distance_meters
|
||||
,MBRContains( boundary_points, ST_GeomFromText('POINT($lng $lat)') ) as is_contain
|
||||
,MBRWithin( ST_GeomFromText('POINT($lng $lat)'), boundary_points ) as is_within
|
||||
FROM t_zones AS z
|
||||
INNER JOIN t_zones_types AS zt ON z.type = zt.id
|
||||
INNER JOIN t_zones_workflows AS zw ON z.workflow_type = zw.id
|
||||
LEFT JOIN t_clients AS c ON z.client_group_id = c.id
|
||||
WHERE z.dlt is null AND z.status = ? AND z.boundary_type IN (?,?)
|
||||
HAVING is_within = 1 AND is_contain = 1
|
||||
;",
|
||||
[Zone::STATUS_ACTIVE, Zone::ZONE_BOUNDARY_POLYGON, Zone::ZONE_BOUNDARY_RECTANGLE]
|
||||
);
|
||||
}
|
||||
|
||||
public static function insideOrdZoneCircle($lat, $lng, $filter = [])
|
||||
{
|
||||
$params = [Zone::STATUS_ACTIVE, Zone::ZONE_BOUNDARY_CIRCLE];
|
||||
$where = "";
|
||||
|
||||
if (isset($filter["zid"])) {
|
||||
$where .= " AND z.id = ?";
|
||||
$params[] = $filter["zid"];
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
Zone::defaultSelectInsideZone .
|
||||
"
|
||||
,ST_Distance_Sphere( ST_GeomFromText('POINT($lng $lat)'), z.boundary_points) AS distance_meters
|
||||
,MBRContains( boundary_points, ST_GeomFromText('POINT($lng $lat)') ) as is_contain
|
||||
,MBRWithin( ST_GeomFromText('POINT($lng $lat)'), boundary_points ) as is_within
|
||||
FROM t_zones AS z
|
||||
INNER JOIN t_zones_types AS zt ON z.type = zt.id
|
||||
INNER JOIN t_zones_workflows AS zw ON z.workflow_type = zw.id
|
||||
LEFT JOIN t_clients AS c ON z.client_group_id = c.id
|
||||
WHERE z.dlt is null AND z.status = ? AND z.boundary_type IN (?)
|
||||
$where
|
||||
HAVING boundary_radius >= distance_meters
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function insideOrdZoneShape($lat, $lng, $filter = [])
|
||||
{
|
||||
$params = [Zone::STATUS_ACTIVE, Zone::ZONE_BOUNDARY_POLYGON, Zone::ZONE_BOUNDARY_RECTANGLE];
|
||||
$where = "";
|
||||
|
||||
if (isset($filter["zid"])) {
|
||||
$where .= " AND z.id = ?";
|
||||
$params[] = $filter["zid"];
|
||||
}
|
||||
|
||||
return DB::select(
|
||||
"SELECT
|
||||
" .
|
||||
Zone::defaultSelectInsideZone .
|
||||
"
|
||||
,ST_Distance_Sphere( ST_GeomFromText('POINT($lng $lat)'), z.boundary_points) AS distance_meters
|
||||
,MBRContains( boundary_points, ST_GeomFromText('POINT($lng $lat)') ) as is_contain
|
||||
,MBRWithin( ST_GeomFromText('POINT($lng $lat)'), boundary_points ) as is_within
|
||||
FROM t_zones AS z
|
||||
INNER JOIN t_zones_types AS zt ON z.type = zt.id
|
||||
INNER JOIN t_zones_workflows AS zw ON z.workflow_type = zw.id
|
||||
LEFT JOIN t_clients AS c ON z.client_group_id = c.id
|
||||
WHERE z.dlt is null AND z.status = ? AND z.boundary_type IN (?,?)
|
||||
$where
|
||||
HAVING is_within = 1 AND is_contain = 1
|
||||
;",
|
||||
$params
|
||||
);
|
||||
}
|
||||
|
||||
public static function addZone($data)
|
||||
{
|
||||
$zid = DB::table("t_zones")->insertGetId($data);
|
||||
return $zid;
|
||||
}
|
||||
|
||||
public static function updateZone($zid, $data)
|
||||
{
|
||||
return DB::table("t_zones")
|
||||
->where("id", $zid)
|
||||
->update($data);
|
||||
}
|
||||
|
||||
public static function updateZonesByGroupClientId($zid, $data)
|
||||
{
|
||||
return DB::table("t_zones")
|
||||
->where("id", $zid)
|
||||
->update($data);
|
||||
}
|
||||
|
||||
public static function deleteZone($zid, $data)
|
||||
{
|
||||
return DB::table("t_zones")
|
||||
->where("id", $zid)
|
||||
->delete();
|
||||
}
|
||||
|
||||
public static function arrStatus()
|
||||
{
|
||||
return [Zone::STATUS_ACTIVE, Zone::STATUS_INACTIVE];
|
||||
}
|
||||
|
||||
public static function arrTypes()
|
||||
{
|
||||
return [Zone::ZONE_TYPE_WAREHOUSE];
|
||||
}
|
||||
|
||||
public static function listTypes()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_zones_types WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function arrWorkflows()
|
||||
{
|
||||
return [Zone::ZONE_WORKFLOW_PICKUP, Zone::ZONE_WORKFLOW_DEST, Zone::ZONE_WORKFLOW_PARKING];
|
||||
}
|
||||
|
||||
public static function listWorkflows()
|
||||
{
|
||||
return DB::select("SELECT * FROM t_zones_workflows WHERE dlt is null;");
|
||||
}
|
||||
|
||||
public static function arrBoundarys()
|
||||
{
|
||||
return [Zone::ZONE_BOUNDARY_CIRCLE, Zone::ZONE_BOUNDARY_POLYGON, Zone::ZONE_BOUNDARY_RECTANGLE];
|
||||
}
|
||||
|
||||
public static function listBoundarys()
|
||||
{
|
||||
return [
|
||||
[
|
||||
"id" => Zone::ZONE_BOUNDARY_CIRCLE,
|
||||
"name" => Zone::ZONE_BOUNDARY_NAME_CIRCLE,
|
||||
],
|
||||
[
|
||||
"id" => Zone::ZONE_BOUNDARY_POLYGON,
|
||||
"name" => Zone::ZONE_BOUNDARY_NAME_POLYGON,
|
||||
],
|
||||
[
|
||||
"id" => Zone::ZONE_BOUNDARY_RECTANGLE,
|
||||
"name" => Zone::ZONE_BOUNDARY_NAME_RECTANGLE,
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user