發表文章

目前顯示的是 6月, 2022的文章

T-SQL筆記33_設計一個user defined函數(UDF)來計算最大公因數

圖片
  由於近期協助撰寫設計 針對特定料號於特定庫別/儲位下所有箱號要進行 庫存異動連動跨DB Server的實體庫存擴充資料表 因此會遇到實體庫存每一箱庫存(先進先出) 最早入庫該箱要依時間排序進行 之後每一箱進行庫存異動迴圈遍歷扣庫存 固定扣除的庫存也就是每一箱庫存 我們取最大公因數 避免每次扣庫存固定周只扣1跑多回合迴圈遍歷次數 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 CREATE FUNCTION [dbo].[GET_MultiGCD] (@str VARCHAR ( max )) RETURNS INT AS BEGIN DECLARE @tb TABLE (i INT identity , spdata NVARCHAR ( max )) DECLARE @strt INT DECLARE @ end INT DECLARE @a INT DECLARE @b INT DECLARE @t INT DECLARE @cnt INT DECLARE @ind INT SELECT @strt = 1 , @ end = CHARINDEX ( ',' , @str) WHILE @strt < LEN (@str) + 1 BEGIN IF @ end = 0 SET @ end = LEN (@str) + 1 INSERT INTO @tb (spdata) VALUES ( SUBSTRING (@str, @strt, @ end - @strt)) SET @strt = @ end + 1 SET @ end = CHARINDEX ( ',' , @str, @strt) END SELECT @cnt = max (i) FROM @tb SELECT @a = convert

鼎新WorkFlow ERP GP_採購轉進貨單_何謂(原/本)幣未稅金額、(原/本)幣稅額、稅額計算方式?

圖片
  一個採購到進貨流程通常會經過IQC(Incoming Quality Control)意思是來料的品質控制,簡稱來料控制。 通常是一段採購單轉換成進貨單的過程。 而一般完全從採購單抄到進貨單欄位 不外乎就是品號、品名、單位與規格等採購品項資訊 進貨單的單頭(PURTG)單身(PURTH)可能 還需要可回朔是從哪張採購單(採購單別/單號),換言之,還要有能力 可以關聯回採購單的單頭與單身。 進貨數量(TH007) 欄位預設該採購單未交數量 (採購數量-已交數量)。 會發生在Q完後的欄位主要下面幾項 驗收日期(TH014):若進貨單別屬於直接確認且該品號為免檢件則「驗收日期」預設進貨日期,反之就在Q過時當下系統時間。 驗收數量(Th015):為檢驗合格的數量,驗退數量(TH017)=進貨數量(TH007)-驗收數量(TH015) 計價數量(Th016):用來計算付款金額的數量,預設給驗收數量(Th015),計價數量不可大於驗收數量。 進貨金額(TH019)=計價數量(TH016)×單位進價(TH018) 原幣進貨金額(TG017)=單身進貨金額(Th019)累加 數量合計(TG026):為單身驗收數量(Th015)累計。 原幣扣款金額(TH020):則比較偏向折讓的概念。 至於進貨單單身的 【原幣稅額】 與【本幣稅額】 稅額是如何計算出來的呢 主要是根據單頭的營業稅率(5%) 要看該供應廠商的稅額計算方式是 單身單筆計算 還是 整張計算 同一張進貨單都是同一供應商,單頭只有一個供應商欄位。 『廠商基本資料建立作業』的稅額計算方式【整張資料計算】,即稅額 以整張單據之金額計算稅額。 例如 :一進貨單,A料金額為111元,B料金額111元, 合計金額為 222元稅額,因為是整張計稅,所以以合計金額 222 *.05= 稅額 11元。 『廠商基本資料建立作業』的稅額計算方式【單身單筆資料計算】 即稅額以單筆金額計算稅額。 例如:一進貨單,A料金額為111元,B料金額111元,因為是單身單筆計算, 所以A料的稅額 = 111 * 0.05= 6 (5.5四捨五入=6) ,B料的稅額 = 111 * 0.05= 6 ,AB料合計稅額則為12元。

鼎新WorkFlow ERP GP_庫存模組單位的觀念_何謂庫存單位、換算單位、包裝單位?

