@@ -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> |