| @@ -10,6 +10,9 @@ lerna-debug.log* | |||
| # Diagnostic reports (https://nodejs.org/api/report.html) | |||
| report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | |||
| #public db file | |||
| public/sqlite | |||
| # Runtime data | |||
| pids | |||
| *.pid | |||
| @@ -0,0 +1,46 @@ | |||
| var createError = require('http-errors'); | |||
| var express = require('express'); | |||
| var path = require('path'); | |||
| var cookieParser = require('cookie-parser'); | |||
| var logger = require('morgan'); | |||
| var dataGetRouter = require('../routes/dataget'); | |||
| var dataPostRouter = require('../routes/datapost'); | |||
| var hbsHelper = require('../util/handlebars_helper'); | |||
| //var usersRouter = require('../routes/users'); | |||
| var app = express(); | |||
| // view engine setup | |||
| app.set('views', path.join(__dirname, '../views')); | |||
| app.set('view engine', 'hbs'); | |||
| app.use(logger('dev')); | |||
| app.use(express.json({limit: '400mb'})); | |||
| app.use(express.urlencoded({limit: '400mb' ,parameterLimit: 4000000 , extended : false})); | |||
| app.use(cookieParser()); | |||
| app.use(express.static(path.join(__dirname, '../public'))); | |||
| app.use('/', dataGetRouter); | |||
| app.use('/', dataPostRouter); | |||
| //app.use('/users', usersRouter); | |||
| // catch 404 and forward to error handler | |||
| app.use(function(req, res, next) { | |||
| next(createError(404)); | |||
| }); | |||
| // error handler | |||
| app.use(function(err, req, res, next) { | |||
| // set locals, only providing error in development | |||
| res.locals.message = err.message; | |||
| res.locals.error = req.app.get('env') === 'development' ? err : {}; | |||
| // render the error page | |||
| res.status(err.status || 500); | |||
| res.render('error'); | |||
| }); | |||
| module.exports = app; | |||
| @@ -0,0 +1,12 @@ | |||
| var user = 'MOBAPP_PUBLIC_USER'; | |||
| var password = 'VPyKPAqRrG36'; | |||
| var connectString = '172.16.0.2'; | |||
| //var connectString = 'r1.thamrin.co.id' | |||
| var dbName = 'tbslive'; | |||
| module.exports.oracleConfig = { | |||
| user : user, | |||
| password : password, // mypw contains the hr schema password | |||
| connectString : `${connectString}/${dbName}` | |||
| } | |||
| @@ -0,0 +1,32 @@ | |||
| module.exports = { | |||
| apps : [{ | |||
| name: 'unit-stock', | |||
| script: 'server.js', | |||
| // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/ | |||
| args: 'one two', | |||
| instances: 4, | |||
| autorestart: true, | |||
| watch: false, | |||
| max_memory_restart: '1G', | |||
| env: { | |||
| NODE_ENV: 'development', | |||
| PORT: 14002 | |||
| }, | |||
| env_production: { | |||
| NODE_ENV: 'production', | |||
| PORT: 14002 | |||
| } | |||
| }], | |||
| deploy : { | |||
| production : { | |||
| user : 'node', | |||
| host : '212.83.163.1', | |||
| ref : 'origin/master', | |||
| repo : 'git@github.com:repo.git', | |||
| path : '/var/www/production', | |||
| 'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production' | |||
| } | |||
| } | |||
| }; | |||
| @@ -0,0 +1,481 @@ | |||
| var oracleFunc = require('../util/db_oracle.js'); | |||
| const oracledb = require('oracledb'); | |||
| const fs = require('fs'); | |||
| var moment = require('moment'); | |||
| var owner = 'TBS'; | |||
| async function getDataCabangByUser(company,user){ | |||
| let conn; | |||
| try{ | |||
| conn = await oracleFunc.getConnection(); | |||
| var query = ` | |||
| SELECT NAMA_CABANG AS DISPLAY_VALUE, CABANG_ID AS RETURN_VALUE | |||
| FROM ${owner}.CABANG | |||
| WHERE COMPANY = :COMPANY | |||
| AND ${owner}.User_Per_Cabang_API.Is_User_Available(company, cabang_id, :USERNAME) = 1 | |||
| ORDER BY NAMA_CABANG | |||
| `; | |||
| var params = {"COMPANY" : company , "USERNAME" : user}; | |||
| console.log(params); | |||
| var result = await oracleFunc.getQueryData(conn,query,params); | |||
| await oracleFunc.doRelease(conn); | |||
| return {"STATUS" : 1 ,"DATA" : result}; | |||
| } | |||
| catch(e){ | |||
| await oracleFunc.doRelease(conn); | |||
| return {"STATUS" : 0 , "DATA" : e} | |||
| } | |||
| } | |||
| async function getDataUser(user='',pass=''){ | |||
| let conn; | |||
| try{ | |||
| conn = await oracleFunc.getConnection(); | |||
| var checkView2 = ` | |||
| select ${owner}.UTILS_API.Is_View_Available('STOCK_TAKING_UNIT_MOB_APP', :USERNAME) LOGIN_STATUS from dual | |||
| `; | |||
| var paramView = {"USERNAME" : user}; | |||
| var resultView = await oracleFunc.getQueryData(conn,checkView2,paramView); | |||
| if(resultView[0]["LOGIN_STATUS"] == 'FALSE') throw 'Username or password incorrect !' | |||
| var checkQuery = ` | |||
| select ${owner}.Mobile_APP_Utils_API.Sales_Mobile_Auth(:USERNAME, :PASSWORD) data from dual | |||
| ` | |||
| var params = {"USERNAME" : user , "PASSWORD" : pass}; | |||
| var result = await oracleFunc.getQueryData(conn,checkQuery,params); | |||
| var dataUser = JSON.parse(result[0]["DATA"]); | |||
| if(dataUser["status"] == "ERR") throw dataUser["info"]; | |||
| await oracleFunc.doRelease(conn); | |||
| return {"STATUS" : 1,"DATA": {'COMPANY' : dataUser["company"],'USER' : dataUser["login_db_user"]}}; | |||
| } | |||
| catch(e){ | |||
| await oracleFunc.doRelease(conn); | |||
| return {"STATUS" : 0 , "DATA" : e}; | |||
| } | |||
| } | |||
| async function getDataCabang(company = '%',cabangId = '%'){ | |||
| var query = `select | |||
| company, | |||
| cabang_id, | |||
| nama_cabang, | |||
| latitude, | |||
| longitude | |||
| from ${owner}.cabang | |||
| where company like :COMPANY | |||
| and cabang_id like :CABANG_ID`; | |||
| var params = {"COMPANY" : company , "CABANG_ID" : cabangId}; | |||
| var result = await oracleFunc.getData(query,params); | |||
| return result; | |||
| } | |||
| async function getStateStockTaking(company, stockTakingId){ | |||
| let conn; | |||
| try{ | |||
| conn = await oracleFunc.getConnection(); | |||
| var query = ` | |||
| select ${owner}.Stock_Taking_Unit_API.Get_Status_Stock_Taking( | |||
| company_ => :COMPANY, | |||
| stock_taking_unit_id_ => :STOCK_TAKING_UNIT_ID) state from dual | |||
| `; | |||
| var params = {"COMPANY" : company , "STOCK_TAKING_UNIT_ID" : stockTakingId}; | |||
| var result = await oracleFunc.getQueryData(conn,query,params); | |||
| await oracleFunc.doRelease(conn); | |||
| return {"STATUS" : 1 , "DATA" : result[0]}; | |||
| } | |||
| catch(e){ | |||
| await oracleFunc.doRelease(conn); | |||
| return {"STATUS" : 0 , "DATA" : e}; | |||
| } | |||
| } | |||
| async function getActiveStockTakingByCabang(company, cabangId){ | |||
| let conn; | |||
| try { | |||
| conn = await oracleFunc.getConnection(); | |||
| var query = ` | |||
| SELECT * | |||
| FROM ( | |||
| SELECT | |||
| stock_taking_unit_id, | |||
| state | |||
| from ${owner}.stock_taking_unit | |||
| where company = :COMPANY | |||
| and cabang_id = :CABANG_ID | |||
| and state IN ('Open','Submitted') | |||
| order by tgl_start desc | |||
| ) | |||
| WHERE rownum = 1 | |||
| `; | |||
| var paramsQuery = {"COMPANY" : company , "CABANG_ID" : cabangId}; | |||
| var result = await oracleFunc.getQueryData(conn,query,paramsQuery); | |||
| var a = result[0]; | |||
| await oracleFunc.doRelease(conn); | |||
| return a; | |||
| } | |||
| catch(e){ | |||
| await oracleFunc.doRelease(conn); | |||
| throw e; | |||
| } | |||
| } | |||
| async function getDataUnit(conn,company,cabangId){ | |||
| var query = `SELECT | |||
| company, | |||
| cabang_id, | |||
| mesin, | |||
| kode, | |||
| rangka, | |||
| tipe, | |||
| warna, | |||
| tahun, | |||
| state | |||
| FROM ${owner}.unit_baru | |||
| WHERE company = :COMPANY | |||
| AND cabang_id = :CABANG_ID | |||
| AND state IN ('Ready','OnChannel') | |||
| `; | |||
| var params = {"COMPANY" : company,"CABANG_ID":cabangId}; | |||
| var result = await oracleFunc.getQueryData(conn,query,params); | |||
| return result; | |||
| } | |||
| async function submitStockTaking(company,stockTakingId){ | |||
| let conn; | |||
| try{ | |||
| conn = await oracleFunc.getConnection(); | |||
| var query = ` | |||
| BEGIN | |||
| ${owner}.STOCK_TAKING_UNIT_API.Call_Submit( | |||
| company_ => :COMPANY, | |||
| stock_taking_unit_id_ => :STOCK_TAKING_UNIT_ID); | |||
| END; | |||
| `; | |||
| var params = {"COMPANY" : company , "STOCK_TAKING_UNIT_ID" : stockTakingId}; | |||
| console.log(params); | |||
| await oracleFunc.runQueryData(conn,query,params); | |||
| await oracleFunc.doCommit(conn); | |||
| await oracleFunc.doRelease(conn); | |||
| return {"STATUS" : 1 ,"DATA" : 'Stock Taking Submit Completed '}; | |||
| } | |||
| catch(e){ | |||
| await oracleFunc.doRelease(conn); | |||
| return {"STATUS" : 0 , "DATA" : e}; | |||
| } | |||
| } | |||
| async function prepareStockCollection(company = '' , cabangId = ''){ | |||
| let conn; | |||
| try{ | |||
| conn = await oracleFunc.getConnection(); | |||
| var queryStockUnit = ` | |||
| BEGIN | |||
| ${owner}.Stock_Taking_Unit_API.Create_Update_Record( | |||
| company_ => :COMPANY, | |||
| stock_taking_unit_id_ => :STOCK_TAKING_UNIT_ID, | |||
| tgl_stock_taking_ => TO_DATE(:TGL_STOCK_TAKING,'DD-MM-YYYY'), | |||
| tgl_start_ => TO_DATE(:TGL_START,'DD-MM-YYYY HH24:MI:SS'), | |||
| tgl_selesai_ => TO_DATE(:TGL_SELESAI,'DD-MM-YYYY HH24:MI:SS'), | |||
| cabang_id_ => :CABANG_ID); | |||
| END;`; | |||
| var paramStockUnit = { | |||
| "COMPANY" : company, | |||
| "STOCK_TAKING_UNIT_ID" : {dir: oracledb.BIND_OUT}, | |||
| "TGL_STOCK_TAKING" : moment().format('DD-MM-YYYY'), | |||
| "TGL_START" : moment().format('DD-MM-YYYY HH:mm:ss'), | |||
| "TGL_SELESAI" : null, | |||
| "CABANG_ID" : cabangId | |||
| }; | |||
| var resultStockUnit = await oracleFunc.runQueryData(conn,queryStockUnit,paramStockUnit); | |||
| var stockTakingUnitId = resultStockUnit["outBinds"]["STOCK_TAKING_UNIT_ID"]; | |||
| var jenisFoto = [{"NO_URUT" : 1 , "JENIS" : "NOMOR RANGKA" }, | |||
| {"NO_URUT" : 2 , "JENIS" : "TAMPAK SAMPING"}]; | |||
| var paramsUnitDet = []; | |||
| var paramsUnitDetPic = []; | |||
| var dataUnitCabang = await getDataUnit(conn,company,cabangId); | |||
| for(var i = 0 ; i < dataUnitCabang.length ; i ++){ | |||
| var temp = { | |||
| "COMPANY" : company, | |||
| "STOCK_TAKING_ID" : stockTakingUnitId, | |||
| "MESIN" : dataUnitCabang[i]["MESIN"], | |||
| "FLAG_REJECT" : "FALSE", | |||
| "KETERANGAN" : null | |||
| }; | |||
| paramsUnitDet.push(temp); | |||
| for ( var j = 0 ; j < jenisFoto.length ; j++){ | |||
| var tempPic = { | |||
| "COMPANY" : company, | |||
| "STOCK_TAKING_ID" : stockTakingUnitId, | |||
| "MESIN" : dataUnitCabang[i]["MESIN"], | |||
| "NO_URUT" : jenisFoto[j]["NO_URUT"], | |||
| "JENIS" : jenisFoto[j]["JENIS"], | |||
| "LATITUDE" : null, | |||
| "LONGITUDE" : null, | |||
| "LOB_ID" : null | |||
| } | |||
| paramsUnitDetPic.push(tempPic); | |||
| } | |||
| } | |||
| var queryStockUnitDet = ` | |||
| BEGIN | |||
| ${owner}.STOCK_TAKING_UNIT_DET_API.Create_Update_Record( | |||
| company_ => :COMPANY, | |||
| stock_taking_unit_id_ => :STOCK_TAKING_ID, | |||
| mesin_ => :MESIN, | |||
| flag_reject_ => :FLAG_REJECT, | |||
| keterangan_ => :KETERANGAN); | |||
| END; | |||
| `; | |||
| await oracleFunc.runQueryMany(conn,queryStockUnitDet,paramsUnitDet); | |||
| var queryStockUnitPic = ` | |||
| BEGIN | |||
| ${owner}.STOCK_TAKING_UNIT_DET_PIC_API.Create_Update_Record( | |||
| company_ => :COMPANY, | |||
| stock_taking_unit_id_ => :STOCK_TAKING_ID, | |||
| mesin_ => :MESIN, | |||
| no_urut_ => :NO_URUT, | |||
| jenis_ => :JENIS, | |||
| latitude_ => :LATITUDE, | |||
| longitude_ => :LONGITUDE, | |||
| lob_id_ => :LOB_ID | |||
| ); | |||
| END; | |||
| `; | |||
| await oracleFunc.runQueryMany(conn,queryStockUnitPic,paramsUnitDetPic); | |||
| await oracleFunc.doCommit(conn); | |||
| await oracleFunc.doRelease(conn); | |||
| return {"stockTakingUnitId" : stockTakingUnitId , dataUnitCabang : dataUnitCabang , | |||
| dataUnitPic : paramsUnitDetPic , jenisFoto : jenisFoto}; | |||
| } | |||
| catch(e){ | |||
| oracleFunc.doRollBack(conn); | |||
| throw e; | |||
| } | |||
| } | |||
| async function getActiveStockCollection(company = '' , cabangId = '',stockTakingUnitId = ''){ | |||
| let conn; | |||
| try{ | |||
| conn = await oracleFunc.getConnection(); | |||
| var queryDataUnit = ` | |||
| select | |||
| a.company, | |||
| a.stock_taking_unit_id, | |||
| a.mesin, | |||
| b.kode, | |||
| b.rangka, | |||
| b.tipe, | |||
| b.warna, | |||
| b.tahun, | |||
| b.state | |||
| from ${owner}.stock_taking_unit_det a LEFT JOIN ${owner}.unit_baru b | |||
| ON a.company = b.company | |||
| and a.mesin = b.mesin | |||
| and b.cabang_id = :CABANG_ID | |||
| where a.company = :COMPANY | |||
| and a.stock_taking_unit_id = :STOCK_TAKING_UNIT_ID | |||
| and a.mesin NOT IN (select mesin from ${owner}.stock_taking_unit_det_pic c | |||
| where c.COMPANY = :COMPANY | |||
| AND c.stock_taking_unit_id = :STOCK_TAKING_UNIT_ID | |||
| AND lob_id IS NOT NULL | |||
| ) | |||
| `; | |||
| var paramsDataUnit = { | |||
| "COMPANY" : company, | |||
| "CABANG_ID" : cabangId, | |||
| "STOCK_TAKING_UNIT_ID" : stockTakingUnitId | |||
| }; | |||
| var dataUnit = await oracleFunc.getQueryData(conn,queryDataUnit,paramsDataUnit); | |||
| var queryDataUnitPic = ` | |||
| SELECT | |||
| Company, | |||
| stock_taking_unit_id, | |||
| mesin, | |||
| no_urut, | |||
| jenis, | |||
| latitude, | |||
| longitude, | |||
| lob_id | |||
| from ${owner}.stock_taking_unit_det_pic | |||
| where company = :COMPANY | |||
| and stock_taking_unit_id = :STOCK_TAKING_UNIT_ID | |||
| and lob_id IS NULL | |||
| `; | |||
| var paramsDataUnitPic = { | |||
| "COMPANY" : company, | |||
| "STOCK_TAKING_UNIT_ID" : stockTakingUnitId | |||
| }; | |||
| var dataUnitPic = await oracleFunc.getQueryData(conn,queryDataUnitPic,paramsDataUnitPic); | |||
| var jenisFoto = [{"NO_URUT" : 1 , "JENIS" : "NOMOR RANGKA" }, | |||
| {"NO_URUT" : 2 , "JENIS" : "TAMPAK SAMPING"}]; | |||
| await oracleFunc.doRelease(conn); | |||
| return {"stockTakingUnitId" : stockTakingUnitId , dataUnitCabang : dataUnit , | |||
| dataUnitPic : dataUnitPic , jenisFoto : jenisFoto}; | |||
| } | |||
| catch(e){ | |||
| await oracleFunc.doRelease(conn); | |||
| throw e; | |||
| } | |||
| } | |||
| async function insertStockUnitData(stockTakingData,dataUnit,dataFoto){ | |||
| let conn; | |||
| try{ | |||
| conn = await oracleFunc.getConnection(); | |||
| var queryUpdateTglSelesai = ` | |||
| BEGIN | |||
| ${owner}.STOCK_TAKING_UNIT_API.Update_Tgl_Selesai( | |||
| company_ => :COMPANY, | |||
| stock_taking_unit_id_ => :STOCK_TAKING_UNIT_ID, | |||
| tgl_selesai_ => TO_DATE(:TGL_SELESAI,'DD-MM-YYYY HH24:MI:SS')); | |||
| END; | |||
| `; | |||
| var paramsUpdateTglSelesai = { | |||
| "COMPANY" : stockTakingData["company"], | |||
| "STOCK_TAKING_UNIT_ID" : stockTakingData["stockTakingUnitId"], | |||
| "TGL_SELESAI" : moment().format('DD-MM-YYYY HH:mm:ss') | |||
| } | |||
| await oracleFunc.runQueryData(conn,queryUpdateTglSelesai,paramsUpdateTglSelesai); | |||
| if(dataUnit.length > 0){ | |||
| var queryUpdateKeteranganDet = ` | |||
| BEGIN | |||
| ${owner}.STOCK_TAKING_UNIT_DET_API.Update_Keterangan( | |||
| company_ => :COMPANY, | |||
| stock_taking_unit_id_ => :STOCK_TAKING_UNIT_ID, | |||
| mesin_ => :MESIN, | |||
| keterangan_ => :KETERANGAN); | |||
| END; | |||
| `; | |||
| var paramsUpdateKeteranganDet = []; | |||
| for(var i = 0 ; i < dataUnit.length ; i++){ | |||
| var temp = { | |||
| "COMPANY" : stockTakingData["company"], | |||
| "STOCK_TAKING_UNIT_ID" : stockTakingData["stockTakingUnitId"], | |||
| "MESIN" : dataUnit[i]["MESIN"], | |||
| "KETERANGAN" : dataUnit[i]["TIMESTAMP"] | |||
| } | |||
| paramsUpdateKeteranganDet.push(temp); | |||
| } | |||
| await oracleFunc.runQueryMany(conn,queryUpdateKeteranganDet,paramsUpdateKeteranganDet); | |||
| } | |||
| if(dataFoto.length > 0){ | |||
| var queryStockUnitPic = ` | |||
| BEGIN | |||
| ${owner}.STOCK_TAKING_UNIT_UTILS_API.Create_Stock_Taking_Blob( | |||
| company_ => :COMPANY, | |||
| stock_taking_unit_id_ => :STOCK_TAKING_ID, | |||
| mesin_ => :MESIN, | |||
| no_urut_ => :NO_URUT, | |||
| jenis_ => :JENIS, | |||
| latitude_ => :LATITUDE, | |||
| longitude_ => :LONGITUDE, | |||
| blob_file_ => :BLOB_FILE | |||
| ); | |||
| END; | |||
| `; | |||
| var paramsUnitDetPic = []; | |||
| for(var j = 0 ; j < dataFoto.length ; j++){ | |||
| var temp = { | |||
| "COMPANY" : stockTakingData["company"], | |||
| "STOCK_TAKING_ID" : stockTakingData["stockTakingUnitId"], | |||
| "MESIN" : dataFoto[j]["MESIN"], | |||
| "NO_URUT" : dataFoto[j]["NO_URUT"], | |||
| "JENIS" : dataFoto[j]["JENIS"], | |||
| "LATITUDE" : dataFoto[j]["LATITUDE"], | |||
| "LONGITUDE" : dataFoto[j]["LONGITUDE"], | |||
| "BLOB_FILE" : dataFoto[j]["BLOB_FILE"] | |||
| } | |||
| paramsUnitDetPic.push(temp); | |||
| } | |||
| await oracleFunc.runQueryMany(conn,queryStockUnitPic,paramsUnitDetPic); | |||
| } | |||
| await oracleFunc.doCommit(conn) | |||
| await oracleFunc.doRelease(conn); | |||
| return 'Data has been processed'; | |||
| } | |||
| catch(e){ | |||
| oracleFunc.doRollBack(conn); | |||
| throw e; | |||
| } | |||
| } | |||
| module.exports = { | |||
| getDataCabang : getDataCabang, | |||
| getDataUnit : getDataUnit, | |||
| getDataUser : getDataUser, | |||
| prepareStockCollection : prepareStockCollection, | |||
| insertStockUnitData : insertStockUnitData, | |||
| getActiveStockTakingByCabang : getActiveStockTakingByCabang, | |||
| getActiveStockCollection : getActiveStockCollection, | |||
| getDataCabangByUser : getDataCabangByUser, | |||
| submitStockTaking : submitStockTaking, | |||
| getStateStockTaking : getStateStockTaking | |||
| } | |||
| @@ -0,0 +1,348 @@ | |||
| const sqlite3 = require('sqlite3').verbose(); | |||
| var sqliteFunc = require('../util/db_sqlite.js'); | |||
| var oracleModel = require('./oracleModel.js'); | |||
| const oracledb = require('oracledb'); | |||
| const path = require('path'); | |||
| const fs = require('fs'); | |||
| async function insertRefTable(db,dataUnitCabang){ | |||
| try{ | |||
| var runQuery = 'insert into refTable(mesin,tipe,rangka,warna,kode,tahun,state) VALUES '; | |||
| for(var i = 0 ; i < dataUnitCabang.length ; i ++){ | |||
| if(i == dataUnitCabang.length -1){ | |||
| runQuery = runQuery.concat(`('${dataUnitCabang[i]["MESIN"]}','${dataUnitCabang[i]["TIPE"]}','${dataUnitCabang[i]["RANGKA"]}','${dataUnitCabang[i]["WARNA"]}', | |||
| '${dataUnitCabang[i]["KODE"]}','${dataUnitCabang[i]["TAHUN"]}','${dataUnitCabang[i]["STATE"]}')`); | |||
| } | |||
| else { | |||
| runQuery = runQuery.concat(`('${dataUnitCabang[i]["MESIN"]}','${dataUnitCabang[i]["TIPE"]}','${dataUnitCabang[i]["RANGKA"]}','${dataUnitCabang[i]["WARNA"]}', | |||
| '${dataUnitCabang[i]["KODE"]}','${dataUnitCabang[i]["TAHUN"]}','${dataUnitCabang[i]["STATE"]}'), `); | |||
| } | |||
| } | |||
| var insertTable = await sqliteFunc.runQuery(db,runQuery); | |||
| if(insertTable["STATUS"] == 0) throw insertTable["DATA"] | |||
| } | |||
| catch(e){ | |||
| throw e; | |||
| } | |||
| } | |||
| async function insertJenisFoto(db,jenisFoto){ | |||
| try{ | |||
| var valBlobTable = ''; | |||
| for(var i = 0 ; i < jenisFoto.length ; i++){ | |||
| if(i == jenisFoto.length -1) { | |||
| valBlobTable = valBlobTable.concat(`('${jenisFoto[i]["NO_URUT"]}','${jenisFoto[i]["JENIS"]}')`); | |||
| } | |||
| else{ | |||
| valBlobTable = valBlobTable.concat(`('${jenisFoto[i]["NO_URUT"]}','${jenisFoto[i]["JENIS"]}'),`); | |||
| } | |||
| } | |||
| var insertJenisBlobQuery = ` | |||
| Insert Into jenisBlobTable Values ${valBlobTable} | |||
| `; | |||
| var insertBlobQuery = await sqliteFunc.runQuery(db,insertJenisBlobQuery); | |||
| if(insertBlobQuery["STATUS"] == 0) throw insertBlobQuery["DATA"] | |||
| } | |||
| catch(e){ | |||
| throw e; | |||
| } | |||
| } | |||
| async function insertUnitDetPic(db,dataUnitPic){ | |||
| try{ | |||
| var valDetPic = ''; | |||
| for(var i = 0 ; i < dataUnitPic.length ; i++){ | |||
| if(i == dataUnitPic.length -1) { | |||
| valDetPic = valDetPic.concat(`('${dataUnitPic[i]["MESIN"]}','${dataUnitPic[i]["NO_URUT"]}', | |||
| null,'${dataUnitPic[i]["JENIS"]}',null,null)`); | |||
| } | |||
| else{ | |||
| valDetPic = valDetPic.concat(`('${dataUnitPic[i]["MESIN"]}','${dataUnitPic[i]["NO_URUT"]}', | |||
| null,'${dataUnitPic[i]["JENIS"]}',null,null),`); | |||
| } | |||
| } | |||
| var insertJenisBlobQuery = ` | |||
| Insert Into blobTable(MESIN,NO_URUT,BLOB_FILE,JENIS,LATITUDE,LONGITUDE) Values ${valDetPic}; | |||
| `; | |||
| var insertBlobQuery = await sqliteFunc.runQuery(db,insertJenisBlobQuery); | |||
| if(insertBlobQuery["STATUS"] == 0 ) throw insertBlobQuery["DATA"] | |||
| } | |||
| catch(e){ | |||
| throw e; | |||
| } | |||
| } | |||
| async function getValueTableByName(db,name){ | |||
| var query = ` | |||
| select VALUE from | |||
| valueTable | |||
| where name = '${name}' | |||
| LIMIT 1 | |||
| `; | |||
| var selectInsertTable = await sqliteFunc.selectQuery(db,query); | |||
| if(selectInsertTable["STATUS"] == 0) throw Error(selectInsertTable["DATA"]); | |||
| var data = selectInsertTable["DATA"]; | |||
| var value = data[0]["VALUE"]; | |||
| return value; | |||
| } | |||
| async function getInsertedData(db){ | |||
| try{ | |||
| var query = ` | |||
| select | |||
| MESIN, | |||
| TIMESTAMP | |||
| from refTable | |||
| where flag_insert = 'TRUE' | |||
| `; | |||
| var selectTimestampInsert = await sqliteFunc.selectQuery(db,query); | |||
| if(selectTimestampInsert["STATUS"] == 0) throw selectTimestampInsert["DATA"]; | |||
| return selectTimestampInsert["DATA"]; | |||
| } | |||
| catch(e){ | |||
| throw e; | |||
| } | |||
| } | |||
| async function getInsertedPic(db){ | |||
| try{ | |||
| var query = ` | |||
| select | |||
| BLOB_FILE, | |||
| jenis, | |||
| latitude, | |||
| LONGITUDE, | |||
| MESIN, | |||
| NO_URUT | |||
| from blobTable where | |||
| blob_file IS NOT NULL | |||
| `; | |||
| var selectBlobTable = await sqliteFunc.selectQuery(db,query); | |||
| if(selectBlobTable["STATUS"] == 0) throw selectBlobTable["DATA"]; | |||
| return selectBlobTable["DATA"]; | |||
| } | |||
| catch(e){ | |||
| throw e; | |||
| } | |||
| } | |||
| async function unpackAndInsert(dbPath = null, company , cabangId){ | |||
| let db; | |||
| try{ | |||
| //var dbPath = path.join(__dirname , `../public/sqlite/upload/uploadDB.db`); | |||
| db = new sqlite3.Database(dbPath, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE); | |||
| var stockTakingUnitId = await getValueTableByName(db,'STOCK_TAKING_UNIT_ID'); | |||
| var insertedData = await getInsertedData(db); | |||
| var insertedPic = await getInsertedPic(db); | |||
| var stockTakingData = {"company" : company , "cabangId" : cabangId, "stockTakingUnitId" : stockTakingUnitId}; | |||
| var result = await oracleModel.insertStockUnitData(stockTakingData,insertedData,insertedPic); | |||
| if(db.open){ | |||
| return new Promise(function(resolve,reject){ | |||
| db.close(function(data){ | |||
| fs.unlinkSync(dbPath); | |||
| resolve({"STATUS" : 1 ,"DATA" : result}); | |||
| }) | |||
| }) | |||
| } | |||
| else{ | |||
| fs.unlinkSync(dbPath); | |||
| return {"STATUS" : 1 ,"DATA" : result}; | |||
| } | |||
| } | |||
| catch(e){ | |||
| console.log(e); | |||
| if(db.open){ | |||
| return new Promise(function(resolve,reject){ | |||
| db.close(function(data){ | |||
| resolve({"STATUS" : 0 ,"DATA" : e}); | |||
| }) | |||
| }) | |||
| // db.close(function(data){ | |||
| // return {"STATUS" : 0 ,"DATA" : e}; | |||
| // }) | |||
| } | |||
| else{ | |||
| return {"STATUS" : 0 ,"DATA" : e}; | |||
| } | |||
| } | |||
| } | |||
| // var dbPath = path.join(__dirname , `../public/sqlite/testaplod3.db`); | |||
| // unpackAndInsert(dbPath,'TBS','02'); | |||
| async function CreateDataCollection(company = '' , cabangId = ''){ | |||
| var dbPath; | |||
| let db; | |||
| try { | |||
| var checkStockTaking = await oracleModel.getActiveStockTakingByCabang(company,cabangId); | |||
| var oracleData; | |||
| if(checkStockTaking == undefined){ | |||
| oracleData = await oracleModel.prepareStockCollection(company,cabangId); | |||
| } | |||
| else { | |||
| let state = checkStockTaking["STATE"]; | |||
| if(state == 'Submitted'){ | |||
| throw 'Gagal dalam mengambil data, mohon menunggu review data yang disubmit sebelumnya.'; | |||
| } | |||
| oracleData = await oracleModel.getActiveStockCollection(company,cabangId,checkStockTaking["STOCK_TAKING_UNIT_ID"]); | |||
| } | |||
| var stockTakingUnitId = oracleData["stockTakingUnitId"]; | |||
| var dataUnitCabang = oracleData["dataUnitCabang"]; | |||
| var dataUnitPic = oracleData["dataUnitPic"]; | |||
| var jenisFoto = oracleData["jenisFoto"]; | |||
| var dirPath = path.join(__dirname , `../public/sqlite/db/${company}/${cabangId}`); | |||
| var resultDirPath = fs.mkdirSync(dirPath, { recursive: true }); | |||
| var d = new Date(); | |||
| var n = d.getTime(); | |||
| var dbName = `${n}.db`; | |||
| dbPath = path.join(dirPath ,dbName); | |||
| db = new sqlite3.Database(dbPath, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE); | |||
| // Create Table Reference | |||
| var refTableQuery = `CREATE TABLE refTable( | |||
| ID INTEGER PRIMARY KEY AUTOINCREMENT, | |||
| MESIN TEXT, | |||
| TIPE TEXT, | |||
| RANGKA TEXT, | |||
| WARNA TEXT, | |||
| KODE TEXT, | |||
| TAHUN TEXT, | |||
| STATE TEXT, | |||
| TIMESTAMP TEXT DEFAULT NULL, | |||
| FLAG_INSERT TEXT DEFAULT 'FALSE' | |||
| )`; | |||
| var createRefTable = await sqliteFunc.runQuery(db,refTableQuery); | |||
| if(createRefTable["STATUS"] == 0) throw createRefTable; | |||
| // var insertTableQuery = `CREATE TABLE insertTable( | |||
| // ID INTEGER PRIMARY KEY AUTOINCREMENT, | |||
| // MESIN TEXT, | |||
| // TIMESTAMP TEXT | |||
| // )`; | |||
| // var createInsertTable = await sqliteFunc.runQuery(db,insertTableQuery); | |||
| // if(createInsertTable["STATUS"] == 0) throw createInsertTable; | |||
| var insertTableBlob = `CREATE TABLE blobTable( | |||
| BLOB_ID INTEGER PRIMARY KEY AUTOINCREMENT, | |||
| MESIN TEXT, | |||
| NO_URUT TEXT, | |||
| BLOB_FILE BLOB, | |||
| JENIS TEXT, | |||
| LATITUDE TEXT, | |||
| LONGITUDE TEXT | |||
| )`; | |||
| var createBlobTable = await sqliteFunc.runQuery(db,insertTableBlob); | |||
| if(createBlobTable["STATUS"] == 0) throw createInsertTable; | |||
| var valueTableQuery = ` | |||
| CREATE TABLE valueTable( | |||
| NAME TEXT, | |||
| VALUE TEXT | |||
| ) | |||
| `; | |||
| var createValueTable = await sqliteFunc.runQuery(db,valueTableQuery); | |||
| if(createValueTable["STATUS"] == 0) throw createValueTable; | |||
| var queryValueTableInsert = `insert into valueTable(name,value) VALUES ('STOCK_TAKING_UNIT_ID',${stockTakingUnitId})`; | |||
| var insertValueTableInsert = await sqliteFunc.runQuery(db,queryValueTableInsert); | |||
| if(insertValueTableInsert["STATUS"] == 0) throw insertValueTableInsert; | |||
| var jenisBlobQuery = ` | |||
| CREATE TABLE jenisBlobTable( | |||
| NO_URUT TEXT, | |||
| VALUE TEXT | |||
| ) | |||
| `; | |||
| var createJenisBlobTable = await sqliteFunc.runQuery(db,jenisBlobQuery); | |||
| if(createJenisBlobTable["STATUS"] == 0) throw createJenisBlobTable; | |||
| //----------- JENIS FOTO---------------------------------------------- | |||
| await insertJenisFoto(db,jenisFoto); | |||
| if(dataUnitCabang.length > 0){ | |||
| //----------- REF TABLE---------------------------------------------- | |||
| await insertRefTable(db,dataUnitCabang); | |||
| //----------- UNIT DET PIC---------------------------------------------- | |||
| await insertUnitDetPic(db,dataUnitPic); | |||
| } | |||
| if(db.open){ | |||
| return new Promise(function(resolve,reject){ | |||
| db.close(function(data){ | |||
| resolve({"STATUS" : 1 ,"DATA" : dbPath}); | |||
| }) | |||
| }); | |||
| // db.close(function(data){ | |||
| // return {"STATUS" : 1, "DATA" : dbPath}; | |||
| // }) | |||
| } | |||
| else{ | |||
| return {"STATUS" : 1, "DATA" : dbPath}; | |||
| } | |||
| } | |||
| catch(e){ | |||
| if(db){ | |||
| if(db.open){ | |||
| return new Promise(function(resolve,reject){ | |||
| db.close(function(data){ | |||
| fs.unlinkSync(dbPath); | |||
| resolve({"STATUS" : 0 ,"DATA" : e}); | |||
| }) | |||
| }); | |||
| // db.close(function(data){ | |||
| // fs.unlinkSync(dbPath); | |||
| // return {"STATUS" : 0 , "DATA": e}; | |||
| // }); | |||
| } | |||
| } | |||
| else{ | |||
| if(dbPath){ | |||
| fs.unlinkSync(dbPath); | |||
| } | |||
| console.log(e); | |||
| return {"STATUS" : 0 , "DATA": e}; | |||
| } | |||
| } | |||
| } | |||
| //CreateDataCollection("TBS",'02'); | |||
| module.exports = { | |||
| CreateDataCollection : CreateDataCollection, | |||
| unpackAndInsert : unpackAndInsert | |||
| }; | |||
| @@ -0,0 +1,535 @@ | |||
| CREATE TABLE hasil_kunjungan_tagihan_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| hasil_kunjungan_tagihan_id VARCHAR2(30) NOT NULL, | |||
| keterangan VARCHAR2(500) NULL, | |||
| jenis VARCHAR2(500) NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE hasil_kunjungan_tagihan_tab | |||
| ADD ( CONSTRAINT hasil_kunjungan_tagihan_pk PRIMARY KEY ( company, hasil_kunjungan_tagihan_id) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE jenis_slip_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| jenis_slip VARCHAR2(20) NOT NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE jenis_slip_tab | |||
| ADD ( CONSTRAINT jenis_slip_pk PRIMARY KEY ( company, jenis_slip) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE kuitansi_auto_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| cabang_id VARCHAR2(30) NOT NULL, | |||
| no_kuitansi VARCHAR2(50) NOT NULL, | |||
| tanggal DATE NOT NULL, | |||
| asal_transaksi VARCHAR2(50) NOT NULL, | |||
| jenis_kuitansi VARCHAR2(50) NOT NULL, | |||
| ref1 VARCHAR2(50) NULL, | |||
| ref2 VARCHAR2(50) NULL, | |||
| ref3 VARCHAR2(50) NULL, | |||
| ref4 VARCHAR2(50) NULL, | |||
| ref5 VARCHAR2(50) NULL, | |||
| create_date DATE NOT NULL, | |||
| create_by VARCHAR2(50) NOT NULL, | |||
| cancel_date DATE NULL, | |||
| cancel_by VARCHAR2(50) NULL, | |||
| keterangan VARCHAR2(200) NULL, | |||
| rowversion DATE NOT NULL, | |||
| rowstate VARCHAR2(30) NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE kuitansi_auto_tab | |||
| ADD ( CONSTRAINT kuitansi_auto_pk PRIMARY KEY ( company, cabang_id, no_kuitansi) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE kuitansi_auto_det_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| cabang_id VARCHAR2(30) NOT NULL, | |||
| no_kuitansi VARCHAR2(50) NOT NULL, | |||
| no_urut NUMBER NOT NULL, | |||
| detail VARCHAR2(2000) NOT NULL, | |||
| nominal NUMBER NOT NULL, | |||
| jenis_transaksi VARCHAR2(50) NOT NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE kuitansi_auto_det_tab | |||
| ADD ( CONSTRAINT kuitansi_auto_det_pk PRIMARY KEY ( company, cabang_id, no_kuitansi, no_urut) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE kuitansi_auto_slip_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| cabang_id VARCHAR2(30) NOT NULL, | |||
| no_kuitansi VARCHAR2(50) NOT NULL, | |||
| no NUMBER NOT NULL, | |||
| cabang_id_slip VARCHAR2(30) NOT NULL, | |||
| jenis_slip VARCHAR2(20) NOT NULL, | |||
| no_slip VARCHAR2(30) NOT NULL, | |||
| flag_void VARCHAR2(5) NOT NULL, | |||
| keterangan VARCHAR2(200) NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE kuitansi_auto_slip_tab | |||
| ADD ( CONSTRAINT kuitansi_auto_slip_pk PRIMARY KEY ( company, cabang_id, no_kuitansi, no) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE management_slip_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| mgn_slip_id VARCHAR2(50) NOT NULL, | |||
| tgl_transaksi DATE NULL, | |||
| asal VARCHAR2(100) NULL, | |||
| tujuan VARCHAR2(100) NOT NULL, | |||
| mgn_slip_id_ref VARCHAR2(50) NULL, | |||
| created_by VARCHAR2(50) NULL, | |||
| created_date DATE NULL, | |||
| approved_by VARCHAR2(50) NULL, | |||
| approved_date DATE NULL, | |||
| jenis_mutasi_slip VARCHAR2(20) NOT NULL, | |||
| jenis_slip VARCHAR2(20) NOT NULL, | |||
| rowversion DATE NOT NULL, | |||
| rowstate VARCHAR2(30) NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE management_slip_tab | |||
| ADD ( CONSTRAINT management_slip_pk PRIMARY KEY ( company, mgn_slip_id) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE management_slip_det_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| mgn_slip_id VARCHAR2(50) NOT NULL, | |||
| no_urut NUMBER NOT NULL, | |||
| no_awal VARCHAR2(30) NOT NULL, | |||
| no_akhir VARCHAR2(30) NOT NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE management_slip_det_tab | |||
| ADD ( CONSTRAINT management_slip_det_pk PRIMARY KEY ( company, mgn_slip_id, no_urut) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE management_stok_tts_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| cabang_id VARCHAR2(30) NOT NULL, | |||
| mgn_stok_tts_id VARCHAR2(50) NOT NULL, | |||
| tanggal DATE NOT NULL, | |||
| no_slip_awal VARCHAR2(30) NULL, | |||
| jumlah_slip NUMBER NOT NULL, | |||
| created_by VARCHAR2(50) NULL, | |||
| created_date DATE NULL, | |||
| approved_by VARCHAR2(50) NULL, | |||
| approved_date DATE NULL, | |||
| rowversion DATE NOT NULL, | |||
| rowstate VARCHAR2(30) NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE management_stok_tts_tab | |||
| ADD ( CONSTRAINT management_stok_tts_pk PRIMARY KEY ( company, cabang_id, mgn_stok_tts_id) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE management_stok_tts_det_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| cabang_id VARCHAR2(30) NOT NULL, | |||
| mgn_stok_tts_id VARCHAR2(50) NOT NULL, | |||
| no_tts NUMBER NOT NULL, | |||
| printed_by VARCHAR2(50) NULL, | |||
| printed_date DATE NULL, | |||
| void_by VARCHAR2(50) NULL, | |||
| void_date DATE NULL, | |||
| print_count NUMBER NOT NULL, | |||
| rowversion DATE NOT NULL, | |||
| rowstate VARCHAR2(30) NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE management_stok_tts_det_tab | |||
| ADD ( CONSTRAINT management_stok_tts_det_pk PRIMARY KEY ( company, cabang_id, mgn_stok_tts_id, no_tts) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE management_stok_tts_slip_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| cabang_id VARCHAR2(30) NOT NULL, | |||
| mgn_stok_tts_id VARCHAR2(50) NOT NULL, | |||
| no_tts NUMBER NOT NULL, | |||
| jenis_slip VARCHAR2(20) NOT NULL, | |||
| no_slip VARCHAR2(30) NOT NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE management_stok_tts_slip_tab | |||
| ADD ( CONSTRAINT management_stok_tts_slip_pk PRIMARY KEY ( company, cabang_id, mgn_stok_tts_id, no_tts, jenis_slip, no_slip) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE management_tagihan_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| management_tagihan_id VARCHAR2(50) NOT NULL, | |||
| tgl_tagihan DATE NOT NULL, | |||
| tgl_setor DATE NULL, | |||
| institusi_id VARCHAR2(30) NULL, | |||
| created_by VARCHAR2(50) NULL, | |||
| created_date DATE NULL, | |||
| approved_by VARCHAR2(50) NULL, | |||
| approved_date DATE NULL, | |||
| process_by VARCHAR2(50) NULL, | |||
| process_date DATE NULL, | |||
| closed_by VARCHAR2(50) NULL, | |||
| closed_date DATE NULL, | |||
| penagih VARCHAR2(200) NULL, | |||
| jenis_tagihan VARCHAR2(20) NOT NULL, | |||
| kolektor_id VARCHAR2(30) NULL, | |||
| cabang_id VARCHAR2(30) NULL, | |||
| rowversion DATE NOT NULL, | |||
| rowstate VARCHAR2(30) NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE management_tagihan_tab | |||
| ADD ( CONSTRAINT management_tagihan_pk PRIMARY KEY ( company, management_tagihan_id) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE management_tagihan_det_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| management_tagihan_id VARCHAR2(50) NOT NULL, | |||
| no_urut NUMBER NOT NULL, | |||
| ref1 VARCHAR2(50) NOT NULL, | |||
| ref2 VARCHAR2(50) NULL, | |||
| ref3 VARCHAR2(50) NULL, | |||
| nominal NUMBER NOT NULL, | |||
| denda NUMBER NOT NULL, | |||
| ongkos_tagih NUMBER NOT NULL, | |||
| nominal_tertagih NUMBER NOT NULL, | |||
| denda_tertagih NUMBER NOT NULL, | |||
| ongkos_tagih_tertagih NUMBER NOT NULL, | |||
| kas_keluar_masuk_id VARCHAR2(30) NULL, | |||
| tgl_janji_bayar DATE NULL, | |||
| keterangan VARCHAR2(250) NULL, | |||
| kas_keluar_masuk_id_batal VARCHAR2(30) NULL, | |||
| tgl_setor DATE NULL, | |||
| institusi_id VARCHAR2(30) NULL, | |||
| jenis_transaksi_penerimaan VARCHAR2(20) NOT NULL, | |||
| jenis_slip VARCHAR2(20) NULL, | |||
| no_slip VARCHAR2(30) NULL, | |||
| cabang_id VARCHAR2(30) NULL, | |||
| no_kuitansi VARCHAR2(50) NULL, | |||
| hasil_kunjungan_id_desc VARCHAR2(50) NULL, | |||
| hasil_kunjungan_tagihan_id VARCHAR2(30) NULL, | |||
| hasil_kunjungan_id_cust VARCHAR2(50) NULL, | |||
| hasil_kunjungan_id_cp VARCHAR2(50) NULL, | |||
| hasil_kunjungan_id_loc VARCHAR2(50) NULL, | |||
| cabang_id_payment VARCHAR2(50) NULL, | |||
| rowversion DATE NOT NULL, | |||
| rowstate VARCHAR2(30) NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE management_tagihan_det_tab | |||
| ADD ( CONSTRAINT management_tagihan_det_pk PRIMARY KEY ( company, management_tagihan_id, no_urut) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE no_po_show_room_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| no_po VARCHAR2(30) NOT NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE no_po_show_room_tab | |||
| ADD ( CONSTRAINT no_po_show_room_pk PRIMARY KEY ( company, no_po) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE penerimaan_kwitansi_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| cabang_id VARCHAR2(30) NOT NULL, | |||
| penerimaan_kwitansi_id VARCHAR2(30) NOT NULL, | |||
| tgl_penerimaan DATE NOT NULL, | |||
| keterangan VARCHAR2(500) NULL, | |||
| jenis_kwitansi VARCHAR2(20) NOT NULL, | |||
| rowversion DATE NOT NULL, | |||
| rowstate VARCHAR2(30) NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE penerimaan_kwitansi_tab | |||
| ADD ( CONSTRAINT penerimaan_kwitansi_pk PRIMARY KEY ( company, cabang_id, penerimaan_kwitansi_id) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE penerimaan_kwitansi_det_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| cabang_id VARCHAR2(30) NOT NULL, | |||
| penerimaan_kwitansi_id VARCHAR2(30) NOT NULL, | |||
| no_urut NUMBER NOT NULL, | |||
| no_mulai NUMBER NOT NULL, | |||
| no_akhir NUMBER NOT NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE penerimaan_kwitansi_det_tab | |||
| ADD ( CONSTRAINT penerimaan_kwitansi_det_pk PRIMARY KEY ( company, cabang_id, penerimaan_kwitansi_id, no_urut) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE stock_taking_unit_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| stock_taking_unit_id VARCHAR2(50) NOT NULL, | |||
| tgl_stock_taking DATE NOT NULL, | |||
| tgl_start DATE NULL, | |||
| tgl_selesai DATE NULL, | |||
| created_by VARCHAR2(50) NULL, | |||
| created_date DATE NULL, | |||
| submit_by VARCHAR2(50) NULL, | |||
| submit_date DATE NULL, | |||
| approved_by VARCHAR2(50) NULL, | |||
| approved_date DATE NULL, | |||
| rejected_by VARCHAR2(50) NULL, | |||
| rejected_date DATE NULL, | |||
| cabang_id VARCHAR2(30) NULL, | |||
| rowversion DATE NOT NULL, | |||
| rowstate VARCHAR2(30) NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE stock_taking_unit_tab | |||
| ADD ( CONSTRAINT stock_taking_unit_pk PRIMARY KEY ( company, stock_taking_unit_id) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE stock_taking_unit_det_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| stock_taking_unit_id VARCHAR2(50) NOT NULL, | |||
| mesin VARCHAR2(30) NOT NULL, | |||
| flag_reject VARCHAR2(5) NOT NULL, | |||
| keterangan VARCHAR2(200) NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE stock_taking_unit_det_tab | |||
| ADD ( CONSTRAINT stock_taking_unit_det_pk PRIMARY KEY ( company, stock_taking_unit_id, mesin) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE stock_taking_unit_det_pic_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| stock_taking_unit_id VARCHAR2(50) NOT NULL, | |||
| mesin VARCHAR2(30) NOT NULL, | |||
| no_urut NUMBER NOT NULL, | |||
| jenis VARCHAR2(100) NULL, | |||
| latitude NUMBER NULL, | |||
| longitude NUMBER NULL, | |||
| lob_id NUMBER NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE stock_taking_unit_det_pic_tab | |||
| ADD ( CONSTRAINT stock_taking_unit_det_pic_pk PRIMARY KEY ( company, stock_taking_unit_id, mesin, no_urut) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE stok_kwitansi_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| cabang_id VARCHAR2(30) NOT NULL, | |||
| no_kwitansi NUMBER NOT NULL, | |||
| penerimaan_kwitansi_id VARCHAR2(30) NULL, | |||
| jenis_transaksi VARCHAR2(100) NULL, | |||
| no_po VARCHAR2(30) NULL, | |||
| angsuran_id VARCHAR2(30) NULL, | |||
| nominal NUMBER NULL, | |||
| denda NUMBER NULL, | |||
| ongkos_tagih NUMBER NULL, | |||
| biaya_lain NUMBER NULL, | |||
| tgl_print DATE NULL, | |||
| tgl_validasi DATE NULL, | |||
| tgl_posting DATE NULL, | |||
| tgl_register DATE NULL, | |||
| user_print VARCHAR2(30) NULL, | |||
| user_validasi VARCHAR2(30) NULL, | |||
| user_posting VARCHAR2(30) NULL, | |||
| user_register VARCHAR2(30) NULL, | |||
| user_batal VARCHAR2(30) NULL, | |||
| tgl_batal DATE NULL, | |||
| keterangan VARCHAR2(500) NULL, | |||
| status_kwitansi VARCHAR2(20) NOT NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE stok_kwitansi_tab | |||
| ADD ( CONSTRAINT stok_kwitansi_pk PRIMARY KEY ( company, cabang_id, no_kwitansi) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE stok_slip_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| jenis_slip VARCHAR2(20) NOT NULL, | |||
| no_slip VARCHAR2(30) NOT NULL, | |||
| ref1 VARCHAR2(100) NULL, | |||
| ref2 VARCHAR2(100) NULL, | |||
| ref3 VARCHAR2(100) NULL, | |||
| ref4 VARCHAR2(100) NULL, | |||
| ref5 VARCHAR2(100) NULL, | |||
| jenis_transaksi VARCHAR2(100) NULL, | |||
| mgn_slip_id VARCHAR2(50) NULL, | |||
| cabang_id VARCHAR2(30) NOT NULL, | |||
| nominal1 NUMBER NOT NULL, | |||
| nominal2 NUMBER NOT NULL, | |||
| nominal3 NUMBER NOT NULL, | |||
| nominal4 NUMBER NOT NULL, | |||
| nominal5 NUMBER NOT NULL, | |||
| nominal6 NUMBER NOT NULL, | |||
| print_date DATE NULL, | |||
| print_by VARCHAR2(30) NULL, | |||
| void_date DATE NULL, | |||
| void_by VARCHAR2(30) NULL, | |||
| cabang_id_kuitansi VARCHAR2(30) NULL, | |||
| no_kuitansi VARCHAR2(50) NULL, | |||
| status_slip VARCHAR2(20) NOT NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE stok_slip_tab | |||
| ADD ( CONSTRAINT stok_slip_pk PRIMARY KEY ( company, jenis_slip, no_slip) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE stok_slip_hist_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| jenis_slip VARCHAR2(20) NOT NULL, | |||
| no_slip VARCHAR2(30) NOT NULL, | |||
| no_urut_hist NUMBER NOT NULL, | |||
| event VARCHAR2(200) NOT NULL, | |||
| ref1 VARCHAR2(100) NULL, | |||
| ref2 VARCHAR2(100) NULL, | |||
| ref3 VARCHAR2(100) NULL, | |||
| ref4 VARCHAR2(100) NULL, | |||
| ref5 VARCHAR2(100) NULL, | |||
| jenis_transaksi VARCHAR2(100) NULL, | |||
| mgn_slip_id VARCHAR2(50) NULL, | |||
| cabang_id VARCHAR2(30) NOT NULL, | |||
| nominal1 NUMBER NOT NULL, | |||
| nominal2 NUMBER NOT NULL, | |||
| nominal3 NUMBER NOT NULL, | |||
| nominal4 NUMBER NOT NULL, | |||
| nominal5 NUMBER NOT NULL, | |||
| nominal6 NUMBER NOT NULL, | |||
| create_date DATE NULL, | |||
| create_by VARCHAR2(30) NULL, | |||
| cabang_id_kuitansi VARCHAR2(30) NULL, | |||
| no_kuitansi VARCHAR2(50) NULL, | |||
| flag_void VARCHAR2(5) NOT NULL, | |||
| status_slip VARCHAR2(20) NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE stok_slip_hist_tab | |||
| ADD ( CONSTRAINT stok_slip_hist_pk PRIMARY KEY ( company, jenis_slip, no_slip, no_urut_hist) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| CREATE TABLE stok_tts_tab | |||
| ( company VARCHAR2(50) NOT NULL, | |||
| cabang_id VARCHAR2(30) NOT NULL, | |||
| no_tts NUMBER NOT NULL, | |||
| tanggal DATE NULL, | |||
| penerimaan_kwitansi_id VARCHAR2(30) NULL, | |||
| jenis_transaksi VARCHAR2(100) NULL, | |||
| ref1 VARCHAR2(30) NULL, | |||
| ref2 VARCHAR2(30) NULL, | |||
| nominal NUMBER NULL, | |||
| tgl_print DATE NULL, | |||
| tgl_validasi DATE NULL, | |||
| tgl_posting DATE NULL, | |||
| tgl_register DATE NULL, | |||
| tgl_kwitansi DATE NULL, | |||
| user_print VARCHAR2(30) NULL, | |||
| user_validasi VARCHAR2(30) NULL, | |||
| user_posting VARCHAR2(30) NULL, | |||
| user_register VARCHAR2(30) NULL, | |||
| user_kwitansi VARCHAR2(30) NULL, | |||
| user_batal VARCHAR2(30) NULL, | |||
| tgl_batal DATE NULL, | |||
| ref_kwitansi VARCHAR2(30) NULL, | |||
| keterangan VARCHAR2(500) NULL, | |||
| status_kwitansi VARCHAR2(20) NOT NULL, | |||
| rowversion DATE NOT NULL) | |||
| TABLESPACE &incon_data | |||
| STORAGE (&normal) | |||
| / | |||
| ALTER TABLE stok_tts_tab | |||
| ADD ( CONSTRAINT stok_tts_pk PRIMARY KEY ( company, cabang_id, no_tts) | |||
| USING INDEX | |||
| TABLESPACE &incon_index | |||
| STORAGE (&normal)) | |||
| / | |||
| @@ -0,0 +1,300 @@ | |||
| ----------------------------------------------------------------------------- | |||
| -- | |||
| -- Logical unit: StockTakingUnit | |||
| -- | |||
| -- IFS/Design Template Version 2.2 | |||
| -- | |||
| -- Date Sign History | |||
| -- ------ ---- ----------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| DEFINE MODULE = INCON | |||
| DEFINE LU = StockTakingUnit | |||
| DEFINE PKG = STOCK_TAKING_UNIT_API | |||
| PROMPT Creating &PKG specification | |||
| CREATE OR REPLACE PACKAGE &PKG IS | |||
| module_ CONSTANT VARCHAR2(25) := '&MODULE'; | |||
| lu_name_ CONSTANT VARCHAR2(25) := '&LU'; | |||
| TYPE Public_Rec IS RECORD | |||
| (tgl_stock_taking stock_taking_unit_tab.tgl_stock_taking%TYPE, | |||
| tgl_start stock_taking_unit_tab.tgl_start%TYPE, | |||
| tgl_selesai stock_taking_unit_tab.tgl_selesai%TYPE, | |||
| created_by stock_taking_unit_tab.created_by%TYPE, | |||
| created_date stock_taking_unit_tab.created_date%TYPE, | |||
| submit_by stock_taking_unit_tab.submit_by%TYPE, | |||
| submit_date stock_taking_unit_tab.submit_date%TYPE, | |||
| approved_by stock_taking_unit_tab.approved_by%TYPE, | |||
| approved_date stock_taking_unit_tab.approved_date%TYPE, | |||
| rejected_by stock_taking_unit_tab.rejected_by%TYPE, | |||
| rejected_date stock_taking_unit_tab.rejected_date%TYPE, | |||
| cabang_id stock_taking_unit_tab.cabang_id%TYPE); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PRIVATE FINITE STATE MACHINE --------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| FUNCTION Finite_State_Decode__ ( | |||
| db_state_ IN VARCHAR2 ) RETURN VARCHAR2; | |||
| PRAGMA restrict_references(Finite_State_Decode__, WNDS, WNPS); | |||
| PROCEDURE Enumerate_States__ ( | |||
| client_values_ OUT VARCHAR2); | |||
| FUNCTION Finite_State_Events__ ( | |||
| db_state_ IN VARCHAR2 ) RETURN VARCHAR2; | |||
| PRAGMA restrict_references(Finite_State_Events__, WNDS, WNPS); | |||
| PROCEDURE Enumerate_Events__ ( | |||
| db_events_ OUT VARCHAR2 ); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PRIVATE BASE METHODS ----------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Lock__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN VARCHAR2 ); | |||
| PROCEDURE New__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ OUT VARCHAR2, | |||
| objversion_ OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| PROCEDURE Modify__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| PROCEDURE Remove__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PUBLIC BASE METHODS ------------------------------------ | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Exist ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PUBLIC TRANSLATION METHODS ----------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Language_Refreshed; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PRIVATE METHODS ---------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Submit__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| PROCEDURE Cancel_Submit__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| PROCEDURE Approve__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| PROCEDURE Reject__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| PROCEDURE Cancel_Approve__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| PROCEDURE Re_Submit__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PROTECTED METHODS -------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PUBLIC METHODS ----------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| FUNCTION Get_Tgl_Stock_Taking ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE; | |||
| PRAGMA restrict_references(Get_Tgl_Stock_Taking, WNDS, WNPS); | |||
| FUNCTION Get_Tgl_Start ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE; | |||
| PRAGMA restrict_references(Get_Tgl_Start, WNDS, WNPS); | |||
| FUNCTION Get_Tgl_Selesai ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE; | |||
| PRAGMA restrict_references(Get_Tgl_Selesai, WNDS, WNPS); | |||
| FUNCTION Get_Created_By ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN VARCHAR2; | |||
| PRAGMA restrict_references(Get_Created_By, WNDS, WNPS); | |||
| FUNCTION Get_Created_Date ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE; | |||
| PRAGMA restrict_references(Get_Created_Date, WNDS, WNPS); | |||
| FUNCTION Get_Submit_By ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN VARCHAR2; | |||
| PRAGMA restrict_references(Get_Submit_By, WNDS, WNPS); | |||
| FUNCTION Get_Submit_Date ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE; | |||
| PRAGMA restrict_references(Get_Submit_Date, WNDS, WNPS); | |||
| FUNCTION Get_Approved_By ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN VARCHAR2; | |||
| PRAGMA restrict_references(Get_Approved_By, WNDS, WNPS); | |||
| FUNCTION Get_Approved_Date ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE; | |||
| PRAGMA restrict_references(Get_Approved_Date, WNDS, WNPS); | |||
| FUNCTION Get_Rejected_By ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN VARCHAR2; | |||
| PRAGMA restrict_references(Get_Rejected_By, WNDS, WNPS); | |||
| FUNCTION Get_Rejected_Date ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN DATE; | |||
| PRAGMA restrict_references(Get_Rejected_Date, WNDS, WNPS); | |||
| FUNCTION Get_Cabang_Id ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN VARCHAR2; | |||
| PRAGMA restrict_references(Get_Cabang_Id, WNDS, WNPS); | |||
| FUNCTION Get ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2 ) RETURN Public_Rec; | |||
| PRAGMA restrict_references(Get, WNDS, WNPS); | |||
| PROCEDURE Create_Update_Record( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN OUT VARCHAR2, | |||
| tgl_stock_taking_ IN DATE, | |||
| tgl_start_ IN DATE, | |||
| tgl_selesai_ IN DATE, | |||
| cabang_id_ IN VARCHAR2); | |||
| PROCEDURE Remove_Record( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2); | |||
| PROCEDURE Call_Submit( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2); | |||
| PROCEDURE Call_Re_Submit( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2); | |||
| PROCEDURE Call_Cancel_Submit( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2); | |||
| PROCEDURE Call_Approve( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2); | |||
| PROCEDURE Call_Cancel_Approve( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2); | |||
| PROCEDURE Update_Tgl_Selesai( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| tgl_selesai_ IN DATE); | |||
| FUNCTION Get_Status_Stock_Taking( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2) RETURN VARCHAR2; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- FOUNDATION1 METHODS ------------------------------------ | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Init; | |||
| END &PKG; | |||
| / | |||
| SHOW ERROR | |||
| ----------------------------------------------------------------------------- | |||
| @@ -0,0 +1,132 @@ | |||
| ----------------------------------------------------------------------------- | |||
| -- | |||
| -- Logical unit: StockTakingUnitDet | |||
| -- | |||
| -- IFS/Design Template Version 2.2 | |||
| -- | |||
| -- Date Sign History | |||
| -- ------ ---- ----------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| DEFINE MODULE = INCON | |||
| DEFINE LU = StockTakingUnitDet | |||
| DEFINE PKG = STOCK_TAKING_UNIT_DET_API | |||
| PROMPT Creating &PKG specification | |||
| CREATE OR REPLACE PACKAGE &PKG IS | |||
| module_ CONSTANT VARCHAR2(25) := '&MODULE'; | |||
| lu_name_ CONSTANT VARCHAR2(25) := '&LU'; | |||
| TYPE Public_Rec IS RECORD | |||
| (flag_reject stock_taking_unit_det_tab.flag_reject%TYPE, | |||
| keterangan stock_taking_unit_det_tab.keterangan%TYPE); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PRIVATE BASE METHODS ----------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Lock__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN VARCHAR2 ); | |||
| PROCEDURE New__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ OUT VARCHAR2, | |||
| objversion_ OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| PROCEDURE Modify__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| PROCEDURE Remove__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PUBLIC BASE METHODS ------------------------------------ | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Exist ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2 ); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PRIVATE METHODS ---------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PROTECTED METHODS -------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PUBLIC METHODS ----------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| FUNCTION Get_Flag_Reject ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2 ) RETURN VARCHAR2; | |||
| PRAGMA restrict_references(Get_Flag_Reject, WNDS, WNPS); | |||
| FUNCTION Get_Keterangan ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2 ) RETURN VARCHAR2; | |||
| PRAGMA restrict_references(Get_Keterangan, WNDS, WNPS); | |||
| FUNCTION Get ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2 ) RETURN Public_Rec; | |||
| PRAGMA restrict_references(Get, WNDS, WNPS); | |||
| PROCEDURE Create_Update_Record( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| flag_reject_ IN VARCHAR2, | |||
| keterangan_ IN VARCHAR2); | |||
| PROCEDURE Remove_Record( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2); | |||
| PROCEDURE Update_Keterangan( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| keterangan_ IN VARCHAR2); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- FOUNDATION1 METHODS ------------------------------------ | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Init; | |||
| END &PKG; | |||
| / | |||
| SHOW ERROR | |||
| ----------------------------------------------------------------------------- | |||
| @@ -0,0 +1,781 @@ | |||
| ----------------------------------------------------------------------------- | |||
| -- | |||
| -- Logical unit: StockTakingUnitDet | |||
| -- | |||
| -- Purpose: | |||
| -- | |||
| -- IFS/Design Template Version 2.2 | |||
| -- | |||
| -- Date Sign History | |||
| -- ------ ---- ----------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| DEFINE MODULE = INCON | |||
| DEFINE LU = StockTakingUnitDet | |||
| DEFINE TABLE = STOCK_TAKING_UNIT_DET_TAB | |||
| DEFINE VIEW = STOCK_TAKING_UNIT_DET | |||
| DEFINE PKG = STOCK_TAKING_UNIT_DET_API | |||
| DEFINE OBJID = rowid | |||
| DEFINE OBJVERSION = "ltrim(lpad(to_char(rowversion,'YYYYMMDDHH24MISS'),2000))" | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- VIEWS FOR SELECTS -------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| PROMPT Creating &VIEW view | |||
| CREATE OR REPLACE VIEW &VIEW AS | |||
| SELECT company company, | |||
| stock_taking_unit_id stock_taking_unit_id, | |||
| mesin mesin, | |||
| flag_reject flag_reject, | |||
| keterangan keterangan, | |||
| &OBJID objid, | |||
| &OBJVERSION objversion | |||
| FROM stock_taking_unit_det_tab | |||
| WITH read only; | |||
| COMMENT ON TABLE &VIEW | |||
| IS 'LU=&LU^PROMPT=Stock Taking Unit Det^MODULE=&MODULE^'; | |||
| COMMENT ON COLUMN &VIEW..company | |||
| IS 'FLAGS=PMI--^DATATYPE=STRING(50)/UPPERCASE^PROMPT=Company^'; | |||
| COMMENT ON COLUMN &VIEW..stock_taking_unit_id | |||
| IS 'FLAGS=PMI--^DATATYPE=STRING(50)/UPPERCASE^PROMPT=Stock Taking Unit Id^REF=StockTakingUnit(company)^'; | |||
| COMMENT ON COLUMN &VIEW..mesin | |||
| IS 'FLAGS=KMI-L^DATATYPE=STRING(30)/UPPERCASE^PROMPT=Mesin^REF=StokFaktur(company)^'; | |||
| COMMENT ON COLUMN &VIEW..flag_reject | |||
| IS 'FLAGS=AMIUL^DATATYPE=BOOLEAN^PROMPT=Flag Reject^'; | |||
| COMMENT ON COLUMN &VIEW..keterangan | |||
| IS 'FLAGS=A-IUL^DATATYPE=STRING(200)^PROMPT=Keterangan^'; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PACKAGES FOR METHODS ----------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| PROMPT Creating &PKG implementation | |||
| CREATE OR REPLACE PACKAGE BODY &PKG IS | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC IMPLEMENTATION METHOD DECLARATIONS --------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- IMPLEMENTATION BASE METHODS ---------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -- Lock_By_Id___ | |||
| -- Client-support to lock a specific instance of the logical unit. | |||
| -- | |||
| -- Lock_By_Keys___ | |||
| -- Server support to lock a specific instance of the logical unit. | |||
| -- | |||
| -- Get_Object_By_Id___ | |||
| -- Get LU-record from the database with a specified object identity. | |||
| -- | |||
| -- Get_Object_By_Keys___ | |||
| -- Get LU-record from the database with specified key columns. | |||
| -- | |||
| -- Check_Exist___ | |||
| -- Check if a specific LU-instance already exist in the database. | |||
| -- | |||
| -- Get_Id_Version_By_Keys___ | |||
| -- Get the current OBJID and OBJVERSION for a specific LU-instance. | |||
| ----------------------------------------------------------------------------- | |||
| FUNCTION Lock_By_Id___ ( | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE | |||
| IS | |||
| row_changed EXCEPTION; | |||
| row_deleted EXCEPTION; | |||
| row_locked EXCEPTION; | |||
| PRAGMA exception_init(row_locked, -0054); | |||
| rec_ &TABLE%ROWTYPE; | |||
| dummy_ NUMBER; | |||
| CURSOR lock_control IS | |||
| SELECT * | |||
| FROM &TABLE | |||
| WHERE &OBJID = objid_ | |||
| AND &OBJVERSION = objversion_ | |||
| FOR UPDATE NOWAIT; | |||
| CURSOR exist_control IS | |||
| SELECT 1 | |||
| FROM &TABLE | |||
| WHERE &OBJID = objid_; | |||
| BEGIN | |||
| OPEN lock_control; | |||
| FETCH lock_control INTO rec_; | |||
| IF (lock_control%FOUND) THEN | |||
| CLOSE lock_control; | |||
| RETURN rec_; | |||
| END IF; | |||
| CLOSE lock_control; | |||
| OPEN exist_control; | |||
| FETCH exist_control INTO dummy_; | |||
| IF (exist_control%FOUND) THEN | |||
| CLOSE exist_control; | |||
| RAISE row_changed; | |||
| ELSE | |||
| CLOSE exist_control; | |||
| RAISE row_deleted; | |||
| END IF; | |||
| EXCEPTION | |||
| WHEN row_locked THEN | |||
| Error_SYS.Record_Locked(lu_name_); | |||
| WHEN row_changed THEN | |||
| Error_SYS.Record_Modified(lu_name_); | |||
| WHEN row_deleted THEN | |||
| Error_SYS.Record_Removed(lu_name_); | |||
| END Lock_By_Id___; | |||
| FUNCTION Lock_By_Keys___ ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE | |||
| IS | |||
| row_deleted EXCEPTION; | |||
| rec_ &TABLE%ROWTYPE; | |||
| CURSOR lock_control IS | |||
| SELECT * | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_ | |||
| FOR UPDATE; | |||
| BEGIN | |||
| OPEN lock_control; | |||
| FETCH lock_control INTO rec_; | |||
| IF (lock_control%FOUND) THEN | |||
| CLOSE lock_control; | |||
| RETURN rec_; | |||
| ELSE | |||
| CLOSE lock_control; | |||
| RAISE row_deleted; | |||
| END IF; | |||
| EXCEPTION | |||
| WHEN row_deleted THEN | |||
| Error_SYS.Record_Removed(lu_name_); | |||
| END Lock_By_Keys___; | |||
| FUNCTION Get_Object_By_Id___ ( | |||
| objid_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE | |||
| IS | |||
| lu_rec_ &TABLE%ROWTYPE; | |||
| CURSOR getrec IS | |||
| SELECT * | |||
| FROM &TABLE | |||
| WHERE &OBJID = objid_; | |||
| BEGIN | |||
| OPEN getrec; | |||
| FETCH getrec INTO lu_rec_; | |||
| IF (getrec%NOTFOUND) THEN | |||
| CLOSE getrec; | |||
| Error_SYS.Record_Removed(lu_name_); | |||
| END IF; | |||
| CLOSE getrec; | |||
| RETURN(lu_rec_); | |||
| END Get_Object_By_Id___; | |||
| FUNCTION Get_Object_By_Keys___ ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE | |||
| IS | |||
| lu_rec_ &TABLE%ROWTYPE; | |||
| CURSOR getrec IS | |||
| SELECT * | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_; | |||
| BEGIN | |||
| OPEN getrec; | |||
| FETCH getrec INTO lu_rec_; | |||
| CLOSE getrec; | |||
| RETURN(lu_rec_); | |||
| END Get_Object_By_Keys___; | |||
| FUNCTION Check_Exist___ ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2 ) RETURN BOOLEAN | |||
| IS | |||
| dummy_ NUMBER; | |||
| CURSOR exist_control IS | |||
| SELECT 1 | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_; | |||
| BEGIN | |||
| OPEN exist_control; | |||
| FETCH exist_control INTO dummy_; | |||
| IF (exist_control%FOUND) THEN | |||
| CLOSE exist_control; | |||
| RETURN(TRUE); | |||
| END IF; | |||
| CLOSE exist_control; | |||
| RETURN(FALSE); | |||
| END Check_Exist___; | |||
| PROCEDURE Get_Id_Version_By_Keys___ ( | |||
| objid_ IN OUT VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2) | |||
| IS | |||
| CURSOR get_version IS | |||
| SELECT &OBJID, &OBJVERSION | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_; | |||
| BEGIN | |||
| OPEN get_version; | |||
| FETCH get_version INTO objid_, objversion_; | |||
| CLOSE get_version; | |||
| END Get_Id_Version_By_Keys___; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- IMPLEMENTATION BASE METHODS FOR INSERT ----------------- | |||
| ----------------------------------------------------------------------------- | |||
| -- Prepare_Insert___ | |||
| -- Set all default values for a new instance (ON-NEW-RECORD) of this | |||
| -- logical unit by calling procedure Add_Attr. | |||
| -- | |||
| -- Unpack_Check_Insert___ | |||
| -- Unpack the attribute list, check all attributes from the client | |||
| -- and generate all default values before creation of the new object. | |||
| -- | |||
| -- Insert___ | |||
| -- Insert a new LU-instance into the database and return the values | |||
| -- for OBJID and OBJVERSION. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Prepare_Insert___ ( | |||
| attr_ IN OUT VARCHAR2 ) | |||
| IS | |||
| BEGIN | |||
| Client_SYS.Clear_Attr(attr_); | |||
| END Prepare_Insert___; | |||
| PROCEDURE Unpack_Check_Insert___ ( | |||
| attr_ IN OUT VARCHAR2, | |||
| newrec_ IN OUT &TABLE%ROWTYPE ) | |||
| IS | |||
| ptr_ NUMBER; | |||
| name_ VARCHAR2(30); | |||
| value_ VARCHAR2(2000); | |||
| BEGIN | |||
| ptr_ := NULL; | |||
| WHILE (Client_SYS.Get_Next_From_Attr(attr_, ptr_, name_, value_)) LOOP | |||
| IF (name_ = 'COMPANY') THEN | |||
| newrec_.company := value_; | |||
| ELSIF (name_ = 'STOCK_TAKING_UNIT_ID') THEN | |||
| newrec_.stock_taking_unit_id := value_; | |||
| Stock_Taking_Unit_API.Exist(newrec_.company, newrec_.stock_taking_unit_id); | |||
| ELSIF (name_ = 'MESIN') THEN | |||
| newrec_.mesin := value_; | |||
| Stok_Faktur_API.Exist(newrec_.company, newrec_.mesin); | |||
| ELSIF (name_ = 'FLAG_REJECT') THEN | |||
| newrec_.flag_reject := value_; | |||
| ELSIF (name_ = 'KETERANGAN') THEN | |||
| newrec_.keterangan := value_; | |||
| ELSE | |||
| Error_SYS.Item_Not_Exist(lu_name_, name_, value_); | |||
| END IF; | |||
| END LOOP; | |||
| Client_SYS.Clear_Attr(attr_); | |||
| Error_SYS.Check_Not_Null(lu_name_, 'COMPANY', newrec_.company); | |||
| Error_SYS.Check_Not_Null(lu_name_, 'STOCK_TAKING_UNIT_ID', newrec_.stock_taking_unit_id); | |||
| Error_SYS.Check_Not_Null(lu_name_, 'MESIN', newrec_.mesin); | |||
| Error_SYS.Check_Not_Null(lu_name_, 'FLAG_REJECT', newrec_.flag_reject); | |||
| EXCEPTION | |||
| WHEN value_error THEN | |||
| Error_SYS.Item_Format(lu_name_, name_, value_); | |||
| END Unpack_Check_Insert___; | |||
| PROCEDURE Insert___ ( | |||
| objid_ OUT VARCHAR2, | |||
| objversion_ OUT VARCHAR2, | |||
| newrec_ IN OUT &TABLE%ROWTYPE, | |||
| attr_ IN OUT VARCHAR2 ) | |||
| IS | |||
| BEGIN | |||
| newrec_.rowversion := sysdate; | |||
| objversion_ := to_char(newrec_.rowversion,'YYYYMMDDHH24MISS'); | |||
| INSERT | |||
| INTO stock_taking_unit_det_tab ( | |||
| company, | |||
| stock_taking_unit_id, | |||
| mesin, | |||
| flag_reject, | |||
| keterangan, | |||
| rowversion) | |||
| VALUES ( | |||
| newrec_.company, | |||
| newrec_.stock_taking_unit_id, | |||
| newrec_.mesin, | |||
| newrec_.flag_reject, | |||
| newrec_.keterangan, | |||
| newrec_.rowversion); | |||
| objid_ := DBMS_sql.last_row_id; | |||
| -- SELECT &OBJID | |||
| -- INTO objid_ | |||
| -- FROM &TABLE | |||
| -- WHERE company = newrec_.company | |||
| -- AND stock_taking_unit_id = newrec_.stock_taking_unit_id | |||
| -- AND mesin = newrec_.mesin; | |||
| EXCEPTION | |||
| WHEN dup_val_on_index THEN | |||
| Error_SYS.Record_Exist(lu_name_); | |||
| END Insert___; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- IMPLEMENTATION BASE METHODS FOR UPDATE ----------------- | |||
| ----------------------------------------------------------------------------- | |||
| -- Unpack_Check_Update___ | |||
| -- Unpack the attribute list, check all attributes from the client | |||
| -- and generate all default values before modifying the object. | |||
| -- | |||
| -- Update___ | |||
| -- Update an existing LU-instance in the database and return the | |||
| -- the new OBJVERSION. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Unpack_Check_Update___ ( | |||
| attr_ IN OUT VARCHAR2, | |||
| newrec_ IN OUT &TABLE%ROWTYPE, | |||
| objid_ IN VARCHAR2 ) | |||
| IS | |||
| ptr_ NUMBER; | |||
| name_ VARCHAR2(30); | |||
| value_ VARCHAR2(2000); | |||
| BEGIN | |||
| ptr_ := NULL; | |||
| WHILE (Client_SYS.Get_Next_From_Attr(attr_, ptr_, name_, value_)) LOOP | |||
| IF (name_ = 'COMPANY') THEN | |||
| Error_SYS.Item_Update(lu_name_, 'COMPANY'); | |||
| ELSIF (name_ = 'STOCK_TAKING_UNIT_ID') THEN | |||
| Error_SYS.Item_Update(lu_name_, 'STOCK_TAKING_UNIT_ID'); | |||
| ELSIF (name_ = 'MESIN') THEN | |||
| Error_SYS.Item_Update(lu_name_, 'MESIN'); | |||
| ELSIF (name_ = 'FLAG_REJECT') THEN | |||
| newrec_.flag_reject := value_; | |||
| ELSIF (name_ = 'KETERANGAN') THEN | |||
| newrec_.keterangan := value_; | |||
| ELSE | |||
| Error_SYS.Item_Not_Exist(lu_name_, name_, value_); | |||
| END IF; | |||
| END LOOP; | |||
| Client_SYS.Clear_Attr(attr_); | |||
| Error_SYS.Check_Not_Null(lu_name_, 'FLAG_REJECT', newrec_.flag_reject); | |||
| EXCEPTION | |||
| WHEN value_error THEN | |||
| Error_SYS.Item_Format(lu_name_, name_, value_); | |||
| END Unpack_Check_Update___; | |||
| PROCEDURE Update___ ( | |||
| objid_ IN VARCHAR2, | |||
| oldrec_ IN &TABLE%ROWTYPE, | |||
| newrec_ IN OUT &TABLE%ROWTYPE, | |||
| attr_ IN OUT VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| by_keys_ IN BOOLEAN DEFAULT FALSE ) | |||
| IS | |||
| BEGIN | |||
| newrec_.rowversion := sysdate; | |||
| objversion_ := to_char(newrec_.rowversion,'YYYYMMDDHH24MISS'); | |||
| IF by_keys_ THEN | |||
| UPDATE stock_taking_unit_det_tab | |||
| SET company = newrec_.company, | |||
| stock_taking_unit_id = newrec_.stock_taking_unit_id, | |||
| mesin = newrec_.mesin, | |||
| flag_reject = newrec_.flag_reject, | |||
| keterangan = newrec_.keterangan, | |||
| rowversion = newrec_.rowversion | |||
| WHERE company = newrec_.company | |||
| AND stock_taking_unit_id = newrec_.stock_taking_unit_id | |||
| AND mesin = newrec_.mesin; | |||
| ELSE | |||
| UPDATE stock_taking_unit_det_tab | |||
| SET company = newrec_.company, | |||
| stock_taking_unit_id = newrec_.stock_taking_unit_id, | |||
| mesin = newrec_.mesin, | |||
| flag_reject = newrec_.flag_reject, | |||
| keterangan = newrec_.keterangan, | |||
| rowversion = newrec_.rowversion | |||
| WHERE &OBJID = objid_; | |||
| END IF; | |||
| EXCEPTION | |||
| WHEN dup_val_on_index THEN | |||
| Error_SYS.Record_Exist(lu_name_); | |||
| END Update___; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- IMPLEMENTATION BASE METHODS FOR DELETE ----------------- | |||
| ----------------------------------------------------------------------------- | |||
| -- Check_Delete___ | |||
| -- Checks whether a specific LU-record may be removed or not. | |||
| -- The procedure should check business rules like attribute values | |||
| -- as well as database constraints (defined or not). | |||
| -- | |||
| -- Delete___ | |||
| -- Deletion of the specific LU-object from the database. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Check_Delete___ ( | |||
| remrec_ IN &TABLE%ROWTYPE ) | |||
| IS | |||
| key_ VARCHAR2(2000); | |||
| BEGIN | |||
| key_ := remrec_.company || '^' || remrec_.stock_taking_unit_id || '^' || remrec_.mesin || '^'; | |||
| Reference_SYS.Check_Restricted_Delete(lu_name_, key_); | |||
| END Check_Delete___; | |||
| PROCEDURE Delete___ ( | |||
| objid_ IN VARCHAR2, | |||
| remrec_ IN &TABLE%ROWTYPE ) | |||
| IS | |||
| key_ VARCHAR2(2000); | |||
| BEGIN | |||
| key_ := remrec_.company || '^' || remrec_.stock_taking_unit_id || '^' || remrec_.mesin || '^'; | |||
| Reference_SYS.Do_Cascade_Delete(lu_name_, key_); | |||
| DELETE | |||
| FROM stock_taking_unit_det_tab | |||
| WHERE &OBJID = objid_; | |||
| END Delete___; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PRIVATE BASE METHODS ----------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -- Lock__ | |||
| -- Client-support to lock a specific instance of the logical unit. | |||
| -- | |||
| -- New__ | |||
| -- Client-support interface to create LU instances. | |||
| -- action_ = 'PREPARE' | |||
| -- Default values and handle of information to client. | |||
| -- The default values are set in procedure Prepare_Insert___. | |||
| -- action_ = 'CHECK' | |||
| -- Check all attributes before creating new object and handle of | |||
| -- information to client. The attribute list is unpacked, checked | |||
| -- and prepared (defaults) in procedure Unpack_Check_Insert___. | |||
| -- action_ = 'DO' | |||
| -- Creation of new instances of the logical unit and handle of | |||
| -- information to client. The attribute list is unpacked, checked | |||
| -- and prepared (defaults) in procedure Unpack_Check_Insert___ | |||
| -- before calling procedure Insert___. | |||
| -- | |||
| -- Modify__ | |||
| -- Client-support interface to modify attributes for LU instances. | |||
| -- action_ = 'CHECK' | |||
| -- Check all attributes before modifying an existing object and | |||
| -- handle of information to client. The attribute list is unpacked, | |||
| -- checked and prepared(defaults) in procedure Unpack_Check_Update___. | |||
| -- action_ = 'DO' | |||
| -- Modification of an existing instance of the logical unit. The | |||
| -- procedure unpacks the attributes, checks all values before | |||
| -- procedure Update___ is called. | |||
| -- | |||
| -- Remove__ | |||
| -- Client-support interface to remove LU instances. | |||
| -- action_ = 'CHECK' | |||
| -- Check whether a specific LU-instance may be removed or not. | |||
| -- The procedure fetches the complete record by calling procedure | |||
| -- Get_Object_By_Id___. Then the check is made by calling procedure | |||
| -- Check_Delete___. | |||
| -- action_ = 'DO' | |||
| -- Remove an existing instance of the logical unit. The procedure | |||
| -- fetches the complete LU-record, checks for a delete and then | |||
| -- deletes the record by calling procedure Delete___. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Lock__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN VARCHAR2 ) | |||
| IS | |||
| dummy_ &TABLE%ROWTYPE; | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'Lock__'); | |||
| dummy_ := Lock_By_Id___(objid_, objversion_); | |||
| info_ := Client_SYS.Get_All_Info; | |||
| END Lock__; | |||
| PROCEDURE New__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ OUT VARCHAR2, | |||
| objversion_ OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ) | |||
| IS | |||
| newrec_ &TABLE%ROWTYPE; | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'New__'); | |||
| IF (action_ = 'PREPARE') THEN | |||
| Prepare_Insert___(attr_); | |||
| ELSIF (action_ = 'CHECK') THEN | |||
| Unpack_Check_Insert___(attr_, newrec_); | |||
| ELSIF (action_ = 'DO') THEN | |||
| Unpack_Check_Insert___(attr_, newrec_); | |||
| Insert___(objid_, objversion_, newrec_, attr_); | |||
| END IF; | |||
| info_ := Client_SYS.Get_All_Info; | |||
| END New__; | |||
| PROCEDURE Modify__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ) | |||
| IS | |||
| oldrec_ &TABLE%ROWTYPE; | |||
| newrec_ &TABLE%ROWTYPE; | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'Modify__'); | |||
| IF (action_ = 'CHECK') THEN | |||
| newrec_ := Get_Object_By_Id___(objid_); | |||
| Unpack_Check_Update___(attr_, newrec_, objid_); | |||
| ELSIF (action_ = 'DO') THEN | |||
| oldrec_ := Lock_By_Id___(objid_, objversion_); | |||
| newrec_ := oldrec_; | |||
| Unpack_Check_Update___(attr_, newrec_, objid_); | |||
| Update___(objid_, oldrec_, newrec_, attr_, objversion_); | |||
| END IF; | |||
| info_ := Client_SYS.Get_All_Info; | |||
| END Modify__; | |||
| PROCEDURE Remove__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN VARCHAR2, | |||
| action_ IN VARCHAR2 ) | |||
| IS | |||
| remrec_ &TABLE%ROWTYPE; | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'Remove__'); | |||
| IF (action_ = 'CHECK') THEN | |||
| remrec_ := Get_Object_By_Id___(objid_); | |||
| Check_Delete___(remrec_); | |||
| ELSIF (action_ = 'DO') THEN | |||
| remrec_ := Lock_By_Id___(objid_, objversion_); | |||
| Check_Delete___(remrec_); | |||
| Delete___(objid_, remrec_); | |||
| END IF; | |||
| info_ := Client_SYS.Get_All_Info; | |||
| END Remove__; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PUBLIC BASE METHODS ------------------------------------ | |||
| ----------------------------------------------------------------------------- | |||
| -- Exist | |||
| -- Checks if given pointer (e.g. primary key) to an instance of this | |||
| -- logical unit exists. If not an exception will be raised. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Exist ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2 ) | |||
| IS | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'Exist', TRUE); | |||
| IF (NOT Check_Exist___(company_, stock_taking_unit_id_, mesin_)) THEN | |||
| Error_SYS.Record_Not_Exist(lu_name_); | |||
| END IF; | |||
| END Exist; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC IMPLEMENTATION METHODS --------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PRIVATE METHODS ---------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PROTECTED METHODS -------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PUBLIC METHODS ----------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| FUNCTION Get_Flag_Reject ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2 ) RETURN VARCHAR2 | |||
| IS | |||
| temp_ &TABLE..flag_reject%TYPE; | |||
| CURSOR get_attr IS | |||
| SELECT flag_reject | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_; | |||
| BEGIN | |||
| OPEN get_attr; | |||
| FETCH get_attr INTO temp_; | |||
| CLOSE get_attr; | |||
| RETURN temp_; | |||
| END Get_Flag_Reject; | |||
| FUNCTION Get_Keterangan ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2 ) RETURN VARCHAR2 | |||
| IS | |||
| temp_ &TABLE..keterangan%TYPE; | |||
| CURSOR get_attr IS | |||
| SELECT keterangan | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_; | |||
| BEGIN | |||
| OPEN get_attr; | |||
| FETCH get_attr INTO temp_; | |||
| CLOSE get_attr; | |||
| RETURN temp_; | |||
| END Get_Keterangan; | |||
| FUNCTION Get ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2 ) RETURN Public_Rec | |||
| IS | |||
| temp_ Public_Rec; | |||
| CURSOR get_attr IS | |||
| SELECT flag_reject, keterangan | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_; | |||
| BEGIN | |||
| OPEN get_attr; | |||
| FETCH get_attr INTO temp_; | |||
| CLOSE get_attr; | |||
| RETURN temp_; | |||
| END Get; | |||
| PROCEDURE Create_Update_Record( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| flag_reject_ IN VARCHAR2, | |||
| keterangan_ IN VARCHAR2) | |||
| IS | |||
| attr_ VARCHAR2(2000); | |||
| objid_ VARCHAR2(200); | |||
| objversion_ VARCHAR2(2000); | |||
| info_ VARCHAR2(2000); | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'Create_Update_Record'); | |||
| Get_Id_Version_By_Keys___ (objid_, objversion_, company_,stock_taking_unit_id_,mesin_); | |||
| IF objid_ IS NULL THEN | |||
| Client_SYS.Add_To_Attr('COMPANY', company_, attr_); | |||
| Client_SYS.Add_To_Attr('STOCK_TAKING_UNIT_ID', stock_taking_unit_id_, attr_); | |||
| Client_SYS.Add_To_Attr('MESIN', mesin_, attr_); | |||
| END IF; | |||
| Client_SYS.Add_To_Attr('FLAG_REJECT', flag_reject_, attr_); | |||
| Client_SYS.Add_To_Attr('KETERANGAN', keterangan_, attr_); | |||
| IF objid_ IS NULL THEN | |||
| New__(info_, objid_, objversion_, attr_, 'DO'); | |||
| ELSE | |||
| Modify__(info_,objid_,objversion_,attr_,'DO'); | |||
| END IF; | |||
| END Create_Update_Record; | |||
| PROCEDURE Remove_Record( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2) | |||
| IS | |||
| objid_ VARCHAR2(200); | |||
| objversion_ VARCHAR2(2000); | |||
| info_ VARCHAR2(2000); | |||
| BEGIN | |||
| Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_,mesin_); | |||
| Remove__(info_, objid_, objversion_, 'DO'); | |||
| END Remove_Record; | |||
| PROCEDURE Update_Keterangan( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| keterangan_ IN VARCHAR2) | |||
| IS | |||
| attr_ VARCHAR2(2000); | |||
| objid_ VARCHAR2(200); | |||
| objversion_ VARCHAR2(2000); | |||
| info_ VARCHAR2(2000); | |||
| BEGIN | |||
| Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_,mesin_); | |||
| Client_SYS.Add_To_Attr('KETERANGAN', keterangan_, attr_); | |||
| Modify__(info_,objid_,objversion_,attr_,'DO'); | |||
| END Update_Keterangan; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- FOUNDATION1 METHODS ------------------------------------ | |||
| ----------------------------------------------------------------------------- | |||
| -- Init | |||
| -- Dummy procedure that can be called at database startup to ensure that | |||
| -- this package is loaded into memory for performance reasons only. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Init | |||
| IS | |||
| BEGIN | |||
| NULL; | |||
| END Init; | |||
| END &PKG; | |||
| / | |||
| SHOW ERROR | |||
| ----------------------------------------------------------------------------- | |||
| @@ -0,0 +1,159 @@ | |||
| ----------------------------------------------------------------------------- | |||
| -- | |||
| -- Logical unit: StockTakingUnitDetPic | |||
| -- | |||
| -- IFS/Design Template Version 2.2 | |||
| -- | |||
| -- Date Sign History | |||
| -- ------ ---- ----------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| DEFINE MODULE = INCON | |||
| DEFINE LU = StockTakingUnitDetPic | |||
| DEFINE PKG = STOCK_TAKING_UNIT_DET_PIC_API | |||
| PROMPT Creating &PKG specification | |||
| CREATE OR REPLACE PACKAGE &PKG IS | |||
| module_ CONSTANT VARCHAR2(25) := '&MODULE'; | |||
| lu_name_ CONSTANT VARCHAR2(25) := '&LU'; | |||
| TYPE Public_Rec IS RECORD | |||
| (jenis stock_taking_unit_det_pic_tab.jenis%TYPE, | |||
| latitude stock_taking_unit_det_pic_tab.latitude%TYPE, | |||
| longitude stock_taking_unit_det_pic_tab.longitude%TYPE, | |||
| lob_id stock_taking_unit_det_pic_tab.lob_id%TYPE); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PRIVATE BASE METHODS ----------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Lock__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN VARCHAR2 ); | |||
| PROCEDURE New__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ OUT VARCHAR2, | |||
| objversion_ OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| PROCEDURE Modify__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| PROCEDURE Remove__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN VARCHAR2, | |||
| action_ IN VARCHAR2 ); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PUBLIC BASE METHODS ------------------------------------ | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Exist ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PRIVATE METHODS ---------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PROTECTED METHODS -------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PUBLIC METHODS ----------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| FUNCTION Get_Jenis ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN VARCHAR2; | |||
| PRAGMA restrict_references(Get_Jenis, WNDS, WNPS); | |||
| FUNCTION Get_Latitude ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN NUMBER; | |||
| PRAGMA restrict_references(Get_Latitude, WNDS, WNPS); | |||
| FUNCTION Get_Longitude ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN NUMBER; | |||
| PRAGMA restrict_references(Get_Longitude, WNDS, WNPS); | |||
| FUNCTION Get_Lob_Id ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN NUMBER; | |||
| PRAGMA restrict_references(Get_Lob_Id, WNDS, WNPS); | |||
| FUNCTION Get ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN Public_Rec; | |||
| PRAGMA restrict_references(Get, WNDS, WNPS); | |||
| PROCEDURE Create_Update_Record( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER, | |||
| jenis_ IN VARCHAR2, | |||
| latitude_ IN NUMBER, | |||
| longitude_ IN NUMBER, | |||
| lob_id_ IN NUMBER); | |||
| PROCEDURE Remove_Record( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER); | |||
| PROCEDURE Update_Lob_Id( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER, | |||
| lob_id_ IN NUMBER); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- FOUNDATION1 METHODS ------------------------------------ | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Init; | |||
| END &PKG; | |||
| / | |||
| SHOW ERROR | |||
| ----------------------------------------------------------------------------- | |||
| @@ -0,0 +1,885 @@ | |||
| ----------------------------------------------------------------------------- | |||
| -- | |||
| -- Logical unit: StockTakingUnitDetPic | |||
| -- | |||
| -- Purpose: | |||
| -- | |||
| -- IFS/Design Template Version 2.2 | |||
| -- | |||
| -- Date Sign History | |||
| -- ------ ---- ----------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| DEFINE MODULE = INCON | |||
| DEFINE LU = StockTakingUnitDetPic | |||
| DEFINE TABLE = STOCK_TAKING_UNIT_DET_PIC_TAB | |||
| DEFINE VIEW = STOCK_TAKING_UNIT_DET_PIC | |||
| DEFINE PKG = STOCK_TAKING_UNIT_DET_PIC_API | |||
| DEFINE OBJID = rowid | |||
| DEFINE OBJVERSION = "ltrim(lpad(to_char(rowversion,'YYYYMMDDHH24MISS'),2000))" | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- VIEWS FOR SELECTS -------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| PROMPT Creating &VIEW view | |||
| CREATE OR REPLACE VIEW &VIEW AS | |||
| SELECT company company, | |||
| stock_taking_unit_id stock_taking_unit_id, | |||
| mesin mesin, | |||
| no_urut no_urut, | |||
| jenis jenis, | |||
| latitude latitude, | |||
| longitude longitude, | |||
| lob_id lob_id, | |||
| &OBJID objid, | |||
| &OBJVERSION objversion | |||
| FROM stock_taking_unit_det_pic_tab | |||
| WITH read only; | |||
| COMMENT ON TABLE &VIEW | |||
| IS 'LU=&LU^PROMPT=Stock Taking Unit Det Pic^MODULE=&MODULE^'; | |||
| COMMENT ON COLUMN &VIEW..company | |||
| IS 'FLAGS=PMI--^DATATYPE=STRING(50)/UPPERCASE^PROMPT=Company^'; | |||
| COMMENT ON COLUMN &VIEW..stock_taking_unit_id | |||
| IS 'FLAGS=PMI--^DATATYPE=STRING(50)/UPPERCASE^PROMPT=Stock Taking Unit Id^'; | |||
| COMMENT ON COLUMN &VIEW..mesin | |||
| IS 'FLAGS=PMI-L^DATATYPE=STRING(30)/UPPERCASE^PROMPT=Mesin^REF=StockTakingUnitDet(company,stock_taking_unit_id)^'; | |||
| COMMENT ON COLUMN &VIEW..no_urut | |||
| IS 'FLAGS=KMI-L^DATATYPE=NUMBER^PROMPT=No Urut^'; | |||
| COMMENT ON COLUMN &VIEW..jenis | |||
| IS 'FLAGS=A-IUL^DATATYPE=STRING(100)^PROMPT=Jenis^'; | |||
| COMMENT ON COLUMN &VIEW..latitude | |||
| IS 'FLAGS=A-IUL^DATATYPE=NUMBER^PROMPT=Latitude^'; | |||
| COMMENT ON COLUMN &VIEW..longitude | |||
| IS 'FLAGS=A-IUL^DATATYPE=NUMBER^PROMPT=Longitude^'; | |||
| COMMENT ON COLUMN &VIEW..lob_id | |||
| IS 'FLAGS=A-IUL^DATATYPE=NUMBER^PROMPT=Lob Id^'; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PACKAGES FOR METHODS ----------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| PROMPT Creating &PKG implementation | |||
| CREATE OR REPLACE PACKAGE BODY &PKG IS | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC IMPLEMENTATION METHOD DECLARATIONS --------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- IMPLEMENTATION BASE METHODS ---------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -- Lock_By_Id___ | |||
| -- Client-support to lock a specific instance of the logical unit. | |||
| -- | |||
| -- Lock_By_Keys___ | |||
| -- Server support to lock a specific instance of the logical unit. | |||
| -- | |||
| -- Get_Object_By_Id___ | |||
| -- Get LU-record from the database with a specified object identity. | |||
| -- | |||
| -- Get_Object_By_Keys___ | |||
| -- Get LU-record from the database with specified key columns. | |||
| -- | |||
| -- Check_Exist___ | |||
| -- Check if a specific LU-instance already exist in the database. | |||
| -- | |||
| -- Get_Id_Version_By_Keys___ | |||
| -- Get the current OBJID and OBJVERSION for a specific LU-instance. | |||
| ----------------------------------------------------------------------------- | |||
| FUNCTION Lock_By_Id___ ( | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE | |||
| IS | |||
| row_changed EXCEPTION; | |||
| row_deleted EXCEPTION; | |||
| row_locked EXCEPTION; | |||
| PRAGMA exception_init(row_locked, -0054); | |||
| rec_ &TABLE%ROWTYPE; | |||
| dummy_ NUMBER; | |||
| CURSOR lock_control IS | |||
| SELECT * | |||
| FROM &TABLE | |||
| WHERE &OBJID = objid_ | |||
| AND &OBJVERSION = objversion_ | |||
| FOR UPDATE NOWAIT; | |||
| CURSOR exist_control IS | |||
| SELECT 1 | |||
| FROM &TABLE | |||
| WHERE &OBJID = objid_; | |||
| BEGIN | |||
| OPEN lock_control; | |||
| FETCH lock_control INTO rec_; | |||
| IF (lock_control%FOUND) THEN | |||
| CLOSE lock_control; | |||
| RETURN rec_; | |||
| END IF; | |||
| CLOSE lock_control; | |||
| OPEN exist_control; | |||
| FETCH exist_control INTO dummy_; | |||
| IF (exist_control%FOUND) THEN | |||
| CLOSE exist_control; | |||
| RAISE row_changed; | |||
| ELSE | |||
| CLOSE exist_control; | |||
| RAISE row_deleted; | |||
| END IF; | |||
| EXCEPTION | |||
| WHEN row_locked THEN | |||
| Error_SYS.Record_Locked(lu_name_); | |||
| WHEN row_changed THEN | |||
| Error_SYS.Record_Modified(lu_name_); | |||
| WHEN row_deleted THEN | |||
| Error_SYS.Record_Removed(lu_name_); | |||
| END Lock_By_Id___; | |||
| FUNCTION Lock_By_Keys___ ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN &TABLE%ROWTYPE | |||
| IS | |||
| row_deleted EXCEPTION; | |||
| rec_ &TABLE%ROWTYPE; | |||
| CURSOR lock_control IS | |||
| SELECT * | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_ | |||
| AND no_urut = no_urut_ | |||
| FOR UPDATE; | |||
| BEGIN | |||
| OPEN lock_control; | |||
| FETCH lock_control INTO rec_; | |||
| IF (lock_control%FOUND) THEN | |||
| CLOSE lock_control; | |||
| RETURN rec_; | |||
| ELSE | |||
| CLOSE lock_control; | |||
| RAISE row_deleted; | |||
| END IF; | |||
| EXCEPTION | |||
| WHEN row_deleted THEN | |||
| Error_SYS.Record_Removed(lu_name_); | |||
| END Lock_By_Keys___; | |||
| FUNCTION Get_Object_By_Id___ ( | |||
| objid_ IN VARCHAR2 ) RETURN &TABLE%ROWTYPE | |||
| IS | |||
| lu_rec_ &TABLE%ROWTYPE; | |||
| CURSOR getrec IS | |||
| SELECT * | |||
| FROM &TABLE | |||
| WHERE &OBJID = objid_; | |||
| BEGIN | |||
| OPEN getrec; | |||
| FETCH getrec INTO lu_rec_; | |||
| IF (getrec%NOTFOUND) THEN | |||
| CLOSE getrec; | |||
| Error_SYS.Record_Removed(lu_name_); | |||
| END IF; | |||
| CLOSE getrec; | |||
| RETURN(lu_rec_); | |||
| END Get_Object_By_Id___; | |||
| FUNCTION Get_Object_By_Keys___ ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN &TABLE%ROWTYPE | |||
| IS | |||
| lu_rec_ &TABLE%ROWTYPE; | |||
| CURSOR getrec IS | |||
| SELECT * | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_ | |||
| AND no_urut = no_urut_; | |||
| BEGIN | |||
| OPEN getrec; | |||
| FETCH getrec INTO lu_rec_; | |||
| CLOSE getrec; | |||
| RETURN(lu_rec_); | |||
| END Get_Object_By_Keys___; | |||
| FUNCTION Check_Exist___ ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN BOOLEAN | |||
| IS | |||
| dummy_ NUMBER; | |||
| CURSOR exist_control IS | |||
| SELECT 1 | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_ | |||
| AND no_urut = no_urut_; | |||
| BEGIN | |||
| OPEN exist_control; | |||
| FETCH exist_control INTO dummy_; | |||
| IF (exist_control%FOUND) THEN | |||
| CLOSE exist_control; | |||
| RETURN(TRUE); | |||
| END IF; | |||
| CLOSE exist_control; | |||
| RETURN(FALSE); | |||
| END Check_Exist___; | |||
| PROCEDURE Get_Id_Version_By_Keys___ ( | |||
| objid_ IN OUT VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER) | |||
| IS | |||
| CURSOR get_version IS | |||
| SELECT &OBJID, &OBJVERSION | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_ | |||
| AND no_urut = no_urut_; | |||
| BEGIN | |||
| OPEN get_version; | |||
| FETCH get_version INTO objid_, objversion_; | |||
| CLOSE get_version; | |||
| END Get_Id_Version_By_Keys___; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- IMPLEMENTATION BASE METHODS FOR INSERT ----------------- | |||
| ----------------------------------------------------------------------------- | |||
| -- Prepare_Insert___ | |||
| -- Set all default values for a new instance (ON-NEW-RECORD) of this | |||
| -- logical unit by calling procedure Add_Attr. | |||
| -- | |||
| -- Unpack_Check_Insert___ | |||
| -- Unpack the attribute list, check all attributes from the client | |||
| -- and generate all default values before creation of the new object. | |||
| -- | |||
| -- Insert___ | |||
| -- Insert a new LU-instance into the database and return the values | |||
| -- for OBJID and OBJVERSION. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Prepare_Insert___ ( | |||
| attr_ IN OUT VARCHAR2 ) | |||
| IS | |||
| BEGIN | |||
| Client_SYS.Clear_Attr(attr_); | |||
| END Prepare_Insert___; | |||
| PROCEDURE Unpack_Check_Insert___ ( | |||
| attr_ IN OUT VARCHAR2, | |||
| newrec_ IN OUT &TABLE%ROWTYPE ) | |||
| IS | |||
| ptr_ NUMBER; | |||
| name_ VARCHAR2(30); | |||
| value_ VARCHAR2(2000); | |||
| BEGIN | |||
| ptr_ := NULL; | |||
| WHILE (Client_SYS.Get_Next_From_Attr(attr_, ptr_, name_, value_)) LOOP | |||
| IF (name_ = 'COMPANY') THEN | |||
| newrec_.company := value_; | |||
| ELSIF (name_ = 'STOCK_TAKING_UNIT_ID') THEN | |||
| newrec_.stock_taking_unit_id := value_; | |||
| ELSIF (name_ = 'MESIN') THEN | |||
| newrec_.mesin := value_; | |||
| Stock_Taking_Unit_Det_API.Exist(newrec_.company, newrec_.stock_taking_unit_id, newrec_.mesin); | |||
| ELSIF (name_ = 'NO_URUT') THEN | |||
| newrec_.no_urut := Client_SYS.Attr_Value_To_Number(value_); | |||
| ELSIF (name_ = 'JENIS') THEN | |||
| newrec_.jenis := value_; | |||
| ELSIF (name_ = 'LATITUDE') THEN | |||
| newrec_.latitude := Client_SYS.Attr_Value_To_Number(value_); | |||
| ELSIF (name_ = 'LONGITUDE') THEN | |||
| newrec_.longitude := Client_SYS.Attr_Value_To_Number(value_); | |||
| ELSIF (name_ = 'LOB_ID') THEN | |||
| newrec_.lob_id := Client_SYS.Attr_Value_To_Number(value_); | |||
| ELSE | |||
| Error_SYS.Item_Not_Exist(lu_name_, name_, value_); | |||
| END IF; | |||
| END LOOP; | |||
| Client_SYS.Clear_Attr(attr_); | |||
| Error_SYS.Check_Not_Null(lu_name_, 'COMPANY', newrec_.company); | |||
| Error_SYS.Check_Not_Null(lu_name_, 'STOCK_TAKING_UNIT_ID', newrec_.stock_taking_unit_id); | |||
| Error_SYS.Check_Not_Null(lu_name_, 'MESIN', newrec_.mesin); | |||
| Error_SYS.Check_Not_Null(lu_name_, 'NO_URUT', newrec_.no_urut); | |||
| EXCEPTION | |||
| WHEN value_error THEN | |||
| Error_SYS.Item_Format(lu_name_, name_, value_); | |||
| END Unpack_Check_Insert___; | |||
| PROCEDURE Insert___ ( | |||
| objid_ OUT VARCHAR2, | |||
| objversion_ OUT VARCHAR2, | |||
| newrec_ IN OUT &TABLE%ROWTYPE, | |||
| attr_ IN OUT VARCHAR2 ) | |||
| IS | |||
| BEGIN | |||
| newrec_.rowversion := sysdate; | |||
| objversion_ := to_char(newrec_.rowversion,'YYYYMMDDHH24MISS'); | |||
| INSERT | |||
| INTO stock_taking_unit_det_pic_tab ( | |||
| company, | |||
| stock_taking_unit_id, | |||
| mesin, | |||
| no_urut, | |||
| jenis, | |||
| latitude, | |||
| longitude, | |||
| lob_id, | |||
| rowversion) | |||
| VALUES ( | |||
| newrec_.company, | |||
| newrec_.stock_taking_unit_id, | |||
| newrec_.mesin, | |||
| newrec_.no_urut, | |||
| newrec_.jenis, | |||
| newrec_.latitude, | |||
| newrec_.longitude, | |||
| newrec_.lob_id, | |||
| newrec_.rowversion); | |||
| objid_ := DBMS_sql.last_row_id; | |||
| -- SELECT &OBJID | |||
| -- INTO objid_ | |||
| -- FROM &TABLE | |||
| -- WHERE company = newrec_.company | |||
| -- AND stock_taking_unit_id = newrec_.stock_taking_unit_id | |||
| -- AND mesin = newrec_.mesin | |||
| -- AND no_urut = newrec_.no_urut; | |||
| EXCEPTION | |||
| WHEN dup_val_on_index THEN | |||
| Error_SYS.Record_Exist(lu_name_); | |||
| END Insert___; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- IMPLEMENTATION BASE METHODS FOR UPDATE ----------------- | |||
| ----------------------------------------------------------------------------- | |||
| -- Unpack_Check_Update___ | |||
| -- Unpack the attribute list, check all attributes from the client | |||
| -- and generate all default values before modifying the object. | |||
| -- | |||
| -- Update___ | |||
| -- Update an existing LU-instance in the database and return the | |||
| -- the new OBJVERSION. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Unpack_Check_Update___ ( | |||
| attr_ IN OUT VARCHAR2, | |||
| newrec_ IN OUT &TABLE%ROWTYPE, | |||
| objid_ IN VARCHAR2 ) | |||
| IS | |||
| ptr_ NUMBER; | |||
| name_ VARCHAR2(30); | |||
| value_ VARCHAR2(2000); | |||
| BEGIN | |||
| ptr_ := NULL; | |||
| WHILE (Client_SYS.Get_Next_From_Attr(attr_, ptr_, name_, value_)) LOOP | |||
| IF (name_ = 'COMPANY') THEN | |||
| Error_SYS.Item_Update(lu_name_, 'COMPANY'); | |||
| ELSIF (name_ = 'STOCK_TAKING_UNIT_ID') THEN | |||
| Error_SYS.Item_Update(lu_name_, 'STOCK_TAKING_UNIT_ID'); | |||
| ELSIF (name_ = 'MESIN') THEN | |||
| Error_SYS.Item_Update(lu_name_, 'MESIN'); | |||
| ELSIF (name_ = 'NO_URUT') THEN | |||
| Error_SYS.Item_Update(lu_name_, 'NO_URUT'); | |||
| ELSIF (name_ = 'JENIS') THEN | |||
| newrec_.jenis := value_; | |||
| ELSIF (name_ = 'LATITUDE') THEN | |||
| newrec_.latitude := Client_SYS.Attr_Value_To_Number(value_); | |||
| ELSIF (name_ = 'LONGITUDE') THEN | |||
| newrec_.longitude := Client_SYS.Attr_Value_To_Number(value_); | |||
| ELSIF (name_ = 'LOB_ID') THEN | |||
| newrec_.lob_id := Client_SYS.Attr_Value_To_Number(value_); | |||
| ELSE | |||
| Error_SYS.Item_Not_Exist(lu_name_, name_, value_); | |||
| END IF; | |||
| END LOOP; | |||
| Client_SYS.Clear_Attr(attr_); | |||
| EXCEPTION | |||
| WHEN value_error THEN | |||
| Error_SYS.Item_Format(lu_name_, name_, value_); | |||
| END Unpack_Check_Update___; | |||
| PROCEDURE Update___ ( | |||
| objid_ IN VARCHAR2, | |||
| oldrec_ IN &TABLE%ROWTYPE, | |||
| newrec_ IN OUT &TABLE%ROWTYPE, | |||
| attr_ IN OUT VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| by_keys_ IN BOOLEAN DEFAULT FALSE ) | |||
| IS | |||
| BEGIN | |||
| newrec_.rowversion := sysdate; | |||
| objversion_ := to_char(newrec_.rowversion,'YYYYMMDDHH24MISS'); | |||
| IF by_keys_ THEN | |||
| UPDATE stock_taking_unit_det_pic_tab | |||
| SET company = newrec_.company, | |||
| stock_taking_unit_id = newrec_.stock_taking_unit_id, | |||
| mesin = newrec_.mesin, | |||
| no_urut = newrec_.no_urut, | |||
| jenis = newrec_.jenis, | |||
| latitude = newrec_.latitude, | |||
| longitude = newrec_.longitude, | |||
| lob_id = newrec_.lob_id, | |||
| rowversion = newrec_.rowversion | |||
| WHERE company = newrec_.company | |||
| AND stock_taking_unit_id = newrec_.stock_taking_unit_id | |||
| AND mesin = newrec_.mesin | |||
| AND no_urut = newrec_.no_urut; | |||
| ELSE | |||
| UPDATE stock_taking_unit_det_pic_tab | |||
| SET company = newrec_.company, | |||
| stock_taking_unit_id = newrec_.stock_taking_unit_id, | |||
| mesin = newrec_.mesin, | |||
| no_urut = newrec_.no_urut, | |||
| jenis = newrec_.jenis, | |||
| latitude = newrec_.latitude, | |||
| longitude = newrec_.longitude, | |||
| lob_id = newrec_.lob_id, | |||
| rowversion = newrec_.rowversion | |||
| WHERE &OBJID = objid_; | |||
| END IF; | |||
| EXCEPTION | |||
| WHEN dup_val_on_index THEN | |||
| Error_SYS.Record_Exist(lu_name_); | |||
| END Update___; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- IMPLEMENTATION BASE METHODS FOR DELETE ----------------- | |||
| ----------------------------------------------------------------------------- | |||
| -- Check_Delete___ | |||
| -- Checks whether a specific LU-record may be removed or not. | |||
| -- The procedure should check business rules like attribute values | |||
| -- as well as database constraints (defined or not). | |||
| -- | |||
| -- Delete___ | |||
| -- Deletion of the specific LU-object from the database. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Check_Delete___ ( | |||
| remrec_ IN &TABLE%ROWTYPE ) | |||
| IS | |||
| key_ VARCHAR2(2000); | |||
| BEGIN | |||
| key_ := remrec_.company || '^' || remrec_.stock_taking_unit_id || '^' || remrec_.mesin || '^' || remrec_.no_urut || '^'; | |||
| Reference_SYS.Check_Restricted_Delete(lu_name_, key_); | |||
| END Check_Delete___; | |||
| PROCEDURE Delete___ ( | |||
| objid_ IN VARCHAR2, | |||
| remrec_ IN &TABLE%ROWTYPE ) | |||
| IS | |||
| key_ VARCHAR2(2000); | |||
| BEGIN | |||
| key_ := remrec_.company || '^' || remrec_.stock_taking_unit_id || '^' || remrec_.mesin || '^' || remrec_.no_urut || '^'; | |||
| Reference_SYS.Do_Cascade_Delete(lu_name_, key_); | |||
| DELETE | |||
| FROM stock_taking_unit_det_pic_tab | |||
| WHERE &OBJID = objid_; | |||
| END Delete___; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PRIVATE BASE METHODS ----------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -- Lock__ | |||
| -- Client-support to lock a specific instance of the logical unit. | |||
| -- | |||
| -- New__ | |||
| -- Client-support interface to create LU instances. | |||
| -- action_ = 'PREPARE' | |||
| -- Default values and handle of information to client. | |||
| -- The default values are set in procedure Prepare_Insert___. | |||
| -- action_ = 'CHECK' | |||
| -- Check all attributes before creating new object and handle of | |||
| -- information to client. The attribute list is unpacked, checked | |||
| -- and prepared (defaults) in procedure Unpack_Check_Insert___. | |||
| -- action_ = 'DO' | |||
| -- Creation of new instances of the logical unit and handle of | |||
| -- information to client. The attribute list is unpacked, checked | |||
| -- and prepared (defaults) in procedure Unpack_Check_Insert___ | |||
| -- before calling procedure Insert___. | |||
| -- | |||
| -- Modify__ | |||
| -- Client-support interface to modify attributes for LU instances. | |||
| -- action_ = 'CHECK' | |||
| -- Check all attributes before modifying an existing object and | |||
| -- handle of information to client. The attribute list is unpacked, | |||
| -- checked and prepared(defaults) in procedure Unpack_Check_Update___. | |||
| -- action_ = 'DO' | |||
| -- Modification of an existing instance of the logical unit. The | |||
| -- procedure unpacks the attributes, checks all values before | |||
| -- procedure Update___ is called. | |||
| -- | |||
| -- Remove__ | |||
| -- Client-support interface to remove LU instances. | |||
| -- action_ = 'CHECK' | |||
| -- Check whether a specific LU-instance may be removed or not. | |||
| -- The procedure fetches the complete record by calling procedure | |||
| -- Get_Object_By_Id___. Then the check is made by calling procedure | |||
| -- Check_Delete___. | |||
| -- action_ = 'DO' | |||
| -- Remove an existing instance of the logical unit. The procedure | |||
| -- fetches the complete LU-record, checks for a delete and then | |||
| -- deletes the record by calling procedure Delete___. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Lock__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN VARCHAR2 ) | |||
| IS | |||
| dummy_ &TABLE%ROWTYPE; | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'Lock__'); | |||
| dummy_ := Lock_By_Id___(objid_, objversion_); | |||
| info_ := Client_SYS.Get_All_Info; | |||
| END Lock__; | |||
| PROCEDURE New__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ OUT VARCHAR2, | |||
| objversion_ OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ) | |||
| IS | |||
| newrec_ &TABLE%ROWTYPE; | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'New__'); | |||
| IF (action_ = 'PREPARE') THEN | |||
| Prepare_Insert___(attr_); | |||
| ELSIF (action_ = 'CHECK') THEN | |||
| Unpack_Check_Insert___(attr_, newrec_); | |||
| ELSIF (action_ = 'DO') THEN | |||
| Unpack_Check_Insert___(attr_, newrec_); | |||
| Insert___(objid_, objversion_, newrec_, attr_); | |||
| END IF; | |||
| info_ := Client_SYS.Get_All_Info; | |||
| END New__; | |||
| PROCEDURE Modify__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN OUT VARCHAR2, | |||
| attr_ IN OUT VARCHAR2, | |||
| action_ IN VARCHAR2 ) | |||
| IS | |||
| oldrec_ &TABLE%ROWTYPE; | |||
| newrec_ &TABLE%ROWTYPE; | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'Modify__'); | |||
| IF (action_ = 'CHECK') THEN | |||
| newrec_ := Get_Object_By_Id___(objid_); | |||
| Unpack_Check_Update___(attr_, newrec_, objid_); | |||
| ELSIF (action_ = 'DO') THEN | |||
| oldrec_ := Lock_By_Id___(objid_, objversion_); | |||
| newrec_ := oldrec_; | |||
| Unpack_Check_Update___(attr_, newrec_, objid_); | |||
| Update___(objid_, oldrec_, newrec_, attr_, objversion_); | |||
| END IF; | |||
| info_ := Client_SYS.Get_All_Info; | |||
| END Modify__; | |||
| PROCEDURE Remove__ ( | |||
| info_ OUT VARCHAR2, | |||
| objid_ IN VARCHAR2, | |||
| objversion_ IN VARCHAR2, | |||
| action_ IN VARCHAR2 ) | |||
| IS | |||
| remrec_ &TABLE%ROWTYPE; | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'Remove__'); | |||
| IF (action_ = 'CHECK') THEN | |||
| remrec_ := Get_Object_By_Id___(objid_); | |||
| Check_Delete___(remrec_); | |||
| ELSIF (action_ = 'DO') THEN | |||
| remrec_ := Lock_By_Id___(objid_, objversion_); | |||
| Check_Delete___(remrec_); | |||
| Delete___(objid_, remrec_); | |||
| END IF; | |||
| info_ := Client_SYS.Get_All_Info; | |||
| END Remove__; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PUBLIC BASE METHODS ------------------------------------ | |||
| ----------------------------------------------------------------------------- | |||
| -- Exist | |||
| -- Checks if given pointer (e.g. primary key) to an instance of this | |||
| -- logical unit exists. If not an exception will be raised. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Exist ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) | |||
| IS | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'Exist', TRUE); | |||
| IF (NOT Check_Exist___(company_, stock_taking_unit_id_, mesin_, no_urut_)) THEN | |||
| Error_SYS.Record_Not_Exist(lu_name_); | |||
| END IF; | |||
| END Exist; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC IMPLEMENTATION METHODS --------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PRIVATE METHODS ---------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PROTECTED METHODS -------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PUBLIC METHODS ----------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| FUNCTION Get_Jenis ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN VARCHAR2 | |||
| IS | |||
| temp_ &TABLE..jenis%TYPE; | |||
| CURSOR get_attr IS | |||
| SELECT jenis | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_ | |||
| AND no_urut = no_urut_; | |||
| BEGIN | |||
| OPEN get_attr; | |||
| FETCH get_attr INTO temp_; | |||
| CLOSE get_attr; | |||
| RETURN temp_; | |||
| END Get_Jenis; | |||
| FUNCTION Get_Latitude ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN NUMBER | |||
| IS | |||
| temp_ &TABLE..latitude%TYPE; | |||
| CURSOR get_attr IS | |||
| SELECT latitude | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_ | |||
| AND no_urut = no_urut_; | |||
| BEGIN | |||
| OPEN get_attr; | |||
| FETCH get_attr INTO temp_; | |||
| CLOSE get_attr; | |||
| RETURN temp_; | |||
| END Get_Latitude; | |||
| FUNCTION Get_Longitude ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN NUMBER | |||
| IS | |||
| temp_ &TABLE..longitude%TYPE; | |||
| CURSOR get_attr IS | |||
| SELECT longitude | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_ | |||
| AND no_urut = no_urut_; | |||
| BEGIN | |||
| OPEN get_attr; | |||
| FETCH get_attr INTO temp_; | |||
| CLOSE get_attr; | |||
| RETURN temp_; | |||
| END Get_Longitude; | |||
| FUNCTION Get_Lob_Id ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN NUMBER | |||
| IS | |||
| temp_ &TABLE..lob_id%TYPE; | |||
| CURSOR get_attr IS | |||
| SELECT lob_id | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_ | |||
| AND no_urut = no_urut_; | |||
| BEGIN | |||
| OPEN get_attr; | |||
| FETCH get_attr INTO temp_; | |||
| CLOSE get_attr; | |||
| RETURN temp_; | |||
| END Get_Lob_Id; | |||
| FUNCTION Get ( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER ) RETURN Public_Rec | |||
| IS | |||
| temp_ Public_Rec; | |||
| CURSOR get_attr IS | |||
| SELECT jenis, latitude, longitude, lob_id | |||
| FROM &TABLE | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_ | |||
| AND no_urut = no_urut_; | |||
| BEGIN | |||
| OPEN get_attr; | |||
| FETCH get_attr INTO temp_; | |||
| CLOSE get_attr; | |||
| RETURN temp_; | |||
| END Get; | |||
| PROCEDURE Create_Update_Record( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER, | |||
| jenis_ IN VARCHAR2, | |||
| latitude_ IN NUMBER, | |||
| longitude_ IN NUMBER, | |||
| lob_id_ IN NUMBER) | |||
| IS | |||
| attr_ VARCHAR2(2000); | |||
| objid_ VARCHAR2(200); | |||
| objversion_ VARCHAR2(2000); | |||
| info_ VARCHAR2(2000); | |||
| CURSOR get_no_urut IS | |||
| select NVL(MAX(no_urut),0) + 1 from &VIEW. | |||
| WHERE company = company_ | |||
| AND stock_taking_unit_id = stock_taking_unit_id_ | |||
| AND mesin = mesin_; | |||
| temp_ NUMBER; | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'Create_Update_Record'); | |||
| Get_Id_Version_By_Keys___ (objid_, objversion_, company_,stock_taking_unit_id_,mesin_,no_urut_); | |||
| IF objid_ IS NULL THEN | |||
| -- OPEN get_no_urut; | |||
| -- FETCH get_no_urut INTO temp_; | |||
| -- CLOSE get_no_urut; | |||
| Client_SYS.Add_To_Attr('COMPANY', company_, attr_); | |||
| Client_SYS.Add_To_Attr('STOCK_TAKING_UNIT_ID', stock_taking_unit_id_, attr_); | |||
| Client_SYS.Add_To_Attr('MESIN', mesin_, attr_); | |||
| Client_SYS.Add_To_Attr('NO_URUT', no_urut_, attr_); | |||
| END IF; | |||
| Client_SYS.Add_To_Attr('JENIS', jenis_, attr_); | |||
| Client_SYS.Add_To_Attr('LATITUDE', latitude_, attr_); | |||
| Client_SYS.Add_To_Attr('LONGITUDE', longitude_, attr_); | |||
| Client_SYS.Add_To_Attr('LOB_ID', lob_id_, attr_); | |||
| IF objid_ IS NULL THEN | |||
| New__(info_, objid_, objversion_, attr_, 'DO'); | |||
| ELSE | |||
| Modify__(info_,objid_,objversion_,attr_,'DO'); | |||
| END IF; | |||
| END Create_Update_Record; | |||
| PROCEDURE Remove_Record( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER) | |||
| IS | |||
| objid_ VARCHAR2(200); | |||
| objversion_ VARCHAR2(2000); | |||
| info_ VARCHAR2(2000); | |||
| BEGIN | |||
| Get_Id_Version_By_Keys___ (objid_, objversion_, company_, stock_taking_unit_id_,mesin_,no_urut_); | |||
| Remove__(info_, objid_, objversion_, 'DO'); | |||
| END Remove_Record; | |||
| PROCEDURE Update_Lob_Id( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER, | |||
| lob_id_ IN NUMBER) | |||
| IS | |||
| attr_ VARCHAR2(2000); | |||
| objid_ VARCHAR2(200); | |||
| objversion_ VARCHAR2(2000); | |||
| info_ VARCHAR2(2000); | |||
| BEGIN | |||
| General_SYS.Init_Method(lu_name_, '&PKG', 'Update_Lob_Id'); | |||
| Get_Id_Version_By_Keys___ (objid_, objversion_, company_,stock_taking_unit_id_,mesin_,no_urut_); | |||
| Client_SYS.Add_To_Attr('LOB_ID', lob_id_, attr_); | |||
| Modify__(info_,objid_,objversion_,attr_,'DO'); | |||
| END Update_Lob_Id; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- FOUNDATION1 METHODS ------------------------------------ | |||
| ----------------------------------------------------------------------------- | |||
| -- Init | |||
| -- Dummy procedure that can be called at database startup to ensure that | |||
| -- this package is loaded into memory for performance reasons only. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Init | |||
| IS | |||
| BEGIN | |||
| NULL; | |||
| END Init; | |||
| END &PKG; | |||
| / | |||
| SHOW ERROR | |||
| ----------------------------------------------------------------------------- | |||
| @@ -0,0 +1,60 @@ | |||
| ----------------------------------------------------------------------------- | |||
| -- | |||
| -- Logical unit: KreditUtil | |||
| -- | |||
| -- | |||
| -- Date Sign History | |||
| -- ------ ---- ----------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| DEFINE MODULE = UTILS | |||
| DEFINE LU = Stock_Taking_Unit_Utils | |||
| DEFINE PKG = STOCK_TAKING_UNIT_UTILS_API | |||
| PROMPT Creating &PKG specification | |||
| CREATE OR REPLACE PACKAGE &PKG IS | |||
| module_ CONSTANT VARCHAR2(25) := '&MODULE'; | |||
| lu_name_ CONSTANT VARCHAR2(25) := '&LU'; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PRIVATE METHODS ---------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PROTECTED METHODS -------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PUBLIC METHODS ----------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Create_Stock_Taking_Blob( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER, | |||
| jenis_ IN VARCHAR2, | |||
| latitude_ IN NUMBER, | |||
| longitude_ IN NUMBER, | |||
| blob_file_ IN BLOB | |||
| ); | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- FOUNDATION1 METHODS ------------------------------------ | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Init; | |||
| END &PKG; | |||
| / | |||
| SHOW ERROR | |||
| ----------------------------------------------------------------------------- | |||
| @@ -0,0 +1,143 @@ | |||
| ----------------------------------------------------------------------------- | |||
| -- | |||
| -- Logical unit: CabangUtil | |||
| -- | |||
| -- Purpose: | |||
| -- | |||
| -- | |||
| -- Date Sign History | |||
| -- ------ ---- ----------------------------------------------------------- | |||
| -- 211119 FRK- Create Push_Message | |||
| ----------------------------------------------------------------------------- | |||
| DEFINE MODULE = UTILS | |||
| DEFINE LU = Stock_Taking_Unit_Utils | |||
| DEFINE PKG = STOCK_TAKING_UNIT_UTILS_API | |||
| DEFINE OBJID = rowid | |||
| DEFINE OBJVERSION = "ltrim(lpad(to_char(rowversion,'YYYYMMDDHH24MISS'),2000))" | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- PACKAGES FOR METHODS ----------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| PROMPT Creating &PKG implementation | |||
| CREATE OR REPLACE PACKAGE BODY &PKG IS | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC IMPLEMENTATION METHOD DECLARATIONS --------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC IMPLEMENTATION METHODS --------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PRIVATE METHODS ---------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PROTECTED METHODS -------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- LU SPECIFIC PUBLIC METHODS ----------------------------- | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Create_Stock_Taking_Blob( | |||
| company_ IN VARCHAR2, | |||
| stock_taking_unit_id_ IN VARCHAR2, | |||
| mesin_ IN VARCHAR2, | |||
| no_urut_ IN NUMBER, | |||
| jenis_ IN VARCHAR2, | |||
| latitude_ IN NUMBER, | |||
| longitude_ IN NUMBER, | |||
| blob_file_ IN BLOB | |||
| ) | |||
| IS | |||
| new_lob_id_ VARCHAR2(4000) := null; | |||
| BEGIN | |||
| STOCK_TAKING_UNIT_DET_PIC_API.Create_Update_Record( | |||
| company_ => company_, | |||
| stock_taking_unit_id_ => stock_taking_unit_id_, | |||
| mesin_ => mesin_, | |||
| no_urut_ => no_urut_, | |||
| jenis_ => jenis_, | |||
| latitude_ => latitude_, | |||
| longitude_ => longitude_, | |||
| lob_id_ => new_lob_id_); | |||
| SELECT binary_object_temp_tab_seq.nextval INTO new_lob_id_ | |||
| FROM dual; | |||
| INSERT | |||
| INTO binary_object_apex_temp_tab( | |||
| blob_id, | |||
| file_blob, | |||
| file_name, | |||
| file_dir, | |||
| file_length, | |||
| mime_type, | |||
| ref_package, | |||
| ref1, | |||
| ref2, | |||
| ref3, | |||
| ref4, | |||
| ref5, | |||
| created_by, | |||
| created_date, | |||
| rowversion) | |||
| VALUES( | |||
| new_lob_id_, | |||
| EMPTY_BLOB(), | |||
| stock_taking_unit_id_|| '_' || mesin_|| '_' || no_urut_ || '.jpg', | |||
| 'F' || TO_CHAR(sysdate,'YYYY'), | |||
| dbms_lob.getlength(blob_file_), | |||
| 'image/jpeg', | |||
| 'STOCK_TAKING_UNIT_API', | |||
| company_, --ref1 <-- COMPANY | |||
| stock_taking_unit_id_, --ref2 <-- STOCK_TAKING_UNIT_ID | |||
| mesin_, --ref3 <-- mesin | |||
| no_urut_, --ref4 <--NO_URUT | |||
| null, | |||
| Utils_API.Get_Fnd_User, --created_by | |||
| sysdate, --created_date | |||
| sysdate); | |||
| UPDATE binary_object_apex_temp_tab | |||
| SET file_blob = blob_file_ | |||
| WHERE blob_id = new_lob_id_; | |||
| MY_BLOB_UTIL_API.Apex_Upload_File(new_lob_id_); | |||
| END; | |||
| ----------------------------------------------------------------------------- | |||
| -------------------- FOUNDATION1 METHODS ------------------------------------ | |||
| ----------------------------------------------------------------------------- | |||
| -- Init | |||
| -- Dummy procedure that can be called at database startup to ensure that | |||
| -- this package is loaded into memory for performance reasons only. | |||
| ----------------------------------------------------------------------------- | |||
| PROCEDURE Init | |||
| IS | |||
| BEGIN | |||
| NULL; | |||
| END Init; | |||
| END &PKG; | |||
| / | |||
| SHOW ERROR | |||
| ----------------------------------------------------------------------------- | |||
| @@ -0,0 +1,22 @@ | |||
| { | |||
| "name": "unitcheck", | |||
| "version": "0.0.0", | |||
| "private": true, | |||
| "scripts": { | |||
| "start": "node ./server.js" | |||
| }, | |||
| "dependencies": { | |||
| "cookie-parser": "~1.4.4", | |||
| "debug": "~2.6.9", | |||
| "express": "~4.16.1", | |||
| "fs-extra": "^9.0.1", | |||
| "hbs": "^4.1.1", | |||
| "http-errors": "~1.6.3", | |||
| "moment": "^2.27.0", | |||
| "morgan": "~1.9.1", | |||
| "node-cron": "^2.0.3", | |||
| "oracledb": "^4.2.0", | |||
| "path": "^0.12.7", | |||
| "sqlite3": "^4.2.0" | |||
| } | |||
| } | |||
| @@ -0,0 +1,11 @@ | |||
| { | |||
| name: "unit-stock", | |||
| script: "./server.js", | |||
| exec_mode: "cluster", | |||
| instances: 4, | |||
| env: { | |||
| "PORT": 3535, | |||
| "NODE_ENV": "production", | |||
| "UV_THREADPOOL_SIZE": 10 | |||
| } | |||
| } | |||
| @@ -0,0 +1,22 @@ | |||
| var express = require('express'); | |||
| var router = express.Router(); | |||
| var sqliteModel = require('../model/sqliteModel.js'); | |||
| router.get('/getSqliteDb/:company/:cabangId', async function(req,res,next){ | |||
| var company = req.params.company; | |||
| var cabangId = req.params.cabangId; | |||
| var sqliteDb = await sqliteModel.CreateDataCollection(company,cabangId); | |||
| if(sqliteDb["STATUS"] == 0){ | |||
| return res.status(500).send(sqliteDb["DATA"]); | |||
| } | |||
| else{ | |||
| var dbPath = sqliteDb["DATA"]; | |||
| res.download(dbPath); | |||
| } | |||
| }); | |||
| module.exports = router; | |||
| @@ -0,0 +1,79 @@ | |||
| var express = require('express'); | |||
| var router = express.Router(); | |||
| var fs = require('fs'); | |||
| const path = require('path'); | |||
| var sqliteModel = require('../model/sqliteModel.js'); | |||
| var oracleModel = require('../model/oracleModel.js'); | |||
| router.post('/uploadSqlitedb',async function(req,res,next){ | |||
| try{ | |||
| var dbBytes = req.body.byte; | |||
| var company = req.body.company; | |||
| var cabangId = req.body.cabangId; | |||
| var activeStockTaking = await oracleModel.getActiveStockTakingByCabang(company,cabangId); | |||
| if(activeStockTaking == undefined) return res.json({"STATUS" : 0, "DATA" : 'Data Stock Taking dalam status tidak Open !'}); | |||
| var dirPath = path.join(__dirname , `../public/sqlite/upload/${company}/${cabangId}`); | |||
| fs.mkdir(dirPath, { recursive: true }, (err) => { | |||
| // console.log('2',err); | |||
| var d = new Date(); | |||
| var n = d.getTime(); | |||
| var dbName = `${n}.db` | |||
| var dbPath = path.join(dirPath , dbName); | |||
| var a = fs.writeFileSync(dbPath,Buffer.from(dbBytes)); | |||
| return res.json({"STATUS" : 1, "DATA" : 'Data send successfully' , "dbPath" : dbPath}); | |||
| }); | |||
| } | |||
| catch(e){ | |||
| return res.json({"STATUS" : 0, "DATA" : e}); | |||
| } | |||
| }); | |||
| router.post('/unpackDb', async function(req,res,next){ | |||
| var dbPath = req.body.dbPath; | |||
| var company = req.body.company; | |||
| var cabangId = req.body.cabangId; | |||
| var data = await sqliteModel.unpackAndInsert(dbPath,company,cabangId); | |||
| return res.json(data); | |||
| }) | |||
| router.post('/login',async function(req,res,next){ | |||
| var username = req.body.User; | |||
| var password = req.body.Pass; | |||
| var data = await oracleModel.getDataUser(username,password); | |||
| return res.send(data); | |||
| }) | |||
| router.post('/getCabangByUser',async function(req,res,next){ | |||
| var company = req.body.company; | |||
| var username = req.body.User; | |||
| var data = await oracleModel.getDataCabangByUser(company,username); | |||
| return res.send(data); | |||
| }) | |||
| router.post('/submitStock', async function(req,res,next){ | |||
| console.log(req.body); | |||
| var company = req.body.company; | |||
| var stockTakingId = req.body.stockTakingId; | |||
| var data = await oracleModel.submitStockTaking(company,stockTakingId); | |||
| return res.send(data); | |||
| }); | |||
| router.post('/getStateStockUnit', async function(req,res){ | |||
| var company = req.body.company; | |||
| var stockTakingId = req.body.stockTakingId; | |||
| var stateStockTaking = await oracleModel.getStateStockTaking(company,stockTakingId); | |||
| return res.send(stateStockTaking); | |||
| }) | |||
| module.exports = router; | |||
| @@ -0,0 +1,9 @@ | |||
| var express = require('express'); | |||
| var router = express.Router(); | |||
| /* GET users listing. */ | |||
| router.get('/', function(req, res, next) { | |||
| res.send('respond with a resource'); | |||
| }); | |||
| module.exports = router; | |||
| @@ -0,0 +1,104 @@ | |||
| #!/usr/bin/env node | |||
| /** | |||
| * Module dependencies. | |||
| */ | |||
| var app = require('./config/config'); | |||
| var debug = require('debug')('unitcheck:server'); | |||
| var http = require('http'); | |||
| const cron = require('node-cron'); | |||
| const path = require('path'); | |||
| const fs = require('fs-extra'); | |||
| /** | |||
| * Get port from environment and store in Express. | |||
| */ | |||
| var port = normalizePort(process.env.PORT || '3451'); | |||
| app.set('port', port); | |||
| /** | |||
| * Create HTTP server. | |||
| */ | |||
| var server = http.createServer(app); | |||
| /** | |||
| * Listen on provided port, on all network interfaces. | |||
| */ | |||
| server.listen(port); | |||
| server.on('error', onError); | |||
| server.on('listening', onListening); | |||
| server.setTimeout(600000); | |||
| cron.schedule('59 23 * * * *', function() { | |||
| var dirPath = path.join(__dirname , `/public/sqlite/db/`); | |||
| fs.emptyDirSync(dirPath); | |||
| }); | |||
| /** | |||
| * Normalize a port into a number, string, or false. | |||
| */ | |||
| function normalizePort(val) { | |||
| var port = parseInt(val, 10); | |||
| if (isNaN(port)) { | |||
| // named pipe | |||
| return val; | |||
| } | |||
| if (port >= 0) { | |||
| // port number | |||
| return port; | |||
| } | |||
| return false; | |||
| } | |||
| /** | |||
| * Event listener for HTTP server "error" event. | |||
| */ | |||
| function onError(error) { | |||
| if (error.syscall !== 'listen') { | |||
| throw error; | |||
| } | |||
| var bind = typeof port === 'string' | |||
| ? 'Pipe ' + port | |||
| : 'Port ' + port; | |||
| // handle specific listen errors with friendly messages | |||
| switch (error.code) { | |||
| case 'EACCES': | |||
| console.error(bind + ' requires elevated privileges'); | |||
| process.exit(1); | |||
| break; | |||
| case 'EADDRINUSE': | |||
| console.error(bind + ' is already in use'); | |||
| process.exit(1); | |||
| break; | |||
| default: | |||
| throw error; | |||
| } | |||
| } | |||
| /** | |||
| * Event listener for HTTP server "listening" event. | |||
| */ | |||
| function onListening() { | |||
| var addr = server.address(); | |||
| var bind = typeof addr === 'string' | |||
| ? 'pipe ' + addr | |||
| : 'port ' + addr.port; | |||
| console.log('Listening on ' + bind); | |||
| debug('Listening on ' + bind); | |||
| } | |||
| @@ -0,0 +1,177 @@ | |||
| const oracledb = require('oracledb'); | |||
| var oracleConfig = require('../config/oracle.js').oracleConfig; | |||
| oracledb.fetchAsString = [ oracledb.CLOB ]; | |||
| oracledb.fetchAsBuffer = [ oracledb.BLOB ]; | |||
| function editError(err){ | |||
| var newError = err; | |||
| var newErrorString = ''; | |||
| if(newError.indexOf("\n")!=-1){ | |||
| var indexColon = newError.indexOf(":")+1; | |||
| var indexNewLine = newError.indexOf("\n"); | |||
| var newErrorSubString = newError.substring(0, indexNewLine); | |||
| newErrorSubString = newErrorSubString.substring(indexColon, newErrorSubString.length); | |||
| newErrorString = newErrorSubString; | |||
| }else{ | |||
| var indexColon = newError.indexOf(":")+1; | |||
| newError = newError.substring(indexColon, newError.length); | |||
| newErrorString = newError; | |||
| } | |||
| return newErrorString.substring(newErrorString.indexOf('.','start')+1); | |||
| } | |||
| async function getData(query,params = {},options = {}){ | |||
| let conn; | |||
| let error = []; | |||
| var result; | |||
| var queryOptions = { | |||
| outFormat:oracledb.OBJECT | |||
| } | |||
| for(key in options){ | |||
| queryOptions[key] = options[key]; | |||
| } | |||
| try{ | |||
| conn = await oracledb.getConnection(oracleConfig); | |||
| var data = await conn.execute(query,params,queryOptions); | |||
| result = {"STATUS" : 1 , "DATA" : data.rows}; | |||
| return result; | |||
| } | |||
| catch(e){ | |||
| result = {"STATUS" : 0 , "DATA" : e.message}; | |||
| return result; | |||
| } | |||
| finally{ | |||
| if(conn){ | |||
| try{ | |||
| await conn.close(); | |||
| } | |||
| catch(e){ | |||
| result = {"STATUS" : 0 , "DATA" : e.message}; | |||
| return result; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| async function runQuery(query, params,user_id = null,owner = null) { | |||
| let conn; | |||
| var result; | |||
| try{ | |||
| conn = await oracledb.getConnection(oracleConfig); | |||
| // var query = `BEGIN ${owner}.General_SYS.Init_Fnd_Session__(UPPER(:user_login)); END;`; | |||
| // var par = {user_login:user_id}; | |||
| // console.log('Inserted'); | |||
| // await conn.execute(query,par); | |||
| data = await conn.execute(query,params,{ outFormat: oracledb.OBJECT }); | |||
| await conn.commit(); | |||
| result = {"STATUS":1,"DATA":data}; | |||
| } | |||
| catch(e){ | |||
| await conn.rollback(); | |||
| result = {"STATUS":0,"DATA":e.message}; | |||
| } | |||
| finally{ | |||
| if(conn){await conn.close()}; | |||
| return result; | |||
| } | |||
| }; | |||
| async function getConnection(){ | |||
| try{ | |||
| let conn; | |||
| conn = await oracledb.getConnection(oracleConfig); | |||
| return conn; | |||
| } | |||
| catch(e){ | |||
| console.log(e.message); | |||
| throw editError(e.message); | |||
| } | |||
| } | |||
| async function getQueryData(conn,query, params,user_id = null,owner = null){ | |||
| try{ | |||
| var data = await conn.execute(query,params,{ outFormat: oracledb.OBJECT }); | |||
| return data.rows; | |||
| } | |||
| catch(e){ | |||
| throw editError(e.message); | |||
| } | |||
| } | |||
| async function runQueryData(conn,query, params,user_id = null,owner = null){ | |||
| try{ | |||
| var data = await conn.execute(query,params,{ outFormat: oracledb.OBJECT }); | |||
| return data; | |||
| } | |||
| catch(e){ | |||
| throw editError(e.message); | |||
| } | |||
| } | |||
| async function runQueryMany(conn,query, params,user_id = null,owner = null){ | |||
| try{ | |||
| var data = await conn.executeMany(query,params,{ outFormat: oracledb.OBJECT }); | |||
| return data; | |||
| } | |||
| catch(e){ | |||
| throw editError(e.message); | |||
| } | |||
| } | |||
| async function doCommit(conn){ | |||
| try{ | |||
| var connection = conn; | |||
| await connection.commit(); | |||
| } | |||
| catch(e){ | |||
| throw editError(e.message); | |||
| } | |||
| }; | |||
| async function doRelease(conn){ | |||
| try{ | |||
| var connection = conn; | |||
| await connection.close(); | |||
| } | |||
| catch(e){ | |||
| throw editError(e.message); | |||
| } | |||
| } | |||
| async function doRollBack(conn){ | |||
| try{ | |||
| var connection = conn; | |||
| await connection.rollback(); | |||
| await conn.close(); | |||
| } | |||
| catch(e){ | |||
| throw e; | |||
| } | |||
| } | |||
| module.exports = { | |||
| getData : getData, | |||
| runQuery : runQuery, | |||
| getConnection : getConnection, | |||
| getQueryData : getQueryData, | |||
| runQueryData : runQueryData, | |||
| runQueryMany : runQueryMany, | |||
| doCommit : doCommit, | |||
| doRelease : doRelease, | |||
| doRollBack : doRollBack | |||
| } | |||
| @@ -0,0 +1,29 @@ | |||
| var sqlite3 = require('sqlite3').verbose(); | |||
| module.exports.runQuery = function runQuery(db,query){ | |||
| return new Promise(function(resolve,reject){ | |||
| db.run(query,[],function(err){ | |||
| if(err){ | |||
| resolve({"STATUS":0,"DATA":err.message}) | |||
| } | |||
| else{ | |||
| resolve({"STATUS":1,"DATA":"Query Success Running"}) | |||
| } | |||
| }) | |||
| }) | |||
| } | |||
| module.exports.selectQuery = function selectQuery(db,query){ | |||
| return new Promise(function(resolve,reject){ | |||
| db.all(query,[],function(err,rows){ | |||
| if(err){ | |||
| resolve({"STATUS":0,"DATA":err.message}) | |||
| } | |||
| else{ | |||
| resolve({"STATUS":1,"DATA":rows}) | |||
| } | |||
| }) | |||
| }) | |||
| } | |||
| @@ -0,0 +1,7 @@ | |||
| var hbs = require('hbs'); | |||
| hbs.registerHelper('check_selected', function (value, options) { | |||
| if(options.fn(this).indexOf(value) >= 1){ | |||
| return `selected='selected'`; | |||
| } | |||
| }); | |||
| @@ -0,0 +1,74 @@ | |||
| <!-- purple x moss 2020 --> | |||
| <head> | |||
| <link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@600;900&display=swap" rel="stylesheet"> | |||
| <script src="https://kit.fontawesome.com/4b9ba14b0f.js" crossorigin="anonymous"></script> | |||
| </head> | |||
| <style type="text/css"> | |||
| body { | |||
| background-color: #95c2de; | |||
| } | |||
| .mainbox { | |||
| background-color: #95c2de; | |||
| margin: auto; | |||
| height: 600px; | |||
| width: 600px; | |||
| position: relative; | |||
| } | |||
| .err { | |||
| color: #ffffff; | |||
| font-family: 'Nunito Sans', sans-serif; | |||
| font-size: 11rem; | |||
| position:absolute; | |||
| left: 20%; | |||
| top: 8%; | |||
| } | |||
| .far { | |||
| position: absolute; | |||
| font-size: 8.5rem; | |||
| left: 42%; | |||
| top: 15%; | |||
| color: #ffffff; | |||
| } | |||
| .err2 { | |||
| color: #ffffff; | |||
| font-family: 'Nunito Sans', sans-serif; | |||
| font-size: 11rem; | |||
| position:absolute; | |||
| left: 68%; | |||
| top: 8%; | |||
| } | |||
| .msg { | |||
| text-align: center; | |||
| font-family: 'Nunito Sans', sans-serif; | |||
| font-size: 1.6rem; | |||
| position:absolute; | |||
| left: 16%; | |||
| top: 45%; | |||
| width: 75%; | |||
| } | |||
| a { | |||
| text-decoration: none; | |||
| color: white; | |||
| } | |||
| a:hover { | |||
| text-decoration: underline; | |||
| } | |||
| </style> | |||
| <body> | |||
| <div class="mainbox"> | |||
| <div class="err">4</div> | |||
| <i class="far fa-question-circle fa-spin"></i> | |||
| <div class="err2">4</div> | |||
| <div class="msg">Maybe this page moved? Got deleted? Is hiding out in quarantine? Never existed in the first place?</div> | |||
| </div> | |||