EAS Cloud 税务管理二开扩展
# 一、开票流程
应收单 -> 开票单
业务单据 -> 开票申请单 -> 开票单
![image20210623192002648.webp](/download/0100bf24fad30c8943a2916980f0b086adc3.webp)
开票过程:
发起:com.kingdee.eas.tm.im.app.IMInvoiceFacadeControllerBean#_makeInvoice
![图片1.webp](/download/010043716028759f4bdc9673b146e4f7aba2.webp)
# 二、二次开发扩展类
提供了一个二开扩展类,负责应收单/开票申请单到开票单的扩展,需要二次开发同事反编译类,以私包方式部署到EAS服务器。
```
com.kingdee.eas.tm.im.TaxManageCustomerImpl
```
| 方法名 | 方法描述 | 参数 | 返回值 |
| -------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ---------------------------------------- |
| getMakeInvoiceInfo | 根据开票组织id获取开票销方信息 | Context ctx, String makeOrgID | CompanyOrgUnitInfo |
| beforSetCustomerInfo | 设置客户信息(前置) | Context ctx, MakeInvoiceInfo invoice, BillReqInfo billReq | |
| overrideSetCustomerInfo | 设置客户信息(二开) | Context ctx, MakeInvoiceInfo invoice, BillReqInfo billReq | boolean
true走二开实现,false标准实现 | | afterCutsomerInfo | 设置客户信息(后置) | | | | beforSetInvoiceOrgId | 设置开票组织(前置) | MakeInvoiceInfo invoice, BillReqInfo billReq | | | overrideSetInvoiceOrgId | 设置开票组织(二开) | MakeInvoiceInfo invoice, BillReqInfo billReq | boolean
true走二开实现,false标准实现 | | afterSetInvoiceOrgId | 设置开票组织(后置) | MakeInvoiceInfo invoice, BillReqInfo billReq | | | beforeSetProduct | 设置商品名称(前置) | Context ctx, MakeInvoiceInfo invoice, BillReqInfo billReq, BillEntryReqInfo entryReq, MakeInvoiceEntryInfo entry | | | overrideSetProduct | 设置商品名称(覆盖) | Context ctx, MakeInvoiceInfo invoice, BillReqInfo billReq, BillEntryReqInfo entryReq, MakeInvoiceEntryInfo entry | boolean
true走二开实现,false标准实现 | | afterSetProduct | 设置商品名称(后置) | Context ctx, MakeInvoiceInfo invoice, BillReqInfo billReq, BillEntryReqInfo entryReq, MakeInvoiceEntryInfo entry | | | getBillReqInfoFromReDevelop | 应收单二开字段,可通过本方法传递到业务单据信息中。再在afterSetInvoiceOrgId中使用。 | BillReqInfo billReq, OtherBillInfo otherBill | | | getBillEntryReqInfoFromReDevelop | 同上,分录数据,配合afterSetProduct使用 | BillEntryReqInfo billEntryReq, OtherBillentryInfo otherBillEntry | | | beforeSetBills | 设置中间单据(前置) | Context ctx ,InvoiceReqInfo req, Map combinBill | |
| overrideSetBills | 设置中间单据(二开) | Context ctx ,InvoiceReqInfo req, Map combinBill | boolean
true走二开实现,false标准实现 | | afterSetBills | 设置中间单据(后置) | Context ctx ,InvoiceReqInfo req, Map combinBill | |
| | | | |
| | | | |
# 三、二开案例
## 案例一:应收单 -> 开票单(增值税)
```java
/**
* 应收单单头增加二开字段
*
* @param billReq 业务单据
* @param otherBill 应收单
* @throws BOSException
*/
public static void getBillReqInfoFromReDevelop(BillReqInfo billReq, OtherBillInfo otherBill) throws BOSException{
billReq.put("billDep", otherBill.get("billDep"));
}
/**
* 应收单分录增加二开字段
*
* @param billEntryReq 业务单据分录
* @param otherBillEntry 应收单分录
* @throws BOSException
*/
public static void getBillEntryReqInfoFromReDevelop(BillEntryReqInfo billEntryReq, OtherBillentryInfo otherBillEntry)
throws BOSException{
billEntryReq.put("billEntryDep",otherBill.get("billEntryDep"));
}
```
```java
/**
* 应收单单头二开字段传递到开票单
*
* @param ctx
* @param invoice 开票单
* @param billReq 业务单据
* @throws EASBizException
* @throws BOSException
*/
public static void afterSetInvoiceOrgId (Context ctx, MakeInvoiceInfo invoice, BillReqInfo billReq)
throws EASBizException, BOSException{
//这里需要注意billReq来源 是开票申请单还是应收单
if (billReq.get("billDep") != null) {
invoice.put("billDep",billReq.get("billDep"));
}
}
/**
* 应收单分录二开字段传递到开票单
* @param ctx
* @param invoice 开票单
* @param billReq 业务单据
* @param entryReq 业务单据分录
* @param entry 开票单分录
*/
public static void afterSetProduct(Context ctx, MakeInvoiceInfo invoice, BillReqInfo billReq,
BillEntryReqInfo entryReq, MakeInvoiceEntryInfo entry) {
//这里需要注意billReq来源 是开票申请单还是应收单
if(entryReq.get("billEntryDep")!=null){
entry.put("billEntryDep",entryReq.get("billEntryDep");
}
}
```
## 案例二:开票申请单(增值税)-> 开票单(增值税)
```java
/**
* 开票申请单(增值税)单头二开字段携带到开票单
*
* @param ctx
* @param invoice 开票单
* @param billReq 业务单据
* @throws EASBizException
* @throws BOSException
*/
public static void afterSetInvoiceOrgId (Context ctx, MakeInvoiceInfo invoice, BillReqInfo billReq) throws EASBizException, BOSException{
//获取开票申请单 如果是开票申请,默认会把值对象放入 objectValue
Object value = billReq.getObjectValue();
if(value instanceOf MakeInvoiceReqInfo){
MakeInvoiceReqInfo invoiceReq = (MakeInvoiceReqInfo)value;
if (invoiceReq.get("billDep") != null) {
invoice.put("billDep",invoiceReq.get("billDep"));
}
}
}
```
备注:开票申请单(增值税) 分类携带的方法 ,标准扩展方案还没有提供,后续补丁中添加。
临时方案 重写 com.kingdee.eas.tm.im.app.BuildInvoiceReq4NewMKRequest#getBillEntryReqInfo
## 案例三:开票申请单(机动车)-> 开票单(机动车)扩展
机动车开票相关功能扩展,二开继承MakeInvoiceForDepFacade,提供了很多扩展方法。
车辆管理所增加字段扩展:
com.kingdee.eas.tm.im.app.MakeInvoiceForDepFacadeControllerBean#_setProductInfo
com.kingdee.eas.tm.im.app.MakeInvoiceForDepFacadeControllerBean#_carryVehicleManageInfo
(待完善)
## 案例四:反写相关扩展
反写表:T_IM_WriteBackDef,定义了源单到目标单的反写实现类,二开开发可以继承标准的反写实现类实现二开业务逻辑。
分录开票申请相关字段反写:
![image20210624104848423.webp](/download/0100611a4cd8e6ed4451a88a9ded2a9c5dc3.webp)
开票、作废反写:
![image20210624104910009.webp](/download/0100776538e4777c4c22a678bd1ed66175bd.webp)
判断是否需要反写订单 : com.kingdee.eas.tm.im.common.writeback.app.handler.InvoiceReserveUtils#isOrderSupport
反写校验:com.kingdee.eas.tm.im.common.writeback.app.handler.InvoiceReqDisposer#verify(com.kingdee.bos.Context, java.lang.String, java.lang.String)
## 案例五:开票请求扩展
开票请求报文组装类:
```
com.kingdee.eas.tm.im.PwyHelper
```
扩展类:
```
com.kingdee.eas.tm.im.imExtend.PwyHelperExtend
```
```
```
true走二开实现,false标准实现 | | afterCutsomerInfo | 设置客户信息(后置) | | | | beforSetInvoiceOrgId | 设置开票组织(前置) | MakeInvoiceInfo invoice, BillReqInfo billReq | | | overrideSetInvoiceOrgId | 设置开票组织(二开) | MakeInvoiceInfo invoice, BillReqInfo billReq | boolean
true走二开实现,false标准实现 | | afterSetInvoiceOrgId | 设置开票组织(后置) | MakeInvoiceInfo invoice, BillReqInfo billReq | | | beforeSetProduct | 设置商品名称(前置) | Context ctx, MakeInvoiceInfo invoice, BillReqInfo billReq, BillEntryReqInfo entryReq, MakeInvoiceEntryInfo entry | | | overrideSetProduct | 设置商品名称(覆盖) | Context ctx, MakeInvoiceInfo invoice, BillReqInfo billReq, BillEntryReqInfo entryReq, MakeInvoiceEntryInfo entry | boolean
true走二开实现,false标准实现 | | afterSetProduct | 设置商品名称(后置) | Context ctx, MakeInvoiceInfo invoice, BillReqInfo billReq, BillEntryReqInfo entryReq, MakeInvoiceEntryInfo entry | | | getBillReqInfoFromReDevelop | 应收单二开字段,可通过本方法传递到业务单据信息中。再在afterSetInvoiceOrgId中使用。 | BillReqInfo billReq, OtherBillInfo otherBill | | | getBillEntryReqInfoFromReDevelop | 同上,分录数据,配合afterSetProduct使用 | BillEntryReqInfo billEntryReq, OtherBillentryInfo otherBillEntry | | | beforeSetBills | 设置中间单据(前置) | Context ctx ,InvoiceReqInfo req, Map
true走二开实现,false标准实现 | | afterSetBills | 设置中间单据(后置) | Context ctx ,InvoiceReqInfo req, Map
EAS Cloud 税务管理二开扩展
# 一、开票流程应收单 -> 开票单业务单据 -> 开票申请单 -> 开票单![image20210623192002648.webp](/download/0100bf...
点击下载文档
上一篇:EAS长链接收票配置介绍下一篇:商品名称自动匹配税收分类编码(二开)
本文2024-09-22 19:22:10发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-106756.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章