2011年8月13日 星期六

@CASE 1.1 < 原物料需求計算 > ver-110814

'應該加入物料號篩選自己用


'之前玩Parallel.for
忽略掉排序問題,已修正

'需要注意遺下
MRP EXCEL 格式問題
因為一開始沒有直接存 xls
而是先txt
後來開檔寫入格式後,存檔讓使用者自訂的話
預設格式還是txt

'拿掉報表列印
(crystal Report 轉 excel 可以查查看)
看能不能再報表上面轉excel

=================================

'可能需要改直接建立 xls 不透過 txt
直接開檔
讓使用者決定存檔名稱與位置



幹決定了
做一個table
可以踢掉不想看的製令
然後才下去搜尋

'再來就是資料上的問題了
維護資料ERP 跟 DOS資料正確性

可能可以檢查,DOS,ERP BOM表上
兩邊資料正確性
========================================
'檢查BOM表製程
基數與使用數是否不相符

只看調和部分
可能會需要寫一隻工具程式去檢查


select p.partnum, c.cardnum, p.pdtversion, p.pdtkey, p.prockey
from (select sum(a.partnum) as partnum, a.pdtversion, a.pdtkey, a.prockey from tblbompart a join
( tblbomproc b join tblbompdt d on b.pdtversion = d.pdtversion and b.pdtkey = d.pdtkey
)
on a.pdtversion = b.pdtversion and a.pdtkey = b.pdtkey and a.prockey = b.prockey
 where d.isnotvalid = 0 and d.aprvdate not like 'NULL'
group by  a.pdtversion, a.pdtkey, a.prockey ) as p join
 tblbompart  c
on c.pdtversion = p.pdtversion and c.pdtkey = p.pdtkey and c.prockey = p.prockey
where p.partnum*1000 <> c.cardnum and c.partcode not like 'U%' and c.partcode not like 'Q%'
 and c.partcode not like 'R%'  and c.partcode not like 'O%'


select * from tblbompart where pdtversion = 1 and pdtkey = 865 and prockey = 2954


=================================
再來就看BOM表是不是有問題

或是說有些東西更新
DOS還沒更新

'可能會需要說去考慮公斤 公克的轉換
(基數會多三個0)
好像又不用一 一
==================================
目前看是說
網子套片之類的
因為在 製令生產數 先作千分之八的計算
後面跑出來就不會有小數點

但調和部分還是有小數點上的差距
(累積起來可能就會到整數)

1. 計算製程時,就去計算耗損率(floor)
2. 計算 Part 使用數/基數,(floor)

呈現資料包含小數點
轉檔列印四捨五入
===================================
'計算上的數字與舊系統有點出入

要看一下是不是千分之八的問題

大概知道是取四捨五入的時候
應該計算到最後的數字再開始取

似乎舊系統是在最後的時候
才把數字去加上八趴
但是有一些東西還是有點出入



'從單一制令著手
去檢查城市跑得跟計算的是差多少
可能原因在哪

不知道....
======================================
'每次覆蓋MCST

'增加列印日期時間

'改表格方式呈現資料

'去掉小數點

'把商標部分拉回來
=====================================
@因為透過舊料號去找新料號
會有商標的問題
1.先找 ----XF 無商標的表準製程序
2.如果 ----XF 找不到(舊料號應該一定8碼)
 舊料號會有商標資訊,去抓該商標的XF
3. 如果是第七碼 X, B的區別
    如果抓到兩種以上, 先踢掉 B
    讓X得進去跑(中間再用B替換找)
4. 如果不是第七碼(應該有一個是停用的)
    兩個都抓(跑BOM的時候會判斷哪個被停用)
    (跑BOM會多 + 1個產品)
5.所以製程有多少產品,跑BOM就有多少產品

=======================================
'所有case 介面設定 希望能夠符合1024X768
目前很怪

'要找最新版本 pdt

'發現說會有一些東西可能是還沒確認,但是也不是停用狀態的
變成會撈不到再製品
將這部分列為資料異常
反推回去找舊料號顯示
(新料,舊料,品名,原因)

'生產的再製品到成品間的差異
只會有商標的差別 (商標都交給選配)
其中的製程材料耗用是一樣的
所以抓完前7碼
判斷X,B
+ ____XF
(if ----XF 找不到
 走 ____XF)
去走BOM

所以BOM只會走一次 (已經是XF)


'又是第7碼,需要下判斷說如果擷取的前7碼,末碼是 X或是B
去檢查訂單上面的兩種有沒有存在
(有 X 一定有B, 有B不一定有 X)

"select PartCode, " & tblheadPCode.Rows.Item(i).Item("Qty").ToString & " AS Qty " & _
                "from tblorderdet " & _
                "where orderno like '" & tblheadPCode.Rows.Item(i).Item("HeadOrderNo").trim() & "' " & _
                "and partcode like '" & tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString & "%' " & IIf(tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString.ElementAt(6) = "X", "and partcode like '" & Replace(tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString, tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString.ElementAt(6), "B") & "%'", "") _
                 & IIf(tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString.ElementAt(6) = "B", "and partcode like '" & Replace(tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString, tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString.ElementAt(6), "X") & "%'", "")



'似乎有異常資料沒被抓出來
撈前面7碼的SQL 應該修改遺下
讓他能夠辨別異常資料

做法是透過新增的資料去判斷該筆前7碼是不是有抓到完整的7碼資料
不是就屬於異常
================================================
庫存 {  //所有可能的前7碼 (有可能多種 第七碼 B,X 是否已確定?)
    // B,X 挑一個抓,後面都一樣,先抓MAX(PartCode) -> 撈一個料號
   // 判斷mcst PartCode有空值的,剔除

SELECT substring(max(partcode),1,7)) as headPartCode
 FROM tblStock sto WHERE sto.PartRule LIKE '%@[2624@]' ESCAPE '@'
}

跳過...
還是沒辦法跳過

訂單{ // 看訂單訂購的是哪個,去對前7碼) 抓到要的產品(包裝後)

select b.*
from tblorder a join tblorderdet b on a.orderno = b.orderno
where a.orderno like 'TAU2960%' and (partcode like '200614B%' or partcode like '200614X%')

}

透過產品去撈包裝前的再製品(包裝前) partCode {

select * from tblbompdt
where pdtcode LIKE '200614X____' and  pdtcode not LIKE '%XX' and  pdtcode not LIKE '%EX'
and  aprvdate not like 'null' and isnotvalid = 0

}



走兩次 Pdt, Proc, Part
1.包裝後XX 去撈 包裝前 XF 
2. 包裝前XF  之下所有製程


產品 {  // 去抓Aprv過,非停用的產品   pdtkey,pdtversion
        //  (會包含XP包裝(原料是XF,所以可能要踢掉XX的),XF所有製程)
   // 要踢掉的應該不只XX,EX(完成品,沖孔) , 要留HX(HUB 包裝要鎖螺絲)

select * from tblbompdt
where pdtcode LIKE '200614X____' and  pdtcode not LIKE '%XX' and  pdtcode not LIKE '%EX'
and  aprvdate not like 'null' and isnotvalid = 0
}

製程 { // 計算PrcoNum , CardNum , 撈出 ProcKey
select * from tblbomproc
where pdtkey = 10747 and pdtversion = 1 
}

原物料 {   // XF製程下所有原物料
select * from tblbompart
where
pdtkey = 10746 and pdtversion = 1 and prockey between 28524 and 28528
AND part.PartCode1 NOT LIKE 'NFFILLER' AND part.PartCode1 NOT LIKE 'U%'
}

沒有留言:

張貼留言