@@ -10,6 +10,9 @@ lerna-debug.log* | |||||
# Diagnostic reports (https://nodejs.org/api/report.html) | # Diagnostic reports (https://nodejs.org/api/report.html) | ||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | ||||
#public db file | |||||
public/sqlite | |||||
# Runtime data | # Runtime data | ||||
pids | pids | ||||
*.pid | *.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> |