SAP CAP篇十五:写个ERP的会计系统吧,Part II

本文目录

  • 本系列文章
  • 目标
  • 开发步骤
    • 数据库表设计
    • 初始数据
      • 初始数据:AccountCategories
      • 初始数据:AccountUsages
      • 初始数据:ChartOfAccounts
      • 初始数据:AccountSubjects
    • Service 定义
    • 生成Fiori App
    • App运行

本系列文章

SAP CAP篇一: 快速创建一个Service,基于Java的实现
SAP CAP篇二:为Service加上数据库支持
SAP CAP篇三:定义Model
SAP CAP篇四:为CAP添加Fiori Elements程序(1)
SAP CAP篇五:为CAP添加Fiori Elements程序(2)
SAP CAP篇六:为CAP添加Fiori Elements程序(3)
SAP CAP篇七:为CAP添加Fiori Launchpad入口 (Sandbox环境)
SAP CAP篇八:为CAP添加App Router并支持Fiori Launchpad (Sandbox环境)
SAP CAP篇九:升级为SAP CDS 7.0, CAP Java 2以及Spring Boot 3
SAP CAP篇十:理解Fiori UI的Annoation定义
SAP CAP篇十一:支持Media Object:图片、附件等
SAP CAP篇十二:AppRouter 深入研究
SAP CAP篇十三:拥抱TypeScript
SAP CAP篇十四:写个ERP的会计系统吧,Part I

目标

基于前一篇的基础继续开发ERP系统。

本篇侧重于会计科目表,同时也会更新之前的公司主数据

会计科目表是基于会计准则的。譬如US GAAP,IFRS以及我国国内的企业会计准则。会计科目表由会计科目项组成。

开发步骤

数据库表设计

从数据库层面来定义会计科目表。

namespace finsys.db;using {sap,
} from '@sap/cds/common';@cds.odata.valuelist
entity AccountCategories : sap.common.CodeList {key ID : Integer;
}@cds.odata.valuelist
entity AccountUsages : sap.common.CodeList {key ID : Integer;
}entity ChartOfAccounts : sap.common.CodeList {key ID    : String(20);Accounts : Association to many AccountSubjectson Accounts.ChartOfAccounts = $self;
}entity AccountSubjects : sap.common.CodeList {key ID    : String(20);ChartOfAccounts : Association to one ChartOfAccounts not null;ParentID : String(20);Category : Association to one AccountCategories not null;Level    : Integer;
}

同时,更新Companies的数据:

@cds.odata.valuelist
entity Companies: managed, cuid, sap.common.CodeList {    ParentCompany: Association to one Companies;    Currency: Currency;Country: Country;Address: String(100);Deleted: Boolean;ChartOfAccounts: Association to one ChartOfAccounts not null;
}

其中:

  • AccountCategories:科目的属性;
  • AccountUsages:科目使用场景;
  • ChartOfAccounts: 会计科目表;
  • AccountSubjects:会计科目信息;
  • Companies:公司主数据,增加了Deleted属性用来表示该主数据是不是已经被删除,另外增加了ChartOfAccounts的引用。

初始数据

再次运行下述命令来插入初始数据:

cds add data

该命令会自动在db文件夹下添加data文件夹,并会自动跳过已维护了数据库csv文件。

初始数据:AccountCategories

文件finsys.db-AccountCategories.csv

ID;name;descr
1;资产类科目;资产类科目
2;负债类科目;负债类科目
3;共同类科目;共同类科目
4;所有者权益类科目;所有者权益类科目
5;成本类科目;成本类科目
6;损益类科目;损益类科目

初始数据:AccountUsages

文件finsys.db-AccountUsages.csv

ID;name;descr
1;银行专用;银行专用
2;证券专用;证券专用
3;金融共用;金融共用
4;保险专用;保险专用
5;银行债券共用;银行债券共用
6;农业专用;农业专用

初始数据:ChartOfAccounts

文件finsys.db-ChartOfAccounts.csv

ID;name;descr
2013;企业会计准则(2013);企业会计准则(2013)

初始数据:AccountSubjects

文件finsys.db-AccountSubjects.csv

ID;ParentID;Level;Category_ID;name;descr;ChartOfAccounts_ID
1001;;1;1;库存现金;库存现金;2013
1002;;1;1;银行存款;银行存款;2013
1003;;1;1;存放中央银行款项;存放中央银行款项;2013
1011;;1;1;存放同业;存放同业;2013
1012;;1;4;其他货币资金;其他货币资金;2013
101201;1012;2;1;外埠存款;外埠存款;2013
101202;1012;2;1;银行本票存款;银行本票存款;2013
101203;1012;2;1;银行汇票存款;银行汇票存款;2013
101204;1012;2;1;信用卡存款;信用卡存款;2013
101205;1012;2;1;信用证保证金存款;信用证保证金存款;2013
101206;1012;2;1;存出投资款;存出投资款;2013
1021;;1;1;结算备付金;结算备付金;2013
1031;;1;1;存出保证金;存出保证金;2013
1101;;1;1;交易性金融资产;交易性金融资产;2013
110101;1101;2;1;本金;本金;2013
11010101;110101;3;1;股票;股票;2013
11010102;110101;3;1;债券;债券;2013
11010103;110101;3;1;基金;基金;2013
11010104;110101;3;1;权证;权证;2013
11010105;110101;3;1;其他;其他;2013
110102;1101;2;1;公允价值变动;公允价值变动;2013
11010201;110102;3;1;股票;股票;2013
11010202;110102;3;1;债券;债券;2013
11010203;110102;3;1;基金;基金;2013
11010204;110102;3;1;权证;权证;2013
11010205;110102;3;1;其他;其他;2013

