socketref,再见!高德

https://github.com/adoggie

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用链接

留言簿(54)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

啊关的企业在处理用友erp人事数据与税务报税时转换数据时被停滞了,一个小时内完成他的需求
  1 # -*- coding:utf-8 -*-
  2 # soctt.bin created  2011.8.29
  3 # sw2us.com @2011 
  4 #
  5 
  6 import sys,os,os.path,time,struct,traceback,threading,datetime,string,datetime,calendar
  7 import xlrd
  8 
  9 start_year=0
 10 start_month= 0
 11 start_day =1 
 12 end_day = start_day 
 13 
 14 end_year= 0
 15 end_month = 0
 16 
 17 employee_importFile=u'111111111.XLS'
 18 tax_importFile=u'题桥工资格式.xls'
 19 
 20 employee_exportFile=u'empolyees.txt'
 21 tax_exportFile=u'personTax.txt'
 22 employeelistfile='employee_simplelist.txt'
 23 
 24 fixDeduct = 2000.00 #扣除额
 25 
 26 #人员归档
 27 def employeeAchive():
 28     title = u'工号~~姓名~~证件类型~~证件号~~性别~~出生日期~~国家、地区~~开票标志~~申报方式~~职务~~地址~~含税标志~~邮政编码~~调入调离~~备注'
 29     #rowfmt = u"%s~~ %s~~  1       ~~%s    ~~0   ~~%s      ~~142       ~~1       ~~0       ~~    ~~    ~~1       ~~        ~~0       ~~0"
 30     rowfmt = u"%s~~ %s~~  1       ~~%s    ~~0   ~~%s      ~~142       ~~1       ~~0       ~~    ~~    ~~1       ~~        ~~0       ~~0"
 31     rowfmt = rowfmt.replace(' ','')
 32     
 33     wb = xlrd.open_workbook(employee_importFile) 
 34     sh = wb.sheet_by_index(0)
 35     file = open(employee_exportFile,'w')
 36     title = title.encode('gbk')
 37     file.write(title)
 38     file.write('\n')
 39     
 40     file2 = open(employeelistfile,'w'#清单表2
 41     for r in range(1,sh.nrows):
 42         v = sh.row_values(r)
 43         v = map(string.strip,v)
 44         
 45         
 46         birth = ''
 47         try:
 48             y,m,d = v[4].split('-')
 49             birth = "%04d%02d%02d"%(int(y),int(m),int(d))
 50         except:
 51             print u'出生年月空缺 (%s,%s)'%(v[1],v[2])
 52         
 53         txt = rowfmt%(v[1],v[2],v[5],birth)
 54         txt = txt.encode('gbk')
 55         #print len(txt)
 56         file.write(txt+'\n')
 57         
 58         txt = "%s~~%s~~%s\n"%(v[1],v[2],v[5])
 59         txt = txt.encode('gbk')
 60         
 61         file2.write(txt)
 62         
 63     file.close()
 64     file2.close()
 65     
 66 
 67 def precess_parameters():
 68     global start_year,start_month,end_year,end_month,start_day,end_day
 69     
 70     cur = datetime.datetime.now()
 71     start_year = cur.year
 72     start_month = cur.month
 73     #print len(sys.argv)
 74     if len(sys.argv) == 4 and sys.argv[1]=='tax':
 75         start_year = int(sys.argv[2]) 
 76         start_month = int(sys.argv[3])
 77     
 78     start_day = 1
 79     x,end_day= calendar.monthrange(start_year,start_month)
 80     
 81     
 82     
 83 def salaryTax():
 84     global start_year,start_month,end_year,end_month,start_day,end_day
 85     
 86     precess_parameters()
 87 
 88     hashemployee = {}
 89     file = open(employeelistfile,'r')
 90     lines = file.readlines()
 91     file.close()
 92     for line in lines:
 93         line = line.strip().split('~~')
 94         k = line[0]
 95         v = line[2]
 96         hashemployee[k] = v
 97     #以上建立员工查找表
 98     
 99     
100     title = u'证件类型~~证件号码~~税目代码~~含税标志~~所属期起~~所属期止~~天数~~收入额~~扣除额~~应缴税额~~国家地区~~减免税额~~实缴税额'
101     #rowfmt = u"1     ~~%s      ~~010000  ~~1       ~~%s      ~~%s      ~~%s  ~~%s    ~~%s    ~~%s      ~~142     ~~0       ~~%s"
102     rowfmt =  u"1     ~~%s      ~~010000  ~~1       ~~%s      ~~%s      ~~%s  ~~%s    ~~%s    ~~%s      ~~142     ~~0       ~~%s"
103     rowfmt = rowfmt.replace(' ','')
104     
105     wb = xlrd.open_workbook(tax_importFile) 
106     sh = wb.sheet_by_index(0)
107     file = open(tax_exportFile,'w')
108     title = title.encode('gbk')
109     file.write(title)
110     file.write('\n')
111     
112     for r in range(1,sh.nrows):
113         v = sh.row_values(r)
114         
115         v = map(unicode,v)
116         v = map(string.strip,v)
117         sid = '' #身份证编号
118         try:        
119             sid = hashemployee[v[1]]
120         except:
121             print u'处理异常中断: 工号不能匹配! 工号: %s'%(v[1])
122             return 
123             sys.exit(0)
124         start = "%04d%02d%02d"%(start_year,start_month,start_day)
125         end = "%04d%02d%02d"%(start_year,start_month,end_day)        
126         txt = rowfmt%(sid,start,end, end_day-start_day+1,v[22],fixDeduct,v[24],v[24] ) #应发工资 W(v[22])
127         txt = txt.encode('gbk')        
128         file.write(txt+'\n')
129     file.close()
130     
131 
132 if __name__=='__main__':
133     employeeAchive()
134     salaryTax()
135    
posted on 2011-08-30 11:28 放屁阿狗 阅读(260) 评论(0)  编辑 收藏 引用 所属分类: perl/python/php/lua/tcl

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理