中国移动“营改增”报账平台公共服务包设计说明书V08.docx_第1页
中国移动“营改增”报账平台公共服务包设计说明书V08.docx_第2页
中国移动“营改增”报账平台公共服务包设计说明书V08.docx_第3页
中国移动“营改增”报账平台公共服务包设计说明书V08.docx_第4页
中国移动“营改增”报账平台公共服务包设计说明书V08.docx_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国移动“营改增”报账平台改造公共服务包设计说明书中国移动通信有限公司2013年7月V0.1目录1概述11.1本文档适用范围11.2参考文件11.3术语与定义11.3.1符号与缩略语11.3.2表单图例21.4背景情况21.4.1报账平台建设历程及现状21.4.2营改增业务要求及影响31.5总体说明31.5.1系统改造目标31.5.2系统改造范围31.5.3系统改造要求42功能改造52.1提交报账单验证52.2数据库脚本62.3相关表类及hbm文件更新62.4进项抵扣凭证Tab页实现82.5税率字段页面展示92.6初核会计环节增加提交税务会计认证132.7导入类接口增加返回消息日志记录172.8增加测试用webservice项目192.9增加营改增系统开关242.10视同销售导入应付和总账261 概述1.1 本文档适用范围为规范营业税改征增值税(简称“营改增”)所需系统改造,按照省公司层面“营改增”现有基础代码,特制定本说明书。1.2 参考文件1.3 术语与定义名词解释报账平台各公司所属市/县公司和公司本部进行财务报销、报账的系统平台。该系统平台提供了报账信息采集、审批、传递和财务审核功能;通过预定义报账信息与财务信息间关系自动生成会计凭证信息,为ERP系统的核算处理和凭证归档提供支持;并能提高财务集中核算和结算的准确性和效率ERP接口平台实现财务集中管理相关应用以及其它ERP扩展应用与ERP核心系统之间的流程耦合和数据交互的系统平台进项抵扣凭证增值税进项抵扣凭证包括增值税专用发票、货物运输业增值税专用发票、进口海关增值税专用缴款书、税收通用缴款书、购买免税农产品的普通发票、公路内河货物运输业统一发票、机动车销售统一发票、铁路货票等。进项税额转出企业购进的货物发生非常损失(非经营性损失),以及将购进货物改变用途(如用于非应税项目、集体福利或个人消费等),其抵扣的进项税额应通过“应交税费应交增值税(进项税额转出)”科目转入有关科目,不予以抵扣。1.3.1 符号与缩略语缩写英文描述中文描述ERPEnterprise resource planning特指中国移动ORACLE ERP系统BOSSBusiness&Operation Support System特指中国移动业务运营支撑系统OAOffice Automation特指中国移动统一信息平台系统COAChart of Account特指中国移动会计科目1.3.2 表单图例表单图例说明表示必填项,无此标识的为非必填项表示条形码表示默认值或由系统自动生成表示复选框表示值列表表示动作按钮表示滚动条1.4 背景情况1.4.1 报账平台建设历程及现状中国移动于2007年启动报账平台试点省份建设,并于2008年进行了全国推广,2009年启动集团总部、管理学院、研究院的报账平台建设。后续,各省结合集团报账规范以及本省报账业务对报账平台进行多轮扩展建设。2011年,为配合”全面预算系统”建设,全国各省及集团总部报账平台进行了相关改造,实现了与全面预算系统的对接。2011年,报账业务扩展到”薪酬管理”领域,全国各省及集团总部报账平台与薪酬管理系统进行对接。2012年,报账平台进行了”渠道酬金”相关报账的建设改造及与BOSS侧CRM系统的对接,实现了对渠道酬金报账业务的支撑。本次为适应“营改增”政策,将对报账平台进行新一轮改造建设,以满足“营改增”业务需求,计划全国各省按集团要求,在2013年9月、10月分批完成改造并上线。1.4.2 营改增业务要求及影响2012年9月北京、江苏等8省市分批试点营改增业务,预计2013年邮电通信行业也将纳入试点,到2016年国家税务总局提出十二五时期要进行全面实施改革,完整运行增值税链条机制。增值税链条机制要求价税分离,商品价格与税金分离,收入、成本费用、资本开支、利润都将受到影响。基于上述情况,报账平台需要进行相应改造以满足营改增业务需求。1.5 总体说明1.5.1 系统改造目标报账平台“营改增”改造,其目标是满足“营改增”报账业务需求,具体建设目标如下: 实现报账价税分离实现报账单据的价税分离,使其能够记录进项抵扣凭证信息、价税分离数据,并根据价税分离信息进行相关控制和自动入账。 实现“发票信息”录入和“发票认证结果”查看在报账单中录入记录发票信息,实现对发票信息和报账信息的一体化管理,报账系统从集团统一建设的发票管理模块同步发票认证状态,进行查看。1.5.2 系统改造范围 支出类报账单所有涉及一般纳税人供应商付款业务的报账单均需要“营改增”改造,需要对报账单模板、校验逻辑进行调整。 收入类报账单对于需要开具增值税销项发票的收款业务,其报账单均需要进行“营改增”改造,需要对报账单模板、校验逻辑进行调整。 支出类报账流程对于上述涉及“营改增”改造的支出类报账单,其报账流程需要进行相应改造。 相关系统接口为满足“营改增”业务,ERP、发票、预算、合同、采购、SOA接口平台等相关系统均需要进行改造,并由集团统一新建发票管理模块,报账平台与上述相关系统的接口也需要进行新增或调整,增加价税分离数据项、发票信息传递和相关控制逻辑。1.5.3 系统改造要求 统一规范各省公司按照集团统一的“营改增”业务规范和系统改造方案,对报账平台进行改造建设。 时间进度要求为满足“营改增”实施时间要求,各省公司需要在7月底以前完成报账平台的开发,按统一时间安排并完成与相关系统的调整对接及上线。 业务兼容性要求各省报账平台可以同时满足增值税业务和非增值税业务的功能要求。2 功能改造2.1 提交报账单验证整体思路:定义统一验证接口,将验证按功能实现为一个单独的验证器类。由于各省情况不一,此次只将营改增部分抽出实现。建议各省在以后将原有验证方法按功能都实现为一个个单独验证器类。统一验证接口及营改增部分的验证器:描述文件.reimbursement.service.validator:验证器类src/spring-claim-validator.xml1. 在SubmitClaimService.java注入validatorSet并增加validateForVAT方法/验证列表protected LinkedHashSetvalidatorSet;public void setValidatorSet(LinkedHashSetvalidatorSet) this.validatorSet = validatorSet;/* * 营改增通用提交环节验证 * return true or false */protected booleanvalidateForVAT(IMessageObjectmo, ValidateErrors errors)/验证IteratorvalidatorIt=validatorSet.iterator();while(validatorIt.hasNext()IValidator validator=validatorIt.next();if(validator.validate(mo, errors)=false)return errors.isNoError();return errors.isNoError();2. 修改需要进行营改增报账单的提交类,在提交类中的validate方法中调用validateForVAT方法。3.public boolean validate(IMessageObjectmo, ValidateErrors errors) 此处省略原有验证代码validateForVAT(mo, errors);return errors.isNoError();4. 修改spring配置文件l 在AppBeanContext.xml最后增加l 在AppBeanContext.xml的sessionFactory Bean中新增hibernate的hbm文件/com/ibm/org/reimbursement/pojo/hbm/TVatInvoiceauth.hbm.xmll 在需要进行营改增的报账单提交类配置中增加:蓝色部分为验证器类,目前中央组统一给出四个验证器的实现,vatDaysValidator验证器:实现增值税发票期限120天的限制,当开票日期超过120天时不允许提交。purchaseOrderValidator验证器:实现含有增值税发票的采购订单报账单必须选择含进项抵扣凭证。contractAmountValidator验证器:实现合同价款、税款、累计价款、累计税款、报账金额之间关系验证。businessActivityValidator验证器:实现根据业务小类控制是否必填必须填写进项抵扣凭证。2.2 数据库脚本V0.8有变更2.3 相关表类及hbm文件更新l BaseTRmbsClaim.java/营改增增加字段/* 是否含进项抵扣凭证 */private java.lang.StringisHasVoucher;/* 合同价款 */private java.math.BigDecimalcontractPriceAmount;/* 合同税款 */private java.math.BigDecimalcontractTaxAmount;/* 合同累计价款 */private java.math.BigDecimalcontractAccumPriceAmount;/* 合同累计税款 */private java.math.BigDecimalcontractAccumTaxAmount;/* 供应商税务资质 */private java.lang.StringvendorTaxQuality;/* 价款 */private java.math.BigDecimalpriceAmount;/* 进项税款 */private java.math.BigDecimalinputTaxAmount;/* 销项税额 */private java.math.BigDecimaloutputTaxAmount;/* 认证状态,0-未认证,1-认证成功,2-认证不成功(含部分成功) */private java.lang.StringinvoiceAuthState;l TRmbsClaim.hbm.xml是否有进项抵扣凭证,0-没有,1-有合同价款合同税款合同累计价款合同累计税款供应商税务资质价款进项税款销项税额认证状态,0-未认证,1-认证成功,2-认证不成功(含部分成功)l BaseTRmbsClaimLine.java/营改增增加字段/* 进项抵扣凭证种类 */private java.lang.StringvoucherCategory;/* 进项税率 */private java.math.BigDecimalinputTaxRate;/* 进项税款 */private java.math.BigDecimalinputTaxAmount;/* 价款 */private java.math.BigDecimalpriceAmount;/* 是否视同销售,1-视同销售 */private java.lang.StringisEquateSale;/* 销项税率 */private java.math.BigDecimaloutputTaxRate;/* 销项税额 */private java.math.BigDecimaloutputTaxAmount;l TRmbsClaimLine.hbm.xml进项抵扣凭证种类进项税率进项税款价款是否视同销售,1-视同销售销项税率销项税款2.4 进项抵扣凭证Tab页实现描述文件.reimbursement.service.tvatinvoice:抵扣联凭证serviceWebRoot/templates/tvatinvoice:抵扣联凭证页面WebRoot/rmbs/claimprint/paste.jsp:抵扣联附件src/com/ibm/org/reimbursement/pojo/hbm/TVatInvoiceauth.hbm.xml:抵扣发票联hbmsrc/com/ibm/org/reimbursement/pojo/TVatInvoiceauth.java:抵扣发票联pojo2.5 税率字段页面展示为了实现税率字段页面以百分数显示(),数据库使用小数保存。需要按照步骤操作:1. 在src/com/ibm/org/reimbursement/util/下新增加一个类。2. 修改类src/com/ibm/org/reimbursement/util/ActionXMLTransformer.java的fldType2ForegroundVarType方法,增加蓝色部分代码如下:/* * 将字段类型转换为前台XML的类型。 * param fldType * return */private String fldType2ForegroundVarType(String fldType)TypeConversion tc = new TypeConversion();if( fldType.equals(ItemFldTransformer.FLD_TYPE_INTEGER) /整型return int;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_PERCENT) /百分型return .reimbursement.util.Percent;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_DECIMAL) /浮点型return java.math.BigDecimal;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_DATE) /日期类型return java.util.Date;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_DATETIME) /时间类型return java.util.Date;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_LONG)return java.lang.Long;else /字符串类型return java.lang.String;3. 修改类src/com/ibm/org/reimbursement/util/ClaimRecordPrivilege.java的fldType2ForegroundVarType方法,增加蓝色部分代码如下:private String fldType2ForegroundVarType(String fldType)if( fldType.equals(ItemFldTransformer.FLD_TYPE_INTEGER) /整型return int;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_PERCENT) /百分型return .reimbursement.util.Percent;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_DECIMAL) /浮点型return java.math.BigDecimal;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_DATE) /日期类型return java.util.Date;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_DATETIME) /时间类型return java.util.Date;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_LONG)return java.lang.Long;else /字符串类型return java.lang.String;4. 修改类src/com/ibm/org/reimbursement/util/ItemFldTransformer.java增加变量:public static String FLD_TYPE_PERCENT = 7;在方法中增加蓝色代码如下:/* * 将一个字符串类型的值,按照字段类型转换成对应的类型。 * param strValue * param fldType * return */public static Object convertString2Object(String strValue,String fldType)TypeConversion tc = new TypeConversion();if( fldType.equals(FLD_TYPE_INTEGER) /整型return tc.string2Integer(strValue);else if(fldType.equals(ItemFldTransformer.FLD_TYPE_PERCENT) /百分型return tc.string2Percent(strValue);else if(fldType.equals(FLD_TYPE_DECIMAL) /浮点型return tc.string2Bigdecimal(strValue);else if(fldType.equals(FLD_TYPE_DATE) /日期类型return tc.string2Date(strValue);else if(fldType.equals(FLD_TYPE_DATETIME) /时间类型return tc.string2Date(strValue);else if(fldType.equals(FLD_TYPE_LONG) /长整型return tc.string2Long(strValue);else /字符串类型return strValue;5. 修改类src/com/ibm/org/reimbursement/util/RecordPrivilege.java的fldType2ForegroundVarType方法,增加蓝色部分代码如下:private String fldType2ForegroundVarType(String fldType)TypeConversion tc = new TypeConversion();if( fldType.equals(ItemFldTransformer.FLD_TYPE_INTEGER) /整型return int;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_PERCENT) /百分型return .reimbursement.util.Percent;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_DECIMAL) /浮点型return java.math.BigDecimal;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_DATE) /日期类型return java.util.Date;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_DATETIME) /时间类型return java.util.Date;else if(fldType.equals(ItemFldTransformer.FLD_TYPE_LONG)return java.lang.Long;else /字符串类型return java.lang.String;6. 修改类src/com/ibm/org/reimbursement/util/TypeConversion.java的object2String和string2Object方法,并增加新方法string2Percent,如下蓝色部分代码:/* * 将对象转换为字符串 * param obj * return */public String object2String(Object obj,String fldType)if( obj = null )return ;if( obj instanceof String)return obj.toString();else if( obj instanceof java.lang.Integer )return obj.toString();else if( obj instanceof java.math.BigInteger )return obj.toString();else if( obj instanceof java.lang.Long )return obj.toString();else if(obj instanceof java.math.BigDecimal& fldType!=null & fldType.equals(.reimbursement.util.Percent)return (new .reimbursement.util.Percent(java.math.BigDecimal)obj).toPercentString();else if(obj instanceof java.math.BigDecimal& fldType!=null & fldType.equals(#.#) return (new java.text.DecimalFormat(0.0000).format(obj).toString();else if(obj instanceof java.math.BigDecimal)return (new java.text.DecimalFormat(0.00).format(obj).toString();else if(obj instanceof java.lang.Double)return (new java.text.DecimalFormat(0.00).format(obj).toString();else if( obj instanceof java.util.Date & fldType!=null & fldType.equals(5)return DateUtil.dateFormat(obj,yyyy-MM-dd HH:mm:ss);else if( obj instanceof java.util.Date)return DateUtil.dateFormat(obj, yyyy-MM-dd);elsereturn obj.toString();/* * 将字符串类型按照类型转换为对应的Object * param strValue * param classType * return */public Object string2Object(String strValue,String classType)if( classType = null )return strValue;if( (strValue = null) |( strValue.equals() & (!classType.toLowerCase().equals(java.lang.string)return null; if( classType.toLowerCase().equals(eger) | classType.toLowerCase().equals(int)return new java.lang.Integer(strValue);else if(classType.toLowerCase().equals(.reimbursement.util.percent)return new .reimbursement.util.Percent(strValue).toBigDecimal();else if(classType.toLowerCase().equals(java.math.bigdecimal)return new java.math.BigDecimal(strValue);else if( classType.toLowerCase().equals(java.lang.double)|classType.toLowerCase().equals(double)return new java.lang.Double(strValue);else if( classType.toLowerCase().equals(java.lang.float)|classType.toLowerCase().equals(float)return new java.lang.Float(strValue);else if( classType.toLowerCase().equals(java.util.date)return string2Date(strValue);else if( classType.toLowerCase().equals(java.lang.long)return string2Long(strValue);else return strValue;public .reimbursement.util.Percent string2Percent(String str)if( str = null | str.equals()return null;.reimbursement.util.Percent ret = new .reimbursement.util.Percent(str);return ret;注意:1.将表T_RMBS_ITEM_FLD中税率字段的FLD_TYPE应该改为72.6 初核会计环节增加提交税务会计认证1. 页面增加按钮在processactioninclude.jsp的相应位置(根据各省按钮放置位置自行决定)增加按钮标签代码: 2. 后台增加控制按钮显示逻辑l 在cess.service.operation.ProcessOperation.java类中增加常量:public static String Po_o_invoice = po_o_invoice; /提交税务会计认证l 在cess.service.operation.ProcessOperationServiceImpl.java 中增加方法:/* * 将输入参数转换为Map * param piid * param wiid * param userid * param orgid * param roleid * param username * param motion * param stateid * param xmlpara * param dominfo */private Map putParam2Map(String piid, String wiid, String userid,String orgid, String roleid, String username, String motion,String stateid, String xmlpara, String dominfo) Map inputParam = new HashMap();inputParam.put(piid, piid);inputParam.put(wiid, wiid);inputParam.put(userid, userid);inputParam.put(orgid, orgid);inputParam.put(roleid, roleid);inputParam.put(username, username);inputParam.put(motion, motion);inputParam.put(stateid, stateid);inputParam.put(xmlpara, xmlpara);inputParam.put(dominfo, dominfo);return inputParam;l 在原有方法 prepareOperationData中增加蓝色代码块:Map piinfoMap = new HashMap();Map operationMap = new HashMap();Map retMap = new HashMap();this.getGoBack(xmlpara, dominfo);/退回dominoinfo = this.getDominoInfo(dominfo);/处理按钮显示Map inputParam=putParam2Map(piid, wiid, userid, orgid, roleid, username, motion,stateid, xmlpara, dominfo);Set buttonSet=new HashSet();buttonSet.add(new AuthInvoiceButton(ProcessOperation.Po_o_invoice,ProcessOperation.Po_o_invoice);Iterator bsIt=buttonSet.iterator();while(bsIt.hasNext()ProcessOperationButton p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论