Advertisement
Guest User

Backend PHP

a guest
Jan 10th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 14.54 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Sts\WebToko\BO;
  4.  
  5. use Sts\PleafCore as PleafCore;
  6. use Sts\PleafCore\CoreException;
  7. use Sts\PleafCore\BusinessTransaction;
  8. use Sts\PleafCore\DefaultBusinessTransaction;
  9. use Sts\WebToko\Model\RecordOwner;
  10. use Sts\PleafCommon\Model\Tenant;
  11. use Sts\PleafCommon\Model\OU;
  12. use Sts\PleafCommon\Model\User;
  13. use Sts\PleafCommon\Model\Role;
  14. use Sts\PleafCommon\Model\SystemConfig;
  15. use Sts\WebToko\Model\Cashbank;
  16. use Sts\WebToko\Model\Warehouse;
  17. use Sts\PleafCommon\Model\UserRole;
  18.  
  19. use DB;
  20. use App;
  21. use Validator;
  22. use Log;
  23. use Sts\WebToko\Helpers\Audit;
  24.  
  25. /**
  26. * @author   Agung
  27. * @in  ou_company,ou_branch,ou_sub_branch,warehouse_id,record_owner_code,email,toko_id_sas,
  28. * current_status_toko
  29. *
  30. * @out  record_owner_id,ou_company,ou_branch,ou_sub_branch,warehouse_id,record_owner_code,email,toko_id_sas,current_status_toko
  31. */
  32.  
  33. class AddToko extends DefaultBusinessTransaction implements BusinessTransaction {
  34.  
  35.     use Audit;
  36.  
  37.     protected $attributes = [
  38.         'current_status_toko' => 'Status Toko Sekarang'
  39.     ];
  40.  
  41.     public function getDescription(){
  42.         return "Tambah Toko";
  43.     }
  44.  
  45.     public function prepare ($dto, $originalDto){
  46.         if(!isset($dto["record_owner_code"])){ 
  47.             throw new CoreException(ERROR_BUSINESS_VALIDATION,[],
  48.                 ["error_message" => "Kode Toko harus diisi"]); 
  49.         }
  50.  
  51.         if(empty($dto["record_owner_code"])){
  52.             throw new CoreException(ERROR_BUSINESS_VALIDATION,[],
  53.                 ["error_message" => "Kode Toko harus diisi"]);
  54.         }
  55.         $this->valUniqKey($dto);
  56.     }
  57.  
  58.     private function valUniqKey($dto) {
  59.         $isTokoExistsByIndex = App::make("isTokoExistsByIndex");
  60.  
  61.         $input = [
  62.             "record_owner_code" => $dto["record_owner_code"]
  63.         ];
  64.  
  65.         $recordOwnerDto = $isTokoExistsByIndex->execute($input);
  66.  
  67.         if($recordOwnerDto["exists"]) {
  68.                 throw new CoreException(ERROR_BUSINESS_VALIDATION,[],
  69.             ["error_message" => "Kode Toko ".$dto["record_owner_code"]." sudah ada"]);
  70.         }
  71.  
  72.     }
  73.  
  74.       public function process ($dto, $originalDto){
  75.             $userLoginId = $dto['user_id'];
  76.             $username = $dto['username'];
  77.             $datetime = $dto['datetime'];
  78.  
  79.             $tenant_code = $dto['record_owner_code'];
  80.             $tenant_name = $dto['ou_company'];
  81.             $email = $dto['email'];
  82.  
  83.             // insert tenant
  84.             $tenant = new Tenant();
  85.             $tenant->tenant_code = $tenant_code;
  86.             $tenant->description = "";
  87.             $tenant->tenant_key = md5($tenant_code);
  88.             $tenant->tenant_name = $dto['ou_company'];
  89.             $tenant->email = $email;
  90.             $tenant->host = "";
  91.             self::auditActive($tenant, $datetime);
  92.             self::auditInsert($tenant, $userLoginId, $datetime);
  93.             $tenant->save();
  94.  
  95.  
  96.             // insert record owner
  97.             $record_owner = new RecordOwner;
  98.             $record_owner->record_owner_id       = $tenant->tenant_id;
  99.             $record_owner->ou_company            = $dto['ou_company'];
  100.             $record_owner->ou_branch             = $dto['ou_branch'];
  101.             $record_owner->ou_sub_branch         = $dto['ou_sub_branch'];
  102.             $record_owner->warehouse_id          = 0;
  103.             $record_owner->record_owner_code     = $dto['record_owner_code'];
  104.             $record_owner->email                 = $dto['email'];
  105.             $record_owner->toko_id_sas           = $dto['toko_id_sas'];
  106.             $record_owner->current_status_toko   = $dto['current_status_toko'];
  107.  
  108.             $this->prepareAuditInsert($record_owner, $datetime, $username);
  109.             $this->prepareAuditActive($record_owner, $datetime);
  110.  
  111.             $record_owner->save();
  112.  
  113.             $warehouse_id = DB::table('m_warehouse')->insertGetId([
  114.                 'warehouse_code' => $dto['warehouse_code'],
  115.                 'warehouse_name' => $dto['warehouse_name'],
  116.                 'record_owner_id' => $tenant->tenant_id
  117.             ], 'warehouse_id');
  118.  
  119.            
  120.  
  121.             Log::debug("warehous id :".$warehouse_id);
  122.  
  123.             // update warehouse
  124.             DB::table('m_record_owner')
  125.                 ->where('record_owner_id', $tenant->tenant_id)
  126.                 ->update(['warehouse_id' => $warehouse_id]);
  127.  
  128.  
  129.             // insert OU
  130.             $ou = new OU;
  131.             $ou->tenant_id      = $tenant->tenant_id;
  132.             $ou->ou_code            = $dto['toko_id_sas']."_".$dto['ou_branch'];
  133.             $ou->ou_name            = $dto['toko_id_sas']."_".$dto['ou_branch'];
  134.             $ou->ou_type_id     = 1;
  135.             $ou->ou_parent_id   = -99;
  136.             self::auditActive($ou, $datetime);
  137.             self::auditInsert($ou, $userLoginId, $datetime);
  138.             $ou->save();
  139.  
  140.             $ou2 = new OU;
  141.             $ou2->tenant_id         = $tenant->tenant_id;
  142.             $ou2->ou_code           = $dto['toko_id_sas']."_".$dto['ou_branch'].
  143.                 "_".$dto['ou_sub_branch'];
  144.             $ou2->ou_name           = $dto['toko_id_sas']."_".$dto['ou_branch'].
  145.                 "_".$dto['ou_sub_branch'];
  146.             $ou2->ou_type_id    = 2;
  147.             $ou2->ou_parent_id  = $ou->ou_id;
  148.             self::auditActive($ou2, $datetime);
  149.             self::auditInsert($ou2, $userLoginId, $datetime);
  150.             $ou2->save();
  151.  
  152.             $role_manager = Role::where('role_name', '=', 'ShopManager')
  153.                             ->where('tenant_id', '=', -1)->first();
  154.             $role_admin = Role::where('role_name', '=', 'ShopAdmin')
  155.                             ->where('tenant_id', '=', -1)->first();
  156.             $role_casier = Role::where('role_name', '=', 'Cashier')
  157.             ->where('tenant_id', '=', -1)->first();
  158.             $userPassword = array();
  159.  
  160.             //insert 1 User Manager
  161.             $user = new User();
  162.             $user->tenant_id = $tenant->tenant_id;
  163.             $user->username = $dto['toko_id_sas']."mgr1";
  164.             $user->email = $dto['email'];
  165.             $user->fullname = $dto['ou_company']." Manager";
  166.             $passwd = rand(100000, 999999);
  167.             $user->password = bcrypt($passwd);
  168.             $userPassword[] = [
  169.                 "username" => $user->username,
  170.                 "password" => $passwd,
  171.                 "rolename" => "ShopManager"
  172.             ];  
  173.             $user->role_default_id = $role_manager->role_id;
  174.             $user->ou_default_id = $ou->ou_id;
  175.             self::auditActive($user,$datetime);
  176.             self::auditInsert($user,$userLoginId,$datetime);
  177.             $user->save();
  178.  
  179.             $userRole = new UserRole();
  180.             $userRole->user_id = $user->user_id;
  181.             $userRole->role_id = $role_manager->role_id;
  182.             self::auditActive($userRole,$datetime);
  183.             self::auditInsert($userRole,$userLoginId,$datetime);
  184.             $userRole->save();
  185.  
  186.             //insert 2 User Admin
  187.             $user = new User();
  188.             $user->tenant_id = $tenant->tenant_id;
  189.             $user->username = $dto['toko_id_sas']."admin1";
  190.             $user->email = $dto['email'];
  191.             $user->fullname = $dto['ou_company']." Admin";
  192.            
  193.             $passwd = rand(100000, 999999);
  194.            
  195.             $user->password = bcrypt($passwd);
  196.             $userPassword[] = [
  197.                 "username" => $user->username,
  198.                 "password" => $passwd,
  199.                 "rolename" => "ShopAdmin"
  200.             ];    
  201.            
  202.             $user->role_default_id = $role_admin->role_id;
  203.             $user->ou_default_id = $ou->ou_id;
  204.             self::auditActive($user,$datetime);
  205.             self::auditInsert($user,$userLoginId,$datetime);
  206.             $user->save();
  207.  
  208.             $userRole = new UserRole();
  209.             $userRole->user_id = $user->user_id;
  210.             $userRole->role_id = $role_admin->role_id;
  211.             self::auditActive($userRole,$datetime);
  212.             self::auditInsert($userRole,$userLoginId,$datetime);
  213.             $userRole->save();
  214.  
  215.             $user = new User();
  216.             $user->tenant_id = $tenant->tenant_id;
  217.             $user->username = $dto['toko_id_sas']."admin2";
  218.             $user->email = $dto['email'];
  219.             $user->fullname = $dto['ou_company']." Admin";
  220.            
  221.             $passwd = rand(100000, 999999);
  222.            
  223.             $user->password = bcrypt($passwd);
  224.             $userPassword[] = [
  225.                 "username" => $user->username,
  226.                 "password" => $passwd,
  227.                 "rolename" => "ShopAdmin"
  228.             ];    
  229.            
  230.             $user->role_default_id = $role_admin->role_id;
  231.             $user->ou_default_id = $ou->ou_id;
  232.             self::auditActive($user,$datetime);
  233.             self::auditInsert($user,$userLoginId,$datetime);
  234.             $user->save();
  235.  
  236.             $userRole = new UserRole();
  237.             $userRole->user_id = $user->user_id;
  238.             $userRole->role_id = $role_admin->role_id;
  239.             self::auditActive($userRole,$datetime);
  240.             self::auditInsert($userRole,$userLoginId,$datetime);
  241.             $userRole->save();
  242.  
  243.             //insert 3 User Cashier
  244.             $user = new User();
  245.             $user->tenant_id = $tenant->tenant_id;
  246.             $user->username = $dto['toko_id_sas']."kasir1";
  247.             $user->email = $dto['email'];
  248.             $user->fullname = $dto['ou_company']." Cashier";
  249.            
  250.             $passwd = rand(100000, 999999);
  251.            
  252.             $user->password = bcrypt($passwd);
  253.             $userPassword[] = [
  254.                 "username" => $user->username,
  255.                 "password" => $passwd,
  256.                 "rolename" => "Cashier"
  257.             ];  
  258.            
  259.             $user->role_default_id = $role_casier->role_id;
  260.             $user->ou_default_id = $ou->ou_id;
  261.             self::auditActive($user,$datetime);
  262.             self::auditInsert($user,$userLoginId,$datetime);
  263.             $user->save();
  264.  
  265.             $userRole = new UserRole();
  266.             $userRole->user_id = $user->user_id;
  267.             $userRole->role_id = $role_casier->role_id;
  268.             self::auditActive($userRole,$datetime);
  269.             self::auditInsert($userRole,$userLoginId,$datetime);
  270.             $userRole->save();
  271.  
  272.             $user = new User();
  273.             $user->tenant_id = $tenant->tenant_id;
  274.             $user->username = $dto['toko_id_sas']."kasir2";
  275.             $user->email = $dto['email'];
  276.             $user->fullname = $dto['ou_company']." Cashier";
  277.            
  278.             $passwd = rand(100000, 999999);
  279.            
  280.             $user->password = bcrypt($passwd);
  281.             $userPassword[] = [
  282.                 "username" => $user->username,
  283.                 "password" => $passwd,
  284.                 "rolename" => "Cashier"
  285.             ];  
  286.            
  287.             $user->role_default_id = $role_casier->role_id;
  288.             $user->ou_default_id = $ou->ou_id;
  289.             self::auditActive($user,$datetime);
  290.             self::auditInsert($user,$userLoginId,$datetime);
  291.             $user->save();
  292.  
  293.             $userRole = new UserRole();
  294.             $userRole->user_id = $user->user_id;
  295.             $userRole->role_id = $role_casier->role_id;
  296.             self::auditActive($userRole,$datetime);
  297.             self::auditInsert($userRole,$userLoginId,$datetime);
  298.             $userRole->save();
  299.  
  300.             $user = new User();
  301.             $user->tenant_id = $tenant->tenant_id;
  302.             $user->username = $dto['toko_id_sas']."kasir3";
  303.             $user->email = $dto['email'];
  304.             $user->fullname = $dto['ou_company']." Cashier";
  305.            
  306.             $passwd = rand(100000, 999999);
  307.            
  308.             $user->password = bcrypt($passwd);
  309.             $userPassword[] = [
  310.                 "username" => $user->username,
  311.                 "password" => $passwd,
  312.                 "rolename" => "Cashier"
  313.             ];    
  314.            
  315.             $user->role_default_id = $role_casier->role_id;
  316.             $user->ou_default_id = $ou->ou_id;
  317.             self::auditActive($user,$datetime);
  318.             self::auditInsert($user,$userLoginId,$datetime);
  319.             $user->save();
  320.  
  321.             $userRole = new UserRole();
  322.             $userRole->user_id = $user->user_id;
  323.             $userRole->role_id = $role_casier->role_id;
  324.             self::auditActive($userRole,$datetime);
  325.             self::auditInsert($userRole,$userLoginId,$datetime);
  326.             $userRole->save();
  327.  
  328.             $cashbank = new Cashbank;
  329.             $cashbank->record_owner_id          = $tenant->tenant_id;
  330.             $cashbank->cashbank_code            = "KAS";
  331.             $cashbank->cashbank_name            = "KAS";
  332.             $cashbank->curr_code                = "IDR";
  333.             $cashbank->flg_cash_bank            = "C";
  334.            
  335.             $this->prepareAuditInsert($cashbank, $datetime, $username);
  336.             // $this->prepareAuditActive($cashbank, $datetime);
  337.             $cashbank->save();
  338.  
  339.             // insert config2 toko
  340.             $paramValue = [
  341.                 "QTY.CAN.MINUS"             => "Y",
  342.                 "MAX.ACCOUNT.SHOP.MANAGER"  => 1,
  343.                 "MAX.ACCOUNT.SHOP.ADMIN"    => 2,
  344.                 "MAX.ACCOUNT.CASHIER"       => 3,
  345.                 "EMAIL.NOTIFICATION"        => "",
  346.                 "PRINT.TYPE"                => "B",
  347.                 "PRINT.COPYCOUNT"           => 2,
  348.                 "MAX.DIFFERENCE.PRICE"    => 999,
  349.             ];
  350.  
  351.             foreach($paramValue as $code => $value) {
  352.                 $systemConfig = new SystemConfig();
  353.  
  354.                 $getParamByIndex = App::make('getParamByIndex');
  355.                 $systemConfig->parameter_id = $getParamByIndex->execute(
  356.                     ['param_code' => $code]
  357.                 )["id"];
  358.  
  359.                 $systemConfig->parameter_value = $value;
  360.                 $systemConfig->tenant_id = $tenant->tenant_id;
  361.  
  362.                 self::auditActive($systemConfig, $datetime);
  363.                 self::auditInsert($systemConfig, $userLoginId,$datetime);
  364.                 $systemConfig->save();
  365.             }
  366.  
  367.             $sendDataToko = [
  368.  
  369.                 'record_owner_id'       => $record_owner->record_owner_id,
  370.                 'company_name'           => $record_owner->ou_company,
  371.                 'ou_branch'              => $record_owner->ou_branch,
  372.                 'ou_sub_branch'          => $record_owner->ou_sub_branch,
  373.                 'warehouse'              => $dto['warehouse_name'],
  374.                 'record_owner_code'    => $record_owner->record_owner_code,
  375.                 'email'                  => $record_owner->email,
  376.                 'toko_sas_id'           => $record_owner->toko_id_sas,
  377.                 'current_status_toko'  => $record_owner->current_status_toko,
  378.                 'create_username'        => $record_owner->create_username,
  379.                 'create_datetime'        => $record_owner->create_datetime,
  380.                 'update_username'        => $record_owner->update_username,
  381.                 'update_datetime'        => $record_owner->update_datetime,
  382.                 'version'              => $record_owner->version
  383.  
  384.             ];
  385.  
  386.             // insert admin ledger
  387.             $startYearMonth = $dto["start_date_trx"];
  388.            
  389.             $sql = "WITH lg_code AS (
  390.                         SELECT 'SALES' AS ledger_code
  391.                         UNION SELECT 'INV' AS ledger_code
  392.                         UNION SELECT 'FIN.AP' AS ledger_code
  393.                         UNION SELECT 'FIN.AR' AS ledger_code
  394.                         UNION SELECT 'PURCH' AS ledger_code
  395.                         UNION SELECT 'POS' AS ledger_code
  396.                         UNION SELECT 'GL' AS ledger_code
  397.                     )
  398.                 INSERT INTO m_admin_process_ledger(record_owner_id,year_month,ledger_code,status_ledger,flag_process,process_no,process_datetime,process_username,version,create_datetime,create_username,update_datetime,update_username)
  399.                 SELECT ".$record_owner->record_owner_id.", to_char(to_date('".$startYearMonth."', 'YYYYMM') - interval '1' month , 'YYYYMM') AS year_month,
  400.                 ledger_code, '1', 'Y',  ' ', to_char(NOW(), 'YYYYMMDDHH12MISS'), '".$username."', 0, to_char(NOW(), 'YYYYMMDDHH12MISS'), '".$username."',
  401.                 to_char(NOW(), 'YYYYMMDDHH12MISS'), '".$username."'
  402.                 FROM lg_code";
  403.  
  404.             DB::statement($sql);
  405.  
  406.             $sql = "WITH lg_code AS (
  407.                 SELECT 'SALES' AS ledger_code
  408.                 UNION SELECT 'INV' AS ledger_code
  409.                 UNION SELECT 'FIN.AP' AS ledger_code
  410.                 UNION SELECT 'FIN.AR' AS ledger_code
  411.                 UNION SELECT 'PURCH' AS ledger_code
  412.                 UNION SELECT 'POS' AS ledger_code
  413.                 UNION SELECT 'GL' AS ledger_code
  414.             )
  415.             INSERT INTO m_admin_process_ledger(record_owner_id,year_month,ledger_code,status_ledger,flag_process,process_no,process_datetime,process_username,version,create_datetime,create_username,update_datetime,update_username)
  416.             SELECT ".$record_owner->record_owner_id.", to_char(to_date('".$startYearMonth."', 'YYYYMM') + (interval '1' month * generate_series(0,598)), 'YYYYMM') AS year_month,
  417.             ledger_code, '0', 'N',  ' ', to_char(NOW(), 'YYYYMMDDHH12MISS'), '".$username."', 0, to_char(NOW(), 'YYYYMMDDHH12MISS'), '".$username."',
  418.             to_char(NOW(), 'YYYYMMDDHH12MISS'), '".$username."'
  419.             FROM lg_code";
  420.  
  421.             DB::statement($sql);
  422.  
  423.             return [
  424.                 "userPassword" => $userPassword,
  425.                 "record_owner" => $sendDataToko
  426.             ];
  427.       }
  428.  
  429.     protected function rules() {
  430.         return [
  431.             // "ou_company"                 => 'required',
  432.             //              "ou_branch"                 => 'required',
  433.             //              "ou_sub_branch"             => 'required',
  434.             //              "warehouse_id"              => 'required',
  435.             // "record_owner_code"      => 'required',
  436.             // "email"                  => 'email',
  437.             // "toko_id_sas"                => 'required',
  438.             // "current_status_toko"        => 'required'
  439.         ];
  440.     }
  441.  
  442.  
  443. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement