2023年7月10日 星期一

[LotusScript] 檢核資料庫ACL群組

 Sample Code:


Sub SetGroupPermissions()
    Dim session As New NotesSession
    Dim serverName As String
    Dim dbDirectory As NotesDbDirectory
    Dim database As NotesDatabase
    Dim acl As NotesACL
    Dim entry As NotesACLEntry
    
    serverName = session.CurrentDatabase.Server ' 取得目前伺服器名稱
    
    ' 開啟資料庫目錄
    Set dbDirectory = session.GetDbDirectory(serverName)
    
    ' 處理所有資料庫
    Set database = dbDirectory.GetFirstDatabase(DATABASE)
    While Not database Is Nothing
        ' 開啟 ACL
        Set acl = database.ACL
        
        ' 檢查群組是否已存在於 ACL 中
        Set entry = acl.GetEntry("DeclineAccess", True)
        If entry Is Nothing Then
            ' 如果群組不存在,創建一個新的 ACL設定
            Set entry = acl.CreateACLEntry("DeclineAccess", ACLLEVEL_NOACCESS)
        Else
            ' 如果群組已存在,設定權限級別為無權限
            Call entry.SetLevel(ACLLEVEL_NOACCESS)
        End If
        
        ' 將群組類型設為個人群組
        entry.IsPersonGroup = True        
        
        ' 更新 ACL
        Call acl.Save()
        
        ' 取得下一個資料庫
        Set database = dbDirectory.GetNextDatabase
    Wend
    
    MsgBox "群組權限設定完成。"
End Sub

2023年5月22日 星期一

[AP] 修改欄位 (formula)

@If(@IsNotMember(@UserRoles; "[DataMgr]");@Return("");@Success);

FieldName :=@Prompt([OkCancelEdit]; "Field Name";"Please enter the Field Name you want to modify..."; @Success);

FieldValue :=@Prompt([OkCancelEdit]; "Field Value";"Please enter the Field Value(use ; to separate multiple values)"; @Success);

@SetField(FieldName; @Explode(Value; ";"));

Select @All

2018年5月18日 星期五

[AP] Function AddString()


xdoc.Log_EH= AddString(xdoc, "執行Agent[.資料修正\彈性假異動] " + Server_Time() +" by "+s.UserNameList(0).Abbreviated, "Log_EH")


Function AddString(doc As NotesDocument, strContent As String, itemName As String) As Variant
REM This program append the strContent into Field as the next attrib with Name as itemName
 Dim i As Integer, ub As Integer
 Dim NIT As NotesItem
 ub = Ubound(doc.GetItemValue(itemName))
 Redim tmp(ub+1) As String
 If Ubound(doc.GetItemValue(itemName))=0 And doc.GetItemValue(itemName)(0)= "" Then
  ub = ub - 1
 End If
 For i = 0 To ub
  tmp(i)=doc.GetItemValue(itemName)(i)
 Next
 i = ub +1
 tmp(i) = strContent
 Set NIT = doc.ReplaceItemValue( itemName, Fulltrim(tmp) )
 AddString = Fulltrim(tmp)
End Function

2016年6月28日 星期二

[Oracle Query] 日期格式用法

CASE 
           WHEN TO_CHAR(WDJ.DATE_RELEASED, 'DD') BETWEEN '01' AND '10' THEN '上'
           WHEN TO_CHAR(WDJ.DATE_RELEASED, 'DD') BETWEEN '11' AND '20' THEN '中'
           ELSE '下'
END AS "MONTH",

WDJ.DATE_RELEASED +1 AS "ADD A DAY", --當下日期+1

TRUNC(WDJ.DATE_RELEASED) AS "TRUNC", --把時分秒拿掉

TO_DATE(WDJ.DATE_RELEASED) AS "TO_DATE", --取當下日期

EXTRACT(YEAR FROM WDJ.DATE_RELEASED) AS "EXTRACT", --取年

LAST_DAY(WDJ.DATE_RELEASED) AS "LAST_DAY", --當月最後一天

ADD_MONTHS(WDJ.DATE_RELEASED,1) AS "NEXT MONTH",  --下個月

LAST_DAY(ADD_MONTHS(WDJ.DATE_RELEASED, -1)) AS "END OF LAST MONTH",  --找出前一個月的最後一天

[ERP] ERP文件的常用寫法

//ERP文件的常用寫法
(R)Work in Process → (N)Discrete → (N)Discrete Jobs → (B) Components
//彈性欄位DFF

(R) Responsibility
(N) Navigator
(B) Button
(Tab) 頁籤
(DFF) [...]彈性欄位

2016年6月16日 星期四

[oracle erp] INV exam

題目一:
  1. 請依第一頁結構圖利用套用 Template 的方式建立料號 ITEM-A, ITEM-B, ITEM-C, ITEM-D, ITEM-E, ITEM-F, ITEM-G assign to TYO Org,並使用SQL語法抓取 TYO Org料號資料,需有以下欄位: Organization_Id, Organization_Code, Inventory_item_id, Item, Item_Description, Primary_UOM, Item_Type, Item_Status, Make_or_Buy, Supply_Type, Include_in_Rollup (25%)
  • 作答方式: 請將 SQL 語法及 SQL結果貼上。
select
mtl.inventory_item_id as Inventory_item_id,
mtl.segment1 as item,
mtl.description as item_Description,
mtl.primary_unit_of_measure as Primary_UOM,
mtl.item_type as Item_Type,
mtl.inventory_item_status_code as Item_Status,
msi.PLANNING_MAKE_BUY_CODE as Make_or_Buy,
msi.WIP_SUPPLY_TYPE as SUPPLY_TYPE,
msi.DEFAULT_INCLUDE_IN_ROLLUP_FLAG as Include_in_Rollup
from MTL_SYSTEM_ITEMS_B MTL, fnd_user MAN, MTL_SYSTEM_ITEMS_FVL MSI
where MTL.created_by = MAN.user_id
and MAN.user_name = 'Y16019'
and mtl.inventory_item_id = msi.INVENTORY_ITEM_ID


題目二:請於TYO Org建立以下資訊:(25%)
  1. 建立倉別 SUB-A 儲位 SUB-A-1
  2. 設定料號單位轉換 ITEM-D 100pcs=1box
  3. 於倉別 SUB-A 儲位 SUB-A-1雜收 ITEM-A, ITEM-B, ITEM-C, ITEM-D, ITEM-E, ITEM-F, ITEM-G 1000
  4. 於倉別 SUB-A 儲位 SUB-A-1 ITEM-D 轉倉至 TYO-MR1 儲位A101 1box,請使用 box 為交易單位
  • 作答方式: 請將料號 ITEM-D Material Transaction Onhand Quantity 畫面貼上。

題目三:
請使用SQL語法,抓取第2題的在 SUB-A倉所有料號彙總庫存,需有以下欄位: Organization_Code, Item, Item_Description, Item_Revision, Subinventory, Locator, Onhand_Qty (25%)
  • 作答方式: 請將 SQL 語法貼上
select Organization_Code,
Item,
Item_Description,
Revision,
Subinventory_code,
Locator,
On_hand
FROM MTL_ONHAND_TOTAL_MWB_V
WHERE 1=1
AND locator_id = '17274'
AND subinventory_code = 'SUB-A2-19'
AND organization_id = '96'

題目四:
請使用 SQL 語法,抓取第2題所發生的交易,以及各交易對應的Account Distributions。需有以下欄位: Organization_code, Item, Revision, Subinventory, Locator, Transfer_Org, Transfer_Subinventory, Transfer_Locator, Primary_Qty, Transaction_Date, Transaction_Type (25%)
  • 作答方式: 請將 SQL 語法及結果貼上

SELECT MTRA.ORGANIZATION_ID,
MTRA.REVISION,
mtl.segment1,
MTRA.SUBINVENTORY_CODE,
MTRA.LOCATOR_ID,
MTRA.TRANSFER_ORGANIZATION_ID,
MTRA.TRANSFER_SUBINVENTORY,
MTRA.TRANSFER_LOCATOR_ID,
MTRA.PRIMARY_QUANTITY,
MTRA.TRANSACTION_DATE,
MTRA.TRANSACTION_TYPE_ID
FROM MTL_MATERIAL_TRANSACTIONS MTRA, MTL_SYSTEM_ITEMS_B MTL, fnd_user MAN
WHERE MTRA.TRANSACTION_ACTION_ID NOT IN (24,30) and (( MTRA.ORGANIZATION_ID = 96 )
and ( MTRA.transaction_date between to_date('15-06-2016 00:00:00','DD-MM-YYYY HH24:MI:SS') AND to_date('16-06-2016 23:59:59','DD-MM-YYYY HH24:MI:SS') )
and (MTRA.LOGICAL_TRANSACTION=2 OR MTRA.LOGICAL_TRANSACTION IS NULL ))
and MTL.inventory_item_id = MTRA.Inventory_Item_Id
and MTL.created_by = MAN.user_id
and MAN.user_name = 'Y16019'
order by MTRA.TRANSACTION_DATE DESC, MTRA.TRANSACTION_ID DESC, MTRA.SUBINVENTORY_CODE DESC

2016年6月13日 星期一

[Oracle ERP] 01 通識課程_Oracle ERP帳本/OU/Org架構介紹_20160603

01 通識課程_Oracle ERP帳本/OU/Org架構介紹_20160603

multi-org
Legal Entity公司法人
安全/採構/銷售/報表

Types of Organiations
-business group 企業團體
-(營運中心)Operation Unit> 業務訂單(OM/ONT), 採購訂單(OR)
 △e.g. a地下單,b地收料  or a地生產,b地出貨,就需要透過OU此部份來處理
//親兄弟明算帳
  業務訂單OM  採購訂單PO 應收帳款AR 應付帳款AP

Item Master Organiations 虛擬料號父階組織
Inventory Org庫存組織(庫存 物料)
//生產 製造

權限劃分responsibility, 
HR: businesss group
MO: operating uit

SO訂單>planning >po > AP
INV WIP
FA固定資產
GL 
FA總表
GV統一發票(資通)
BOM用料組成
 e.g. G排+料+油+紙袋+包材
步驟稱routing
rounting有個重要的東西叫dept. (A到B的過程 要設定哪個單位去做這個事)
幾個a或幾個B 稱數量


費用是成本裡的一項
成本(料、工、費)
費用(銷、管、研)
一個人有可能有多個帳號
一個帳號只能綁一個high run key

ctrl+L //查詢輸入關鍵單字

businesss group> set of books> Legal entitiy> OU

site: 整套
模組
responsilbility: 
切權限要放在OU level
byuer一定要在erp裡要建
F11進入查詢模式
F4 取消離開查詢模式
只要有統編的就是一個OU

多組織架構 指的是 Oracle 支援 公司可以擁有多個 OU 的意思
也就是說 Oracle支援 合併申報的意思
請先把一切focus 在ou上面
然後 因為你接的是 Oracle三大模組中的製造 ( 另外兩個是 財務 與配銷 )
製造 基本上 是 跟著Inv-Org 在活動的

採用多組織架構應考量:
1. 兩地稅制不同
2. 因應事業部的不同 有分開報稅的必要性


使用特定會計科目表、幣別及會計日曆的財務報告單位。如果三種要素中有一個不同, 就必須建立不同的帳本

●profile option 的設定
在Profile的設定上 有四個層級
分別是
01. Site
02. Application
03. Responsibility 
04. User
也就是說 這個Profile的設定分別會影響到 以上四個層級中的其中之一

有上下階層概念
01. Site→ 代表整個ERP系統
02. Application → 代表 單一模組 (ap , ar , inv, po , 等類似 )
03. Responsibility → 代表某一權限 (權限就是 代表可以使用到哪一種功能)
04. User → 使用者

e.g.
假設 你家是一個Business Group
兩個 OU ( OU-1 , OU-2 )
然後 有 兩個權限
分別是 AR - 001 , AR-002
而 AR-001 指定給 A- User
AR-002 指定給 B-User
而 A-User 是 屬於  OU-1 的 財務人員
所以 在設定MO: operating Unit
此一profile 是在控制 可以去access  哪一個ou
現在 設定 Responsibility AR-001 只能Access OU-1 的資料
就要在 MO ; Operatiing Unit 中的 Responsibility Level 設定 OU-1
profile option 的設定, 限制不同組織資料的維護及讀取

oracle qas link:http://yoerp01.youngoptics.com:8010/dev60cgi/f60cgi?colorScheme=purple