對于應收賬款,作為财務的你是否在關心:誰欠錢?誰欠的多?誰欠的久?
當應收賬款未能按時收回時,就會降低企業資金的使用效率,使企業效益下降。
在賒銷業務中,企業發出商品并開票确認收入後,貨款卻不能同步到賬,這種沒有貨款回籠的銷售收入,勢必會形成沒有現金流入的會計利潤,企業還需墊支由此産生的相關稅款。
對于應收賬款的管理成本、清欠過程中的中介費用等都會增加企業的現金流出,這不僅占用了大量的流動資金,還将影響企業現金流的正常運轉。
在今天的案例中,為規避應收賬款變成壞賬的風險,小秘書将與大家分享跟應收賬款賬齡分析相關的實用工具,教大家如何借助數字化技術Python依據應收賬款數據的“憑證日期”統計賬齡。
在案例中,我們将運用先進先出的原則:
(在本次案例中,我們暫不考慮應收賬款借方紅字的情況)
一般來說,應收賬款清賬操作需要在核算系統中找到對應的應收賬款借方憑證,然後對該筆憑證進行沖銷。在這種情況下,統計應收賬款賬齡隻需要找到未沖銷的應收賬款,計算憑證日期/交易日期至統計日期的間隔時長就可以了。
我們使用先進先出的方法統計截止2020/9/30的應收賬齡,賬齡分段格式如下:
1
數據準備
引入應收賬款憑證數據:
import pandas as pd
from datetime import datetime, date
import warnings
warnings.filterwarnings("ignore")
pd.options.display.float_format = '{:,.2f}'.format
file = '财會實驗數據.xlsx'
df = pd.read_excel(file, sheet_name='客戶往來賬')
df.fillna(0,inplace=True)
df
2
數據處理
根據實驗要求,按每個客戶先進先出的原則統計賬齡。因此先對應收賬款數據按客groupby,再在每個group中進行賬齡計算,group内的賬齡計算邏輯我們命名為AR函數。
def AR(x):
# 計算客戶應收款餘額
total = x['本币金額'].sum()
# 統計應收賬款借方
df_dr = x[x['本币金額']>0]
# 按過賬日期降序
df_dr = df_dr.sort_values(by=['過帳日期'],ascending=False).reset_index(drop=True)
# 應收賬款先進先出,因此将餘額分攤在最後幾筆借方交易,一旦分攤完則停止
for index, row in df_dr.iterrows():
if total-row['本币金額']>0:
df_dr.loc[index,'實際應收'] = row['本币金額']
else:
df_dr.loc[index,'實際應收'] = total
break
total = total-row['本币金額']
return df_dr
df2 = df.groupby('客戶編号',as_index=False).apply(AR)
# 找一個客戶驗證計算結果
df2.loc[df2['客戶編号']==23500000]
過濾實際應收為空或者為0的數據(代表已清賬)
df3=df2[(pd.isna(df2['實際應收'])
==False)&(df2['實際應收']!=0)
df3.loc[df3['客戶編号']==23500000]
3
數據計算
計算每筆實際應收賬款截止2020/9/30的賬齡,賬齡以月份數據表示,不足一月的按照天數/30計算小數。
enddate = date(2020, 9, 30)
def totalmonth(startdate):
return round((enddate.year-startdate.year)*12 (enddate.month-startdate.month) (enddate.day-startdate.day)/30,2)
df3['賬齡']=df3['過帳日期'].map(totalmonth)
df3.loc[df3['客戶編号']==23500000]
計算賬齡區間:使用條件判斷
▪ 當賬齡小于等于3個月時,落入賬齡區間 1-3月;▪ 當賬齡大于3個月小于等于12個月時,落入賬齡區間 3月-1年;▪ 當賬齡大于12個月小于等于24個月時,落入賬齡區間 1-2年;▪ 當賬齡大于36個月時,落入賬齡區間 3年以上。
def age(totalmonth):
if totalmonth<=3:
age='1-3月'
elif totalmonth<=12:
age='3月-1年'
elif totalmonth<=24:
age='1-2年'
else:
age='3年以上'
return age
df3['賬齡區間']=df3['賬齡'].map(age)
df3.loc[df3['客戶編号']==23500000]
賬齡統計:
pd.pivot_table(df3,index['客戶編号'],
columns=['賬齡區間'],
values=['實際應收'],aggfunc=
sum,fill_value=0)
以上就是用Python自動計算應收賬款賬齡的操作步驟了。公司的應收賬款在流動資産中具有舉足輕重的地位,如果公司的應收賬款能及時收回,那麼公司的資金使用效率将能大幅提高!
©圖片版權歸财碼數字化所有,如對版權有異議,請聯系後台議定處理。
本文由财碼數字化整理發布,如需轉載請務必注明以上信息。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!