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

本文目录

  • 本系列文章
  • 目标
  • 开发步骤
    • 数据库表设计
      • 借贷
        • 初始化数据
      • 会计凭证
    • Service 定义
    • 生成Fiori App
    • 更新CDS Annotation
    • 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
SAP CAP篇十五:写个ERP的会计系统吧,Part II
SAP CAP篇十六:写个ERP的会计系统吧,Part III

目标

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

本篇侧重于会计凭证,会计凭证是会计事务在系统的承载。

会计凭证的创建——需要符合基本的会计等式,即“有借必有贷,借贷必相等”。从业务意义上来说,会计凭证是企业各种报表的基础。

开发步骤

数据库表设计

从数据库层面来定义会计凭证。

借贷

借贷的定义DebitCreditIndicator如下:

type DebitCreditIndicatorEnum : String(1) enum { debit = 'D';creidt = 'C';
}@cds.odata.valuelist
entity DebitCreditIndicators: sap.common.CodeList {key DebitCreditIndicator: DebitCreditIndicatorEnum;
}
初始化数据

db文件夹下,创建DebitCreditIndicator.csv用以在初始化数据。

DebitCreditIndicator;name
D;Debit
C;Credit

会计凭证

会计凭证的如下:

entity Documents: managed {key ID: Int32;Company: Association to one dbcompany.Companies not null;PostingDate: Date @cds.on: {insert: $now, update: $now };    Description: String(100);Items    : Composition of many {key ID:   Int16;DebitCreditIndicator: Association to one DebitCreditIndicators not null;Account: Association to one dbaccount.Accounts not null;Amount: Decimal(15, 2) not null;Currency: Currency not null;Description: String(100);};
}

Service 定义

更新FinanceService,添加如下Entities。

@readonly
entity DebitCreditIndicators as projection on dbdocument.DebitCreditIndicators;

这里,用@readonly限制借贷定义为只读。

entity Documents as projection on dbdocument.Documents;

同时,需要指定DocumentsOdata.draft.enabled,这样,Fiori Elements会自动启用编辑功能:Create, Update。

annotate FinanceService.Documents with @odata.draft.enabled;

生成Fiori App

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

Entity Selection

查看生成的App的Information:

Application Information

更新CDS Annotation

annotate service.Documents with @(UI.SelectionFields: [Company_ID,PostingDate],UI.LineItem : [{$Type : 'UI.DataField',Label : 'ID',Value : ID,},{$Type : 'UI.DataField',Label : 'Company',Value : Company_ID,},{$Type : 'UI.DataField',Label : 'Posting Date',Value : PostingDate,},{$Type : 'UI.DataField',Label : 'Description',Value : Description,},]
);
annotate service.Documents with @(UI.FieldGroup #GeneratedGroup1 : {$Type : 'UI.FieldGroupType',Data : [{$Type : 'UI.DataField',Label : 'ID',Value : ID,},{$Type : 'UI.DataField',Label : 'Company',Value : Company_ID,},{$Type : 'UI.DataField',Label : 'PostingDate',Value : PostingDate,},{$Type : 'UI.DataField',Label : 'Description',Value : Description,},],},UI.Facets : [{$Type : 'UI.ReferenceFacet',ID : 'GeneratedFacet1',Label : 'General Information',Target : '@UI.FieldGroup#GeneratedGroup1',},]
);

App运行

App Running

后续的文章里面,将开始定义凭证。

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

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

相关文章

最新Zibll子比主题V7.1版本源码 全新推出开心版

源码下载地址:Zibll子比主题V7.1.zip

顺序表的基本操作

目录 命名规范 顺序表的定义 静态顺序表 动态顺序表 顺序表的基本操作 顺序表的初始化 顺序表的销毁 顺序表的打印 顺序表的容量检查 指定位置插入元素 指定位置删除元素 查找元素 在尾部添加一个元素 删除最后一个元素 在开头添加一个元素 删除首元素 命名规范…

4、jvm-垃圾收集算法与垃圾收集器

垃圾收集算法 分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。 比如…

AI在运维实践中的价值提升

在2024年的AI赛道上,利用大数据 、机器学习算法、人工智能来改善运维效率已成为软件运营商发展的新主张,通过AI在运维流程的洞察、决策和执行,从而提升效率、减少故障时间,优化用户体验。通过分析大量数据来识别趋势和模式&#x…

海山数据库(He3DB)原理剖析:浅析Doris跨源分析能力

Doris湖仓分析背景: Doris多数据源功能演进 Doris的生态近年来围绕湖仓分析做了较多工作,Doris一直在积极拓宽大数据生态的OLAP分析市场,Doris2.0之后为了满足湖仓分析场景,围绕multi-catalog、数据缓存、容错、pipeline资源管理…

Facebook广告投放数据API对接流程

说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、需求背景 App在Facebook、Google等巨头进行广告投放,想要拿到实时广告投放效果数据,如曝光、点击、花费、触…

VM虚拟机Linux系统Redhat7.4版本进行网络配置

日常中自己搭建的虚拟机一般用到两种网络方式,第一种是仅主机模式、还有一种是NAT模式。 1、仅主机模式:可以和自己本地电脑,或者虚拟机和虚拟机之间进行网络通信,相当于一个局域网,是不能连接外网的。 2、NAT模式&a…

26、链表-环形链表II

思路: 这道题就是判断链表中是否有环,首先使用集合肯定可以快速地解决,比如通过一个set集合遍历,如果遍历过程中有节点在set中已经存在那么说明存在环。返回这个节点即可 第二种方式就是通过快慢指针方式寻找环。如何做呢&#xf…

Unity 获取RenderTexture像素颜色值

拿来吧你~ 🦪功能介绍🌭Demo 🦪功能介绍 💡不通过Texture2D 而是通过ComputerShader 提取到RenderTexture的像素值,效率有提升哦! 💡通过扩展方法调用,方便快捷:xxxRT.G…

DRF多表关联的序列化和反序列化

DRF多表关联的序列化和反序列化 目录 DRF多表关联的序列化和反序列化序列化定制字段source一对多的序列化 多表关联的序列化方式1:在表模型中定义方法方式2:定制返回格式SerializerMethodField方式3:子序列化 多表关联的反序列化反序列化保存…

安达发|电子行业智能生产排程计划的实施

随着科技的不断发展,电子行业正面临着巨大的变革。在这个过程中,智能生产排程计划的实施成为了提高生产效率、降低成本的关键因素。本文将详细介绍电子行业智能生产排程计划的实施方法、优势以及可能遇到的挑战。 一、实施方法 1. 数据采集与分析&#x…

0101tomcat部署war访问mysql失败-容器间通信-docker项目部署

文章目录 一、简介二、部署1、mysql数据迁移2、docker部署redis3、docker部署tomcat并运行war包 三、报错四、解决1 分析2 解决 结语 一、简介 最近参与开发一个项目,其中一部分系统需要迁移。从阿里云迁移到实体服务器,使用docker部署。系统使用Java语…