圖片
  一間公司(中小企業或者大型企業) 通常都有自己的庫房、倉儲。 而【庫存單位】主要在盤點 跟 領用兩時機會顯得格外重要。 【換算單位】則是因應單價管理或進貨、銷貨額外衍生的概念(採購/銷售->採購單,訂單)。 單一單位制: 庫存單位一般是最小的單位 。 (Ex:香皂的 庫存單位為「PCS」 ,因應客戶銷售的需求延伸出盒裝每盒裝6 PCS / 打裝 12 PCS。) 而對於「打」與「盒」的換算必須在品號資料中去定義兩單位的換算率。 雙單位制: 配合買賣業的特性 ,一箱飲料 24 瓶,一般銷售及[庫存單位]均為[箱],但同時亦允許銷售[瓶],[瓶]屬於小單位,若銷售時 10.012 箱, 表示 10 箱 12 瓶,小單位與庫存單位只允許 1:999,超過的 換算率本系統暫時無法處理。 所以假設庫存期初有 100 箱  4/1 銷售了 10 箱 12 瓶,所以為 10.012 箱  4/10 銷售了 10 箱 12 瓶,所以為 10.012 箱  庫存餘額為 100.000 - 10.012 - 10.012 = 79 箱 製造雙單位: 同時兩個單位異動及查核之運用 。 盤點時為一種單位,領用時一種單位,例如:化工或食品業,盤點時單位為一桶,領用時單位為一公斤。 因應「製造雙單位」衍生出來的,需管控二個單位同時異動之數量,需設定包裝單位在換算 單位檔。例如:鋼板做庫存管理時須記錄庫存片數及公斤數,因此庫存單位設[片],包裝單位設成[公斤]。

關閉iis 錯誤頁面顯示詳細內容

圖片
  針對B2C的對外網站,通常建議不要顯示出detail error 因為會容易被有心人士(駭客)去分析破解 針對網頁詳細錯誤(路徑、檔案)去做其他可能後續衍生的攻擊。 除非是在離峰時段或者測試區有需要進行DEBUG才進行調整要開啟FOR 偵錯開發需求。 Ref: https://blog.hungwin.com.tw/iis-php-show-error-content/

Let’s Encrypt on IIS (use Certify SSL Manager)使用

圖片
  最近書局官網剛好 HTTPS 又到期 但 Let's Encrypt 卻沒有自動更新 = =||| 趕緊來將其刷新配置吧 終於又繼續下一ROUND的三個月了 Ref: Let’s Encrypt on IIS (use Certify SSL Manager) https://www.bob.tw/lets-encrypt-on-iis-use-certify-ssl-manager/ 使用 Let's Encryption SSL 為 IIS 導入 https ,並強制轉 http 至 https - Windows https://blog.xuite.net/tolarku/blog/584693076-%E4%BD%BF%E7%94%A8+Let%27s+Encryption+SSL+%E7%82%BA+IIS+%E5%B0%8E%E5%85%A5+https+%EF%BC%8C%E4%B8%A6%E5%BC%B7%E5%88%B6%E8%BD%89+http+%E8%87%B3+https+-+Windows# IIS - 自动申请、部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议) https://www.hangge.com/blog/cache/detail_1884.html

Illustrator 中選取網頁所需色碼

圖片
  檢色滴管工具選取完後 快點兩下 填色的預覽區域 就可看到 Color Hex code進行複製 之後就可能提出header的css class來達到全域性調整 Ref: Find the HEX Code of a Color in Illustrator https://www.youtube.com/watch?v=JZLZ7ldTLQc&ab_channel=THESHORTTUTORIAL

.NET非同步開發筆記(一)_Concurrent vs Parallel computing_執行緒_多執行緒與多工

圖片
  在程式開發實務上會想要將一段程式改為非同步 不外乎是為了提升整體執行效能又或者響應(回應)速度 (例如:使UI不會卡頓) Concurrent computing (台灣翻:並行 計算/大陸翻: 并发计算) ->只有一個處理器(單核心) 數個運算任務同時在特定時間區段內交替地完成,而非依序運行。 通常生活常見可能類似一人多工的感覺 比方一個人負責彈奏2~3種樂器 一個人負責操作兩至三台機台設備 20~30年前早期電腦底層運算就是此模式) 而如今電腦都是多核心了 例如:NodeJs本身單Thread的就一定屬於並行運算 Parallel computing (台灣翻: 平行計算/大陸翻: 并行计算 ) ->可能有不只一個處理器(多核心)(效能相對會較高) 許多運算過程會同時發生 通常就軟體層面我們絕大部分就非同步層面開發 是針對「並行計算」的運算架構在進行設計思考與改善,而不會在意平行計算的範疇。 只要先就單個CPU的程式效能改善做好設計,剩下平行的範疇就通通交給作業系統。 大多數軟體開發人員只需要就並行計算做好設計即可,少數情境才需要就平行計算層面做思考和實踐。 所以通常在C#程式中非同步(Asynchronous programming) 大部分是一種Concurrent處理模式(輪流交替地work) 當啟動一非同步任務(背後類似起另一Thread做處理)後將會立即返回至呼叫端 非同步工作必須提出一承諾,告訴未來的狀態與結果。 常見會需要非同步的情境會分 1. I/O Bound 比方呼叫API、存取DB、檔案讀寫、從網路上取一份資料 因為I/O存取過程會導致CPU閒置,使CPU資源會被浪費。 通常可多採用await做等待非同步執行。 2.CPU Bound 比方圖片轉換處理、大數據計算 若程式可能需要進行大量繁重CPU運算,會導致應用程式會處於長期無法回應的狀態。 這類型應用較建議採TPL實作非同步。 備註:ADO.NET寫TSQL方式(I/O Bound)/EF ORM方式(偏向CPU Bound) 同步跟非同步觀念: 一個普通的方法(沒加上async修飾的),通常默認就是同步方法是需要排隊等待依序執行的。 再加上async修飾後則代表我將此方法更改為非同步(異步)方法 此時大部分在撰寫程式時候async 跟await還是感覺跟同步沒捨麼兩樣

