楊玉燕 廣東煙草梅州市有限公司
RPA,通過計算機對業務過程的模擬操作,實現自動化處理。財務是企業的數據集成中心,接收業務數據并將數據加工生成所需要的信息,集合了采購、銷售、各部門報銷等業務的數據,而這個過程有些是重復操作的工作,可以使用RPA實現自動化處理。python是一門易上手的計算機語言,它提供了各種庫的支持,包括pyautogui,selenium等庫都可以用于模擬工作流程,pandas和一些可視化庫是數據分析的一個利器。在處理財務工作中利用python設計財務RPA,通過程序對財務工作的模擬,實現財務的自動化,提高財務工作效率和準確性。
設計財務RPA,讓計算機模擬操作,利用python編寫代碼,需要先了解可能用到的python庫或工具,之后按照步驟確定目標、設計流程編寫代碼、準備數據、進行模擬操作測試,后續如果相關數據格式有變動,及時更新程序。
python可以看成是圖書館,圖書館里收藏很多的書籍,而python的庫就像圖書館里的一本本藏書,需要什么知識,就查找相應的庫。
1. pandas
對于財務RPA,pandas是必須用到的庫,對表格熟悉的話,pandas就很容易理解。pandas是python數據處理的利器,數據處理是財務RPA中最重要的一個環節,pandas提供了高級數據結構和函數,這些數據結構和函數的設計使得利用結構化、表格化數據的工作快速、簡單。[1]財務RPA中用到的功能主要有:①讀取數據:通過pandas的DataFrame對象,將讀取的數據應用于操作界面。②數據處理:pandas提供各種函數對數據高效處理,對獲取的數據進行數據清洗、數據分析等。
2. selenium
selenium是用于Web應用程序測試的工具,利用相應的瀏覽器驅動器,驅動瀏覽器運行,就像真實用戶操作的一樣。主要功能是模仿用戶操作網頁,財務RPA可以利用輸入數據、查詢、下載或抓取頁面中一些關鍵的要素。
3.pyautogui
pyautogui是模擬鍵盤、鼠標在相應的頁面位置進行操作,比如輸入、移動、單擊、雙擊等。將整個屏幕作為一個坐標系,原點位于屏幕的左上角,坐標(x,y)中x是從左上角往右延伸的距離,y是從左上角往下延伸的距離,利用pyautogui的函數對屏幕中的坐標(x,y)進行相應的指令操作。pyautogui對于數據量大、操作固定的流程,是一個高效處理的辦法,而且其函數簡單易懂。pyautogui的使用就是基礎的RPA,解放雙手。
4. tkinter
tkinter提供程序窗口主界面的設計,主界面可以包含標簽、按鈕及彈出框等組件,通過這些組件將多個需求操作顯示在RPA窗口主界面上,或者接收需要輸入的關鍵數據,讓RPA更容易操作。
5.圖像文字識別OCR
圖像文字識別OCR,用于提取圖像上的文字信息。OCR的原理可以簡單理解為圖像上顏色值的計算結果與實際文字的映射。如果是小程序RPA,可以利用Tesseract-OCR,它是開源的OCR引擎,提供大量的映射集合,對于清晰度高、印刷字體的圖像,準確率很高。
1.確定目標
從日常財務工作入手,哪些業務模塊是屬于比較機械式的操作,是否可以將其流程標準化,運用程序操作。在分析其采用程序操作的可行性過程中,要查看分別有哪些python庫可以解決操作中遇到的問題,直到確定所有問題都能解決。確定目標,主要是對其流程運用RPA的可行性分析。
2.設計流程
針對要實現的目標,列出平時的工作流程,如果采用RPA,相應的流程是否和人工操作一模一樣,哪些環節的操作是否需要一些額外的判斷、條件,或者需要做流程上的改進。把流程中每個步驟里的工作細化羅列出來,要用到python的哪些庫,哪些函數可以實現相應的需求,在相應的庫官方文檔都能找到函數應用的方式。理好全部邏輯關系,把框架定下來,再把羅列的細化過程用python代碼表達出來。
3.準備前期數據
財務工作是接收業務數據并將數據加工生成所需要的信息,從接收的數據中提取出前期數據,比如采購入庫單的采購單據號,銷售開票的客戶名稱。RPA每次運行時,需要保持這些數據的格式統一,確保pandas每次讀取數據都是準確的。
4.進行模擬測試
測試時需要查看python代碼運行結果的準確性。接著把各種可能遇到的情況都讓程序再跑一遍,根據結果的準確性確定是否對需要對前面設計流程做相應的修改,邏輯關系有沒有不符的地方,完善程序,主要為了以防后面遇到出現處理數據不完善或遺漏的情況。盡量把迄今為止遇到的情況及未來能預測到的情況都能包容在內,也可以避免對程序做多次修改。所有測試能順利運行后,那么這個RPA便完成了。
5.更新程序
程序完成后,如果與RPA相關的數據或系統更新了,那么后續需要對代碼進行相應的更新,當然,選擇設計RPA是因為其流程相對固定,如果經常變動,那么設計這個RPA就沒有意義了。所以后續的更新也是因為內部系統更新,或外部系統獲取的數據格式的變動等系統性原因引起的,變動次數是比較低的。
以下通過財務工作中的采購入庫、銷售對賬、銷售開票及費用報銷等環節的案例,介紹如何將財務流程與計算機語言python結合,設計相應的RPA,實現財務自動化。
采購流程中,入庫單的處理都是重復的工作,目標:實現采購入庫自動化;采購入庫處理的流程相對固定,先在入庫初始頁面輸入相關信息,輸入的信息可以運用pandas讀取,其他操作主要都是在系統固定幾個頁面,根據步驟使用鍵盤鼠標的操作,pyautogui就派上用場了。目標和流程都確定了。需要準備的數據:入庫單的單據號碼或者發票號碼等。這個RPA比較簡單,只需按部就班,采用pyautogui的函數一步步編寫指令。測試時運行過程流暢,能完整操作完入庫的整個流程,RPA就完成了。后續除更換財務系統外,采購入庫RPA基本不變。
1.目標
實現客戶銷售數據與收款數據核對。
2.設計流程
主要為三大塊,(1)輸入數據塊,包括外部獲取數據和內部獲取數據,其中內部數據包含應收款和銷售系統數據。應收款項是輸入的數據之一,也是輸出的結果之一,每天的對賬處理會讀取前一天的往來款項。銷售系統數據可以利用selenium從銷售系統自動下載下來。包括銷售明細表,統計表,客戶明細表,多個表格為后續驗證數據的準確性準備。(2)對賬過程即數據處理塊,需要先把對賬規則梳理出來,利用訂單編號、客戶信息、交易時間等作為對賬的依據,讓外部數據和內部數據進行對碰。主要用到pandas。(3)對賬的分析結果即輸出塊。輸出結果包含核對結果清單及應收款賬。應收款項也作為第二天輸入數據塊中一部分。對于核對不一致的結果清單,要設計成能一目了然看清問題在哪。這塊主要利用pandas。
3.準備前期數據
需要準備外部獲取的數據如銀行對賬單,微信或者支付寶收款明細等。
4.進行模擬測試
對賬RPA中要注意的是日期對其影響比較大,測試的期間要以一段時間為準,最好能把包含節假日的前后一段期間、月底到月初跨月期間、年底到年初跨年的這幾天都做個測試。若對賬的結果與人工對賬結果吻合,說明對賬RPA完成。
5.更新程序
如果銀行等外部數據格式有變動或者銷售系統導出的數據格式有變動,需要更新相應的代碼。
運用銷售對賬RPA對賬,整個流程人工只需準備銀行對賬單等外部對賬數據,以及對后續結果的分析。人工操作中最慢的就是如果不一致,怎么去找出不一致的部分。程序對這塊處理的速度會快很多。節省了查找不一致部分的時間,有更多的時間去分析結果解決問題,提升了工作效率。
1.目標
批量處理銷售數據并生成符合稅務開票軟件要求的數據。
2.設計流程
銷售開票流程主要有兩塊,(1)導出數據,批量導出所有開票客戶的數據,利用pandas讀取數據到銷售系統頁面上,利用selenium網頁操作下載數據。(2)處理數據。處理數據時需要解決3個問題:對銷售系統客戶名稱和它的開票信息不一致的情況,進行修改;根據客戶的要求整理銷售表格,比如總分公司、總分店是否合并開票;生成格式符合稅務開票系統要求的文件。利用pandas解決上述3個問題。
3.準備前期數據
準備好需開票客戶的表格,比如客戶的編號,客戶的名稱。根據企業的銷售系統確定。
核對客戶開票信息,查看是否需要有銷售系統與客戶開票信息名稱不一致的情況,整理客戶開票要求。這些都是偶爾變動,只需進行核對和增減變動,有變動修改一下。相關表格可類似于表1和表2。

