位置: IT常识 - 正文

泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。(泛微oa二次开发难吗)

编辑:rootadmin
泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。 文章目录泛微E9二次开发,对接金蝶云星空一、搭建开发环境,引入相关依赖一、创建项目二、配置javaSDK三、配置项目依赖四、编写测试代码五、配置编译六、resin远程debug配置二、开发部署1.编写自定义方法, 必须实现 必须实现接口weaver.interfaces.workflow.action方法public String execute(RequestInfo request);2.将文件上传至服务器D:\WEAVER\ecology\classbean\weaver\interfaces\workflow\action目录;3.在后台,新增自定义接口;4.在后台 流程引擎-路径管理-路径设置, 找到对应流程,选中流程;5.代码更新操作三、代码示例1.流程自定义接口动作(action)2.自定义Action Demo3.采购订单的同步3.ERP对接总结泛微E9二次开发,对接金蝶云星空

推荐整理分享泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。(泛微oa二次开发难吗),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:泛微oa二次开发经验分享,泛微oa系统二次开发用什么语言,泛微 e9 二次开发,泛微oa二次开发经验分享,泛微二次开发所需要的知识,泛微二次开发所需要的知识,泛微 e9 二次开发,泛微 e9 二次开发,内容如对您有帮助,希望把文章链接给更多的朋友!

泛微E9二次开发,对接金蝶云星空,可以同步采购订单,付款申请单,收料通知单等等: 泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。超详细,需要的jar包文档,可以在我的主页找到资源下载。

一、搭建开发环境,引入相关依赖

可以按照此链接步骤操作:ecology后端开发环境搭建

一、创建项目

1、新建项目:File->New->Project 2、选择java项目 3、下一步:Next 4、继续下一步:Next,并输入项目名字之后点击Finish

二、配置javaSDK

ecology开发推荐使用idea

1、进入项目设置File-Project Structure 2、点击SDKs->+,添加jdk1.8(e9依赖的版本) 3、点击project,分别选择Project SDK为1.8、、Project language level为SDK default 8

三、配置项目依赖

1、进入项目设置:File->Project Structure 2、添加依赖库:Libaries->±>java 3、找到要调试的ecology demo环境,分别引入以下路径的包

ecology/classbeanecology/web-inf/libresin4/lib

注:可以去服务器上找到相关的依赖 4、添加完之后点击Apply

四、编写测试代码

1、点击src右键->new->Package 2、右键点击包名->new->Java,注意包名带有impl层级,才可支持无侵入注解解析 3、测试代码如下:

package com.api.cs.test20200529.service.impl;import com.weaverboot.frame.ioc.anno.classAnno.WeaIocReplaceComponent;import com.weaverboot.frame.ioc.anno.methodAnno.WeaReplaceAfter;import com.weaverboot.frame.ioc.anno.methodAnno.WeaReplaceBefore;import com.weaverboot.frame.ioc.handler.replace.weaReplaceParam.impl.WeaAfterReplaceParam;import com.weaverboot.frame.ioc.handler.replace.weaReplaceParam.impl.WeaBeforeReplaceParam;import com.weaverboot.tools.logTools.LogTools;@WeaIocReplaceComponentpublic class Test { @WeaReplaceBefore(value = "/api/workflow/reqlist/splitPageKey",order = 1,description = "测试拦截前置") public void beforeTest(WeaBeforeReplaceParam weaBeforeReplaceParam){ //一顿操作 LogTools.info("before:/api/workflow/reqlist/splitPageKey"); } @WeaReplaceAfter(value = "/api/workflow/reqlist/splitPageKey",order = 1,description = "测试拦截后置") public String after(WeaAfterReplaceParam weaAfterReplaceParam){ String data = weaAfterReplaceParam.getData();//这个就是接口执行完的报文 LogTools.info("after:/api/workflow/reqlist/splitPageKey");// LogTools.info(data); return data; }}五、配置编译

1、进入项目设置:File->Project Structure 2、进入Artifacts->±>JAR->Empty 3、修改Name,这里要注意的是如果要支持无侵入注解解析,jar包名称必须包含下划线前缀,类似示例的写法 4、修改jar包输出目录(output directory)到以下目录

ecology/web-inf/lib

5、添加src输出内容到jar包,点击Apply 6、选择build->Build Artifacts 7、点击build,即可完成编译 8、到系统中查看编译结果

六、resin远程debug配置泛微E9二次开发,对接金蝶云星空,数据同步,表单同步。(泛微oa二次开发难吗)

ecology开发推荐使用idea,idea版权归属:JetBrains 特别提示:调试模式禁止使用到生产系统,必须是开发环境

1、进入resin配置文件:resin4/config/resin.properties 修改jvm_args

jvm_args : -Xdebug -Xrunjdwp:transport=dt_socket,address=9081,server=y,suspend=n -Dcom.sun.management.jmxremote -Xloggc:/var/log/gc.log -Xmx1550m -Xms1550m -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGCjvm_mode : -server

2、添加中间件连接 3、添加±>Resin->Remote远程服务,分别输入ec服务地址URL、远程Resin调试端口Port 4、选择configure,选择resin home 5、添加jar包 6、选择之前定义的Artifacts,点击Apply保存 7、如果是同一个系统内,选择 8、切换Startup/Connection,修改Debug->port为resin的远程调试端口 9、services中启动debug 10、到指定页面刷新(本示例是待办页面),成功进入断点,debug配置成功

二、开发部署1.编写自定义方法, 必须实现 必须实现接口weaver.interfaces.workflow.action方法public String execute(RequestInfo request);

注: 写好的类需要编译为class 文件;

2.将文件上传至服务器D:\WEAVER\ecology\classbean\weaver\interfaces\workflow\action目录;

3.在后台,新增自定义接口;

3.1 接口动作类文件填写 classbean 下文件路径; 在后台 集成中心-流程流转集成, 注册自定义接口;

4.在后台 流程引擎-路径管理-路径设置, 找到对应流程,选中流程;

4.1. 在右侧 流转设置-节点信息, 点击对应节点的 节点前后附加操作按钮; 4.2 弹出窗口中, 选择 外部接口tab, 接口来源 选择 自定义创建的接口; 4.3 点击确定 保存;

5.代码更新操作

5.1 重新编译文件; 5.2 将编译后的class 文件上传至服务器对应路径;

三、代码示例1.流程自定义接口动作(action)

一、接口说明 该接口主要实现在流程的流转当中,实时通过自定义的动作去操作异构系统的数据或者处理其他一些特定的业务,在流程的节点后、出口和节点前都可以定义这样的自定义动作。

二、实现方法&步骤 实现weaver.interfaces.workflow.action. Action接口即可

//接口定义如下:import weaver.soa.workflow.request.RequestInfo;public interface Action { public static final String SUCCESS="1"; /** * 失败信息,返回此信息,如果是节点前附加操作,将会阻止流程提交 */ public static final String FAILURE_AND_CONTINUE = "0"; public String execute(RequestInfo request);}2.自定义Action Demo

代码如下(示例):

package test.service.impl;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import kingdee.bos.webapi.client.K3CloudApiClient;import weaver.general.BaseBean;import weaver.general.Util;import weaver.interfaces.workflow.action.Action;import weaver.soa.workflow.request.*;import weaver.hrm.User;public class DemoAction implements Action { private Log log = LogFactory.getLog(DemoAction.class.getName()); private String p1; // 自定义参数1 private String p2; // 自定义参数2public String getP1() {return p1;}public void setP1(String p1) {this.p1 = p1;}public String getP2() {return p2;}public void setP2(String p2) {this.p2 = p2;}public Log getLog() {return log;}public void setLog(Log log) {this.log = log;}public String execute(RequestInfo requestinfo) {System.out.println("进入Action requestid=" + requestinfo.getRequestid());String requestid = requestinfo.getRequestid();// 请求IDString requestlevel = requestinfo.getRequestlevel();// 请求紧急程度String src = requestinfo.getRequestManager().getSrc(); // 当前操作类型submit:提交/reject:退回String workflowid = requestinfo.getWorkflowid();// 流程路径IDString tablename = requestinfo.getRequestManager().getBillTableName();// 表单主表名称int billid = requestinfo.getRequestManager().getBillid();// 表单数据IDUser usr = requestinfo.getRequestManager().getUser();// 获取当前操作用户对象String requestname = requestinfo.getRequestManager().getRequestname();// 请求标题String remark = requestinfo.getRequestManager().getRemark();// 当前用户提交时的签字意见int formid = requestinfo.getRequestManager().getFormid();// 表单IDint isbill = requestinfo.getRequestManager().getIsbill();// 是否是自定义表单//取主表数据Property[] properties = requestinfo.getMainTableInfo().getProperty();// 获取表单主字段信息for (int i = 0; i < properties.length; i++) {String name = properties[i].getName();// 主字段名称String value = Util.null2String(properties[i].getValue());// 主字段对应的值System.out.println(name + " " + value);log.info(name + " " + value);}// 取明细数据DetailTable[] detailtable = requestinfo.getDetailTableInfo().getDetailTable();// 获取所有明细表if (detailtable.length > 0) {for (int i = 0; i < detailtable.length; i++) {DetailTable dt = detailtable[i];// 指定明细表Row[] s = dt.getRow();// 当前明细表的所有数据,按行存储for (int j = 0; j < s.length; j++) {Row r = s[j];// 指定行Cell c[] = r.getCell();// 每行数据再按列存储for (int k = 0; k < c.length; k++) {Cell c1 = c[k];// 指定列String name = c1.getName();// 明细字段名称String value = c1.getValue();// 明细字段的值System.out.println(name + " " + value);log.info(name + " " + value);}}}}// 调用ERP接口 单元测试代码// public static void main(String[] args) {// String res = "";// Boolean loginResult = false;// K3CloudApiClient client = new K3CloudApiClient("http://119.23.xx.xx/k3cloud/");// try {// loginResult = client.login("612112883069f0","134xxxx0349","JG2xxxxx10",2xxx);// res = client.view("BD_Currency","{\"CreateOrgId\":0,\"Number\":\"PRE001\"}");// } catch (Exception e) {// e.printStackTrace();// }//// System.out.println("test202201174_1" + client);// System.out.println("test202201174_2" + loginResult);// System.out.println(res.getClass().getSimpleName());// System.out.println("test202201174_3" + res);//// }//控制流程流转,增加以下两行,流程不会向下流转,表单上显示返回的自定义错误信息,这个控制只支持节点后附加操作requestinfo.getRequestManager().setMessageid("错误信息编号");//126221requestinfo.getRequestManager().setMessagecontent("返回自定义的错误信息");System.out.println("Action执行完成 传入参数p1=" + this.getP1() + " p2="+ this.getP2());log.info("Action执行完成 传入参数p1=" + this.getP1() + " p2="+ this.getP2());return SUCCESS;// return返回固定返回`SUCCESS`////如果E8的版本是1604,也可以使用下面的代码进行控制,支持节点后、节点前、出口,注意必须返回 FAILURE_AND_CONTINUE;//requestinfo.getRequestManager().setMessagecontent("返回自定义的错误信息");//return FAILURE_AND_CONTINUE;}}3.采购订单的同步

代码如下(示例):

package weaver.interfaces.workflow.action;import com.google.gson.Gson;import com.kingdee.bos.webapi.entity.RepoRet;import kingdee.bos.webapi.client.K3CloudApiClient;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import weaver.general.BaseBean;import weaver.general.Util;import weaver.interfaces.workflow.action.Action;import weaver.soa.workflow.request.*;/** * 自定义采购订单的action接口 */public class ActionERPCGDD extends BaseBean implements Action { @Override public String execute(weaver.soa.workflow.request.RequestInfo requestInfo) { // 日志 Log log = LogFactory.getLog(this.getClass()); // 获取主表信息 Property[] properties = requestInfo.getMainTableInfo().getProperty();/* for (int i = 0; i < properties.length; i++) { String name = properties[i].getName();// 主字段名称 String value = Util.null2String(properties[i].getValue());// 主字段对应的值 log.info(name + " " + value); writeLog(name + " " + value); System.out.println("获取单据头的信息:" + name + " " + value); }*/ String json_main; String json_sublist; String json1 = ""; String json2 = ""; // 获取所有明细表 DetailTable[] detailtable = requestInfo.getDetailTableInfo().getDetailTable(); if (detailtable.length > 0) { for (int i = 0; i < detailtable.length; i++) { DetailTable dt = detailtable[i];// 指定明细表 Row[] s = dt.getRow();// 当前明细表的所有数据,按行存储 for (int j = 0; j < s.length; j++) { Row r = s[j];// 指定行 Cell c[] = r.getCell();// 每行数据再按列存储/* for (int k = 0; k < c.length; k++) { Cell c1 = c[k];// 指定列 String name = c1.getName();// 明细字段名称 String value = c1.getValue();// 明细字段的值 log.info(name + " " + value); writeLog(name + " " + value); System.out.println("获取单据体的信息:" + name + " " + value); }*/ //如果遍历的是第一个单据体 if(i==0) { Double TaxRate =Double.valueOf(c[0].getValue()); json_main = " \n{\n" + " \"FMaterialId\": {\n" + //物料编码 " \"FNumber\": \"" + Util.null2String(c[4].getValue()) + "\"\n" + " },\n" + " \"FQty\": " + Util.null2String(c[14].getValue()) + ",\n" + //采购数量 " \"FTaxPrice\":" + Util.null2String(c[7].getValue()) + ", \n" + //含税单价 " \"F_RCZU_YT\":\"" + Util.null2String(c[13].getValue()) + "\",\n" + //设备型号 用途 " \"FDeliveryDate\":\"" + Util.null2String(c[11].getValue()) + "\",\n" + //订单交货日期 " \"FEntryTaxRate\":" +TaxRate+ ", \n" + //税率 " \"FEntrySettleOrgId\": {\n" + //结算组织 " \"FNumber\": \"" + Util.null2String(c[1].getValue()) + "\"\n" + " }\n" + " },"; json1 += json_main; } //如果遍历第二个单据体 Util.null2String(c[3].getValue())==0 true else if (i==1){ //定义一个变量来控制是否预付款 Boolean flag= null; if (Util.null2String(c[4].getValue()).equals("0")){ flag=true; }else if (Util.null2String(c[4].getValue()).equals("1")) { flag=false; } //应付比例 需要的是小数 Double proportion=Double.valueOf(Util.null2String(c[2].getValue()))/100; json_sublist= " \n{\n" + " \"FISPREPAYMENT\":"+flag+",\n" + //是否预付 布尔值 " \"FRemarks\":\""+ Util.null2String(c[0].getValue()) +"\",\n" + //备注 " \"FYFAMOUNT\":\""+ Util.null2String(c[3].getValue()) +"\",\n" + //应付金额 Integer " \"FYFRATIO\":"+proportion+"\n" + //应付比例(%) Integer " },"; json2 += json_sublist; } } } //获取主单据体的长度 int json1_l=json1.length(); //截取遍历完成的”,“ json1=json1.substring(0,json1_l-1); //获取子单据体的长度 int json2_l=json2.length(); //截取遍历完成的”,“ json2=json2.substring(0,json2_l-1); } String json="{\n" + " \"IsAutoSubmitAndAudit\": \"true\",\n" + //是否自动提交审核 " \"NeedUpDateFields\": [],\n" + //需要更新的字段 " \"NeedReturnFields\": [],\n" + //需返回结果的字段集合 " \"IsDeleteEntry\": true,\n" + //是否删除已存在的分录 " \"SubSystemId\": \"\",\n" + //子系统id " \"IsVerifyBaseDataField\": false,\n" + //是否验证基本数据字段 " \"IsEntryBatchFill\": true,\n" + //是否单据体批量填写 " \"ValidateFlag\": true,\n" + //生效日期 " \"NumberSearch\": true,\n" + //是否用编码搜索基础资料 " \"IsAutoAdjustField\": true,\n" + //是否自动调整字段 " \"InterationFlags\": \"\",\n" + //交互影响的标记 " \"IgnoreInterationFlag\": \"\",\n" + //忽略交互标志 " \"IsControlPrecision\": false,\n" + //是否控制精度 " \"ValidateRepeatJson\": false,\n" + //验证日期重复Json " \"Model\": {\n" + " \"FPurchaseOrgId\": {\n" + //采购组织 " \"FNumber\": \""+Util.null2String(properties[1].getValue())+"\"\n" + " },\n" + " \"FSupplierId\": {\n" + //供应商 " \"FNumber\": \""+Util.null2String(properties[18].getValue())+"\"\n" + " },\n" + " \"F_RCZU_ReDepartment\": {\n" + //需求部门 " \"FNumber\": \""+Util.null2String(properties[2].getValue())+"\"\n" + " },\n" + " \"FPurchaserId\": {\n" + //采购员 " \"FNumber\": \""+2010003036+"\"\n" + " },\n" + " \"FDate\": \""+Util.null2String(properties[6].getValue())+"\",\n" + //采购日期 " \"FBillTypeID\": {\n" + //单据类型 " \"FNumber\": \"CGDD04_SYS\"\n" + " },\n" + " \"F_RCZU_mindep\": {\n" + //归口管理部门 " \"FNumber\": \""+Util.null2String(properties[4].getValue())+"\"\n" + " },\n" + " \"F_RCZU_ECOS\": \""+Util.null2String(properties[0].getValue())+"\",\n" + //E-COS流程编号 " \"FPOOrderFinance\": {\n" + //单据头-财务信息 /* " \"FExchangeRate\": \"1\",\n" + //汇率*/ " \"FPriceTimePoint\": \"1\",\n" + //定价时点 " \"FSettleCurrId\": {\n" + //结算币别 " \"FNumber\": \""+Util.null2String(properties[17].getValue())+"\"\n" + " },\n" + " \"F_RCZU_Assistant\": {\n" + //在建工程名称 " \"FNumber\": \""+Util.null2String(properties[15].getValue())+"\"\n" + " },\n" + " \"FPayConditionId\": {\n" + //付款条件 " \"FNumber\": \""+Util.null2String(properties[7].getValue())+"\"\n" + " }\n" + " },\n" + " \"FPOOrderEntry\": [\n" + //单据体-明细信息 //经过上边遍历,此处获得主明细表的数据 json1+ " \n],\n" + " \"FIinstallment\":[\n" + //付款计划 子单据体 json2+ " \n]\n"+ " }\n" + "}"; // 调用ERP接口 String resultJson = ""; Boolean loginResult = false; //设置初始值默认登录成功 String action=SUCCESS; K3CloudApiClient client = new K3CloudApiClient("http://10.XX.XX.22/k3cloud/"); try { loginResult = client.login("账套ID", "用户名", "密码", 2052); // 判断登录成功就调用ERP相应方法 if (loginResult) { // 具体参数和调用方法参见 https://openapi.open.kingdee.com/ApiCenterDoc resultJson = client.save("PUR_PurchaseOrder", json); }else { System.out.println("loginResult:"+"登录失败"); action=FAILURE_AND_CONTINUE; }/* //用于记录结果 Gson gson = new Gson(); //对返回结果进行解析和校验 RepoRet repoRet = gson.fromJson(resultJson, (Type) RepoRet.class); if (repoRet.getResult().getResponseStatus().isIsSuccess()) { System.out.printf("接口返回结果: %s%n", gson.toJson(repoRet.getResult())); action=SUCCESS; } else { fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus())); action=FAILURE_AND_CONTINUE; }*/ } catch (Exception e) { log.info("错误信息:" + e); e.printStackTrace(); } return action; }}3.ERP对接

云星空文档: 金蝶API文档 或者登录管理员账号,搜索WebAPI;

3.1引入 K3CloudApiClient 包; 3.2实例化 client; 3.3执行登录动作; 3.4判断登录经过为 true , 执行余下动作;

Demo// 查看client.View("BD_Account","{"CreateOrgId":0,"Number":"","Id":""}");// 保存client.Save("BD_Account","{"NeedUpDateFields":[],"NeedReturnFields")// 审核 client.ExcuteOperation("BD_Account","Forbid","{"CreateOrgId":0,"Numbers":[],"Ids":"","PkEntryIds":[],"NetworkCtrl":""}");// 反审client.UnAudit("BD_Account","{"CreateOrgId":0,"Numbers":[],"Ids":"","InterationFlags":"","NetworkCtrl":"","IsVerifyProcInst":""}");... 更多执行参见 金蝶云星空官方文档 https://openapi.open.kingdee.com/ApiCenterDoc或者登录管理员账号,搜索WebAPI总结

以上就是泛微E9对接金蝶云星空的方法,同步表单,注意如果同步多张表单到金蝶ERP中,注意ERP中的表单关联关系。

本文链接地址:https://www.jiuchutong.com/zhishi/294613.html 转载请保留说明!

上一篇:elementUI使用el-upload上传文件写法总结及避坑,上传图片/视频到本地/服务器以及回显+删除(vue中elementui怎么用)

下一篇:php+redis实现注册、删除、编辑、分页、登录、关注等功能示例(php redis常用命令)

  • 高德地图稻穗在哪(高德地图稻花香怎么弄)

    高德地图稻穗在哪(高德地图稻花香怎么弄)

  • oppo的隐私相册在哪里(oppo的隐私相册密码忘记了)

    oppo的隐私相册在哪里(oppo的隐私相册密码忘记了)

  • 苹果13pro像素多少万(iphone13pro照片像素)

    苹果13pro像素多少万(iphone13pro照片像素)

  • 苹果蓝牙耳机怎么重置(苹果蓝牙耳机怎么看电量)

    苹果蓝牙耳机怎么重置(苹果蓝牙耳机怎么看电量)

  • realmex50pro的屏幕刷新率是多少(realmex50pro玩家版的屏幕)

    realmex50pro的屏幕刷新率是多少(realmex50pro玩家版的屏幕)

  • 路由器信号差的原因(路由器信号差的原因及解决办法)

    路由器信号差的原因(路由器信号差的原因及解决办法)

  • 手机屏幕出现黑色扩散的东西是(手机屏幕出现黑色线条)

    手机屏幕出现黑色扩散的东西是(手机屏幕出现黑色线条)

  • 主板电源线怎么拔(主板电源线怎么拆)

    主板电源线怎么拔(主板电源线怎么拆)

  • 怎样设置表格居中对齐(怎样设置表格居中打印文件)

    怎样设置表格居中对齐(怎样设置表格居中打印文件)

  • 报了作业帮想退款怎么办(作业帮申请退款后能取消吗)

    报了作业帮想退款怎么办(作业帮申请退款后能取消吗)

  • 数据元素在计算机中的存储方式(数据元素在计算机存储器内表示时,物理相对位置)

    数据元素在计算机中的存储方式(数据元素在计算机存储器内表示时,物理相对位置)

  • w10蓝牙开关不见了(w10蓝牙开关没了)

    w10蓝牙开关不见了(w10蓝牙开关没了)

  • 支付宝财富栏怎么删除(支付宝财富页面)

    支付宝财富栏怎么删除(支付宝财富页面)

  • 快手附近人是在附近吗(快手附近人在线是真的吗)

    快手附近人是在附近吗(快手附近人在线是真的吗)

  • 键盘fn是什么意思(键盘fn键是什么意思)

    键盘fn是什么意思(键盘fn键是什么意思)

  • 微信最近聊天记录怎么找(微信最近聊天记录删除怎么恢复)

    微信最近聊天记录怎么找(微信最近聊天记录删除怎么恢复)

  • 哔哩哔哩缓存视频没声音(哔哩哔哩缓存视频在手机哪个文件夹)

    哔哩哔哩缓存视频没声音(哔哩哔哩缓存视频在手机哪个文件夹)

  • 抖音时间锁是啥(抖音时间锁是干嘛的)

    抖音时间锁是啥(抖音时间锁是干嘛的)

  • vivox27带不带面部识别(vivox27有面部吗)

    vivox27带不带面部识别(vivox27有面部吗)

  • 为什么别人打电话过来显示未知(为什么别人打电话打不进来)

    为什么别人打电话过来显示未知(为什么别人打电话打不进来)

  • qq仅自己可见怎么取消(qq仅自己可见怎么取消不了)

    qq仅自己可见怎么取消(qq仅自己可见怎么取消不了)

  • 轻颜相机水雾滤镜在哪(轻颜相机 滤镜)

    轻颜相机水雾滤镜在哪(轻颜相机 滤镜)

  • Photoshop如何绘制虚线曲线(photoshop如何绘制迷宫)

    Photoshop如何绘制虚线曲线(photoshop如何绘制迷宫)

  • Mac系统中使用QuickTime Player实现屏幕录像图文教程

    Mac系统中使用QuickTime Player实现屏幕录像图文教程

  • 机票代理是否差额征税
  • 企业所得税季报和年报的区别
  • 未达起征点增值税能否开票
  • 房屋出租收入会计分录
  • 处置长投时其他权益变动
  • 应交税费应交印花税借方有余额
  • 研发技术服务属于什么费用
  • 境内企业向境外放款额度最长放款期限为两年
  • 退休人员怎么缴纳城镇居民医保
  • 背书转让的电子承兑汇票开收据还是发票
  • 12月了还没找到工作怎么办
  • 电子商业承兑汇票
  • 海关增值税进项转出
  • 以前年度漏记一笔短期借款但本金利息支出记账了
  • 行政单位举办活动能发奖奖金吗
  • 印刷专票税率是几个点
  • 国家税务金税四期
  • 9万以下免征增值税政策
  • 适用增值税差额征税的小规模纳税人
  • 小规模纳税人零申报什么意思
  • 软件合同审核要点
  • 跨年发票如何入账小企业会计准
  • 汇总记账凭证账务处理程序的优点包括
  • 银行没有流水怎么开证明
  • 企业收到党建经费 所得税
  • 对子公司计提减值准备影响合并利润吗
  • 空调安装费开票属于什么类
  • 4s店贷款服务费是什么
  • 应付职工薪酬在借方是什么意思
  • 建筑公司收到预收款要交税吗?
  • 支付商品展览费计入
  • 什么情况转账会延迟2天
  • 无线路由器如何桥接wifi信号
  • 应收存款利息计入什么科目
  • 最多人用的操作系统
  • 企业中秋晚会主持词
  • fastadmin 插件开发
  • vue app打包
  • 冬日里的科赫尔湖,德国巴伐利亚州 (© Reinhard Schmid/eStock Photo)
  • 短期借款产生的利息进入总账吗
  • php中的异常和错误怎么写
  • 营业税金及附加税率
  • 国有资产无偿划转的会计处理
  • 复核人和收款人一样了怎么办
  • wndgui降级
  • 分页 php
  • 织梦DedeCMS默认文件夹重命名
  • 酒店周转材料怎么摊销
  • 小规模纳税人现代服务税率
  • 新会计准则折旧年限
  • 企业所得税和个人所得税都要交吗
  • 职工报销的医药费是什么
  • 公司购买办公用品会计分录
  • 其他应收款在现金流量表怎么填
  • 收到残保金退税现金流
  • 影响企业所得税的因素
  • 收回应收账款账面余额
  • 计提了坏账准备就要计算递延所得税资产
  • 营业外支出科目核算的内容
  • 扣非净利润占比多少合理
  • 职工体检可以从工会经费支出
  • 有销项税额转出吗
  • 研发费用占销售的比例
  • iis怎么用
  • ubuntu16连接wifi步骤
  • Ubuntu 16.04 Server Edition 英文版安装教程
  • mom.exe是什么程序
  • win7系统打印机共享给win10
  • opengl(mesa) for ubuntu14.04
  • shell脚本转换为exe
  • node.js ejs
  • Android dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent详解
  • js模拟点击alert()确定
  • 深入理解innodb
  • 上海市网上税务局登录
  • 运输服务费税率9%还是6%
  • 纳税人总机构和分机构不在同一县怎么办
  • 税务稽查审理的基本原则
  • 农村墓地规划土地使用程序和规定
  • 国税合并地税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设