T-SQL筆記32_Trigger觸發_獲取異動前後欄位值

圖片
  一個實驗範例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 CREATE TABLE TestColumns ( Column_1 INT PRIMARY KEY , Column_2 INT , Column_3 INT , Column_4 INT ) GO INSERT INTO dbo . TestColumns ( Column_1 , Column_2 , Column_3 , Column_4 ) VALUES ( 0 , 0 , 0 , 0 ) GO CREATE TRIGGER TR_TestColumns ON dbo . TestColumns AFTER UPDATE AS IF UPDATE ( Column_1 ) BEGIN ; THROW 51000 , 'You can''t update the primary key' , 1 ; END IF UPDATE ( Column_2 ) BEGIN DECLARE @ Col2_Before int ; DECLARE @ Col2_After int ; select @ Col2_Before = Column_2 from deleted select @ Col2_After = Column_2 from inserted PRINT 'Column_2 was updated' PRINT 'before column val:' + CAST ( @ Col2_Before as varchar ( 10 )) PRINT 'alter column val:' + CAST ( @ Col2_After as varch

Error: System.InvalidOperationException: The current thread is not associated with the Dispatcher. Use InvokeAsync() to switch execution to the Dispatcher when triggering rendering or component state.

圖片
  [2022-06-13T09:10:08.300Z] Error: System.InvalidOperationException: The current thread is not associated with the Dispatcher. Use InvokeAsync() to switch execution to the Dispatcher when triggering rendering or component state.    at Microsoft.AspNetCore.Components.Dispatcher.AssertAccess()    at Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToRenderQueue(Int32 componentId, RenderFragment renderFragment)    at Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged()    at Microsoft.AspNetCore.Components.ComponentBase.Microsoft.AspNetCore.Components.IHandleEvent.HandleEventAsync(EventCallbackWorkItem callback, Object arg)    at BlazorBarcodeScanner.ZXing.JS.BarcodeReader.ReceivedBarcodeText(BarcodeReceivedEventArgs args)    at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__139_0(Object state)    at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.ExecuteSynchronously(TaskCompletionSource`1 completion, SendOrPostCallback d, Object st

使用Blogger內嵌程式碼方式

圖片
  使用Blogger內嵌程式碼方式 http://hilite.me 這是我要內崁的C#程式碼 Code 區塊 1 2 3 4 5 6 7 8 9 10 11 12 using System ; namespace HelloWorld { class Program { static void Main ( string [] args) { Console.WriteLine( "Hello World!" ); } } }

如何透過爬蟲撰寫不需要付費版本的google map geolocation api來實踐地址轉經緯度_C#如何透過經緯度計算距離

圖片
  由於遇到 中文地址 想轉換成 經緯度 的情境 好利於顯示在GMapControl上 再加上要達到一個距離公車站附近(經緯度距離差約在50~1000公尺以內)的推薦診所 但是又不想要綁Google付費的API 這裡就順帶寫一個透過爬蟲方式程式自動開網頁查地址後經緯度的結果 在交通運輸的公開資料API上 https://ptx.transportdata.tw/MOTC/?urls.primaryName=%E5%85%AC%E8%BB%8AV2#/CityBus/CityBusApi_StationGroup_2050 目前有提供的縣市為 花蓮縣HualienCounty https://ptx.transportdata.tw/MOTC/v2/Bus/StationGroup/City/HualienCounty 彰化縣ChanghuaCounty https://ptx.transportdata.tw/MOTC/v2/Bus/StationGroup/City/ChanghuaCounty 新竹市Hsinchu https://ptx.transportdata.tw/MOTC/v2/Bus/StationGroup/City/Hsinchu 新竹縣HsinchuCounty https://ptx.transportdata.tw/MOTC/v2/Bus/StationGroup/City/HualienCounty 苗栗縣MiaoliCounty https://ptx.transportdata.tw/MOTC/v2/Bus/StationGroup/City/MiaoliCounty 南投縣NantouCounty https://ptx.transportdata.tw/MOTC/v2/Bus/StationGroup/City/NantouCounty 雲林縣YunlinCounty 嘉義縣ChiayiCounty 嘉義市Chiayi 屏東縣PingtungCounty 台東縣TaitungCounty 基隆市Keelung 宜蘭縣YilanCounty 澎湖縣PenghuCounty 返回資料 會包含公車站的經緯度 (備註:台灣的絕對位置 東經120度至122度,北緯22度至25度。) 但在疫苗施打診所部分 經緯度資訊卻沒提供 只有提供院所