表1 修正客戶名稱表

表2 總分公司、總分店客戶開票要求統計表
以后新增的客戶有類似的要求,或者原來的客戶變更不同的要求,修改相應的表格。
4.程序測試
讀取前期準備的表格,運行程序后查看最后的生成的數據:數據結果處理是否準確性,客戶開票名稱修正是否完整,總分機構的開票是否符合要求,生成的數據導入稅局系統是否完全接收。這些結果都需要檢查。全都符合才算完成對賬RPA。
5.更新程序
如果銷售系統有升級導致導出的數據格式有變動,需要更新相應的代碼。
人工處理這個業務至少都要半天的時間,利用銷售開票RPA,十幾分鐘就能做完數據處理,只需把前期相關的客戶表格整理工作做好,提升了工作效率,提高了數據處理的準確率。
報銷業務中,選擇通行費發票處理做案例。通行費的發票處理是個耗時的操作。通行費現在大部分是電子發票,在票根網上開票、下載,然后電子歸檔。后續對于通行費進項發票的抵扣,也需要用到發票的相關信息,手工一個個輸入這些發票號碼,相當煩瑣。但其處理都是比較機械式的操作,流程很容易標準化。
1.目標
實現通行費發票的自動化處理。
2.設計流程
主要是三大塊,一是開具發票,二是下載發票,三是進行發票識別、核對數據,錄入發票信息。其中開具發票和下載發票操作是大同小異的,可以利用pandas讀取數據到票根網相應的頁面上,然后用selenium進行網頁模擬操作,因為開具發票和下載發票是先后的關系,開具發票24小時后再來下載發票才能確保所有發票都已開具。因此可以利用tkinter設置程序主界面,在RPA運行前進行需求選擇。發票識別運用tesseract-OCR,獲取發票上的相關信息并儲存。等發票全部識別完利用pandas匯總,核對結果。
3.準備數據
需要準備的表格有兩個,包括每月運行清單表格和車輛車牌號與其對應的扣款卡號表格。
通行費發票處理RPA對后續工作將帶來很大的方便,有了發票相關信息的收集,抵扣操作相當簡單,批量導入抵扣平臺就可。利用通行費發票RPA,前期下載通行費清單表格和準備車牌號表格,之后交由程序模擬人工操作,查看分析結果即可。
財務RPA是將平時的工作流程標準化,讓程序模擬用戶進行操作,是財務與技術的結合應用,由程序代替初級的重復的勞動,高效處理數據,高效完成任務。
自動化之后便是智能化,數字化,利用自動化后我們會獲得更大量、更全面的數據,它包含了業務數據、財務數據等,這些都是財務數字化發展的基礎。像對賬RPA,銷售開票RPA后續提供了很多數據,可以利用這些銷售數據來進行下一步的分析,分析商品的盈利能力、受歡迎程度以及客戶的需求、客戶貨款回收的情況及應收賬款的賬齡分析。并將結果數據可視化,做進一步的分析、預測活動。而財務人員也因為有了財務RPA后解放雙手,投入更深層次的分析、決策的工作中。
信息技術就是讓數據坐上新時代的高鐵,財務部門對數據進行采集、加工、處理,通過將信息技術運用到財務工作上,提高財務工作效率和準確率。