具体可以参阅财政部的企业会计准则附录中的会计科目编码设计。
限于篇幅,本文不会贴出全部会计科目的编码。

Service 定义

更新FinanceService,添加如下Entities。

    @readonlyentity AccountCategories as projection on dbchartofaccount.AccountCategories;@readonlyentity AccountUsages as projection on dbchartofaccount.AccountUsages;@readonlyentity ChartOfAccounts as projection on dbchartofaccount.ChartOfAccounts;@readonlyentity AccountSubjects as projection on dbchartofaccount.AccountSubjects;

生成Fiori App

通过Fiori: Open Application Geneator来创建Fiori App。

Application Info
添加基于AccountSubjectsTable
Add Table Section

App运行

App运行如下,没有Column定义:
Screenshot 1
修改annotations.cds来添加Column定义:

annotate service.AccountSubjects with @(UI.LineItem #AccountSubjects : [{$Type : 'UI.DataField',Label : 'ID',Value : ID,},{$Type : 'UI.DataField',Label : 'Level',Value : Level,},{$Type : 'UI.DataField',Label : 'Name',Value : name,},{$Type : 'UI.DataField',Label : 'Description',Value : descr,},{$Type : 'UI.DataField',Label : 'ParentID',Value : ParentID,},{$Type : 'UI.DataField',Label : 'Category',Value : Category.name,},]
);

再次运行该App:
ScreenShot 2

后续的文章里面,会继续对这个App进行进一步增强。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/543635.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

torch.backends.cudnn.benchmark 作用

相关参数 torch.backends.cudnn.enabled torch.backends.cudnn.benchmark torch.backends.cudnn.deterministictorch.backends.cudnn.benchmark True:将会让程序在开始时花费一点额外时间,为整个网络的每个卷积层搜索最适合它的卷积实现算法&#xff0c…

第五十九回 公孙胜芒砀山降魔 晁天王曾头市中箭-飞桨自然语言处理套件PaddleNLP初探

公孙胜献出八卦阵,宋江用八员大将守阵。项充李衮进入阵里,被抓住了。宋江说久闻大名,来梁山吧。两人说誓当效力到死,希望能先放我们两个回去把樊瑞带来一起。见到樊瑞后把宋江讲义气一说,樊瑞说不可逆天,于…

硬件工程师入门基础知识(零)心法篇

硬件工程师入门基础知识(零)心法篇 1.为什么要当硬件工程师?2.什么是硬件工程师?3.怎么成为合格的硬件工程师?4.优秀的硬件工程师需要具备什么技能和品质?5.硬件工程师的成长路径?6.硬件工程师还有哪些职业可能?1.为什么要当硬件工程师? 很多快要毕业或者刚毕业的同学…

【leetcode-53最大子数组和】

题目: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] …

NCV8705MTADJTCG稳压器芯片中文资料规格书PDF数据手册引脚图图片价格功能

产品概述: NCV8705 是一款低噪音、低功耗和低泄漏线性电压稳压器。该器件具有卓越的噪音和 PSRR 规格,适用于使用视频接收器、成像传感器、音频处理器或需要外部洁净电源的任何部件的产品。NCV8705 使用创新的自适应接地电流电路 可确保轻负载调节下的超…

FFmepg--视频编码流程--yuv编码为h264

文章目录 基本概念流程api核心代码 基本概念 YUV格式:是一种颜色编码方式,YUV分别为三个分量:‘Y’是明亮度,也就是灰度值;‘U’和‘V’是色度 YUV格式的分类: planar的YUV格式:先存储planar的…

3.Redis命令

Redis命令 Redis 根据命令所操作对象的不同, 可以分为三大类: 对 Redis 进行基础性操作的命令,对 Key 的操作命令,对 Value 的操作命令。 1.1 Redis 首先通过 redis-cli 命令进入到 Redis 命令行客户端,然后再运行下…

Unity Live Capture 中实现面部捕捉同步模型动画

Unity Face Capture 是一个强大的工具,可以帮助你快速轻松地将真实人脸表情捕捉到数字模型中。在本文中,我们将介绍如何在 Unity Face Capture 中实现面部捕捉同步模型动画。 安装 |实时捕获 |4.0.0 (unity3d.com) 安装软件插件 安装 Live Capture 软件…

openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优

文章目录 openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优244.1 统计信息调优244.1.1 统计信息调优介绍244.1.2 实例分析:未收集统计信息导致查询性能差 openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优…

ida pro 查看简易 Android .so 文件伪代码

参考: IDA Pro 反汇编器使用详解,适合逆向新人和老人的权威指南(一)-CSDN博客 注意,这篇只是我的简单记录,要学习详细使用,请参考其他大佬的。 让我们打开神器 IDA 直接把需要的文件拖到 IDA …

服务器部署项目总结

服务器部署项目总结 yzh 24/3/15 前言 本着一定成功的信心去部署前后端分离的项目,结果却“路遇坎坷”😭😭😭😭 代码和程序总是无情的啊,当然,也是因为一段时间没学习对于知识模糊了&#xff…

页面配置、网络数据请求

1. 页面配置文件的作用 小程序中,每个页面都有自己的 .json 配置文件,用来对当前页面的窗口外观、页面效果等进行配置。 2. 页面配置和全局配置的关系 小程序中, app.json 中的 window 节点,可以全局配置小程序中每个页面的窗口…