398 lines
11 KiB
PHP
Executable File
398 lines
11 KiB
PHP
Executable File
<?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();
|
|
}
|
|
}
|