产生财务计帐周期

原文:产生财务计帐周期

先看看实现的结果,可以By月份和季度,可以调整会计开始日期。

前端略去,只分享MS SQL存储过程:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      Insus.NET
-- Blog:        https://insus.cnblogs.com
-- Create date: 2019-07-02
-- Update date: 2019-07-02
-- Description: 动态产生会计周期
-- =============================================
CREATE PROCEDURE [dbo].[usp_AccountingPeriod_Select_GeneratePeriodDate]
(
    @Fiscal_Year SMALLINT,
    @PeriodDateType NVARCHAR(1),
    @Start1 DATETIME
)
AS
BEGIN
    IF OBJECT_ID(‘#Period_Date‘) IS NOT NULL
        DROP TABLE #Period_Date

    CREATE TABLE #Period_Date(
        [Fiscal_Year] [smallint] NOT NULL,
        [Start1] [datetime] NULL,
        [Start2] [datetime] NULL,
        [Start3] [datetime] NULL,
        [Start4] [datetime] NULL,
        [Start5] [datetime] NULL,
        [Start6] [datetime] NULL,
        [Start7] [datetime] NULL,
        [Start8] [datetime] NULL,
        [Start9] [datetime] NULL,
        [Start10] [datetime] NULL,
        [Start11] [datetime] NULL,
        [Start12] [datetime] NULL,
        [Start13] [datetime] NULL,
        [End1] [datetime] NULL,
        [End2] [datetime] NULL,
        [End3] [datetime] NULL,
        [End4] [datetime] NULL,
        [End5] [datetime] NULL,
        [End6] [datetime] NULL,
        [End7] [datetime] NULL,
        [End8] [datetime] NULL,
        [End9] [datetime] NULL,
        [End10] [datetime] NULL,
        [End11] [datetime] NULL,
        [End12] [datetime] NULL,
        [End13] [datetime] NULL
    )    

    IF @Fiscal_Year >= YEAR([dbo].[svf_LowDate]()) AND @Fiscal_Year < YEAR([dbo].[svf_HighDate]())
    BEGIN
        IF @Start1 IS NULL
            SET @Start1 = CONVERT(DATETIME, CONVERT(NVARCHAR(4),@Fiscal_Year) + ‘-01-01‘, 121)
        INSERT INTO  #Period_Date ([Fiscal_Year]) VALUES (@Fiscal_Year)    

        IF @PeriodDateType = N‘M‘
        BEGIN
            DECLARE @m TINYINT = 1,@ms TINYINT = 12
            WHILE @m <= @ms
            BEGIN
                DECLARE @m_start_field NVARCHAR(128) = N‘[Start‘+ CONVERT(NVARCHAR(2), @m) +‘]‘
                DECLARE @m_start_value DATETIME = DATEADD(M,@m -1,@Start1)    

                DECLARE @m_end_field NVARCHAR(128) = N‘[End‘+ CONVERT(NVARCHAR(2), @m) +‘]‘
                DECLARE @m_end_value DATETIME = DATEADD(DAY,-1, DATEADD(M,@m,@Start1))    

                DECLARE @s_sql NVARCHAR(4000) = N‘
                UPDATE #Period_Date SET ‘+ @m_start_field +‘ = ‘‘‘+ CONVERT(NVARCHAR(40), @m_start_value ) +‘‘‘,
                                        ‘+ @m_end_field +‘ = ‘‘‘+ CONVERT(NVARCHAR(40), @m_end_value ) +‘‘‘
                WHERE [Fiscal_Year] = ‘‘‘+ CONVERT(NVARCHAR(4),@Fiscal_Year) +‘‘‘‘
                EXECUTE sp_executesql @s_sql
                SET @m = @m + 1
            END
        END

        IF  @PeriodDateType = N‘Q‘
        BEGIN
        DECLARE @q TINYINT = 1,@qs TINYINT = 4
            WHILE @q <= @qs
            BEGIN
                DECLARE @q_start_field NVARCHAR(128) = N‘[Start‘+ CONVERT(NVARCHAR(2), @q) +‘]‘
                DECLARE @q_start_value DATETIME = DATEADD(QUARTER,@q -1,@Start1)    

                DECLARE @q_end_field NVARCHAR(128) = N‘[End‘+ CONVERT(NVARCHAR(2), @q) +‘]‘
                DECLARE @q_end_value DATETIME = DATEADD(DAY,-1, DATEADD(QUARTER,@q,@Start1))    

                DECLARE @q_s_sql NVARCHAR(4000) = N‘
                UPDATE #Period_Date SET ‘+ @q_start_field +‘ = ‘‘‘+ CONVERT(NVARCHAR(40), @q_start_value ) +‘‘‘,
                                        ‘+ @q_end_field +‘ = ‘‘‘+ CONVERT(NVARCHAR(40), @q_end_value ) +‘‘‘
                WHERE [Fiscal_Year] = ‘‘‘+ CONVERT(NVARCHAR(4),@Fiscal_Year) +‘‘‘‘
                EXECUTE sp_executesql @q_s_sql
                SET @q = @q + 1
            END
        END
    END

    SELECT [Fiscal_Year],
            [Start1],[Start2],[Start3],[Start4],
            [Start5],[Start6],[Start7],[Start8],
            [Start9],[Start10],[Start11],[Start12],
            [Start13],
            [End1],[End2],[End3],[End4],
            [End5],[End6],[End7],[End8],
            [End9],[End10],[End11],[End12],
            [End13]
    FROM #Period_Date

END

Source Code

原文地址:https://www.cnblogs.com/lonelyxmas/p/12204162.html

时间: 2024-11-01 09:22:21

产生财务计帐周期的相关文章

金蝶财务软件帐套属性设置保存和帐套启用报错的解决方法

金蝶财务软件新建立帐套,在帐套属性设置完毕保存提示如下图的提示,所以帐套也就启用不了,在启用的时候也会提示下图的错误: 查找原因的时候,一直提示"NT AUTHORITY\NETWORK SERVICE"登陆失败,就突然想到了,是不是登陆数据库的时候,默认以管理员登陆,管理员能登陆成功,是不是得把这个用户加入到管理员组才可以呢,结果就试了下,最后发现还真是这个情况,把这个用户加入管理员后,帐套启用成功.以下是用户加入管理员组的步骤,可以参考以下: 进入计算机管理 找到组 双击管理员组

“记计帐”需求分析

视频链接:http://v.youku.com/v_show/id_XMTU0NDQzOTQ0OA==.html 我们的产品记计帐是为了解决大学生月初有钱,月末没钱花的问题.他们需要树立合理消费观.但是现有的方案并没有很好的解决这些需求.我们利用月前规划,超额提醒的方法,使用户明确当前消费信息,并合理进行下一步消费计划.远远超过竞争对手随手记,timi记账等记账类软件.同时,我们通过微博,微信,贴吧等方法能很快的让大部分用户知道我们的产品并进一步传播.

Runner之记计帐项目的典型用户和用户场景

项目任务:编写日历选择界面和查明细界面(查看某一天的具体收支出状况) 1.背景 ①典型用户 (1)姓名:张云 (2)年龄:17~23 (3)收入:家长给的生活费与自己兼职(1500元/月) (4)代表的用户在市场上的比例和重要性:比例很大,此软件就是面向大学生的 (5)使用这个软件的典型场景:吃饭后,逛超市,逛淘宝等一切消费行为之后 (6)使用本软件/服务的环境:android手机 (7)生活/工作情况:在大学学习 (8)知识层次和能力(教育程度,对电脑.万维网的熟悉程度):本科.专科 (9)用

金蝶——“免、抵、退”税操作说明及帐务处理

“免.抵.退”税操作说明及帐务处理 出口货物“免.抵.退”税 政策基本介绍 一.“免.抵.退”税基本内容 实行“免.抵.退”税管理办法的“免”税,是指对生产企业出口的自产货物,免征本企业生产销售环节的增值税:“抵”税,是指生产 企业出口的自产货物所耗用原材料.零部件等应予退还的进项税额,抵顶内销货物的应纳税款:“退”税,是指生产企业出口的自产货物 在当期内因应抵顶的进项税额大于应纳税额而未抵顶完的税额,经主管退税机关批准后,予以退税. 二.“免.抵.退”税管理办法的实施范围 (一)生产企业自营出

记计账需求分析

视频链接:http://v.youku.com/v_show/id_XMTU0NDQzOTQ0OA==.html 我们的产品记计帐是为了解决大学生月初有钱,月末没钱花的问题.他们需要树立合理消费观.但是现有的方案并没有很好的解决这些需求.我们利用月前规划,超额提醒的方法,使用户明确当前消费信息,并合理进行下一步消费计划.远远超过竞争对手随手记,timi记账等记账类软件.同时,我们通过微博,微信,贴吧等方法能很快的让大部分用户知道我们的产品并进一步传播.

智慧先行,驭财有道!2018 SAP 智慧财务研讨会精彩回顾

智慧时代骤然到来!众多身处关键业务部门的财务领导们正在思考:如何在业务数字化的新常态下进一步实现智能化,成为引领企业运转绩效提升的先锋:同时,有效利用自身的数据资产,更快速地取得预期成果,降低风险. SAP 致力于帮助每位客户在数字化道路上不断精进,成为智慧企业,实现最佳运营,并最终在激烈的行业竞争中保持领先优势.2018年,SAP S/4HANA 财务解决方案推出新亮点,在以上的各个方面为客户提供了积极有效的应对方案,用创新的技术塑造高效的工作方式,让 CFO 成为引领企业变革的重要力量! 1

RBAC (基于角色的访问控制)

基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注.在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限.这就极大地简化了权限的管理.在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色.角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收.角色与角色的关系可以建立起来以囊括更广

项目实施全过程总结【原创】--菜鸟项目经理的项目总结

关于XXX软件项目实施过程总结 XXX软件XXXX年XX月XX日验收完成,在此对项目实施过程做一个总结,以方便我们在以后的项目开发中来更好的实施项目,更好的规范项目过程管理以及提高工作效率,从而创造更多效益.总结内容包含以下三个部分:项目回顾.项目总结以及后续计划. 1.   项目回顾 项目回顾主要是对项目历程(时间),项目人工(人力),项目成本(费用),项目质量几个方面进行说明. 1.1    项目历程 序号 阶段名称 执行说明 完成时间 0 方案研究   1 项目投标立项   2 中标通知书

ECOMP Architecture

摘要:       AT&T的Domain 2.0 (D2)计划聚焦于运用云技术(AT&T 集成云,the AT&T Integrated Cloud – AIC)和网络虚拟化技术来提供服务,以降低基本建设与运营费用,显著提升运营的自动化能力.ECOMP软件平台在D2环境下为承载级实时负载提供独立于产品/服务的设计.创建和生命周期管理能力.在实现AT&T D2的主要目标方面,ECOMP具有关键作用.ECOMP通过快速地部署新业务(由AT&T或第三方创建).创建云消费