日结账单和周结账单

  一,结账

      在说周结账单和日结账单之前,得先做好结账的工作。在汇总里面,有个结账,其实这个结账的代码很简单,只是两个Update,值要把结账状态的标记改变一下就可以。这个结账好像平常都会有个老师负责收取充值的现金,也负责退卡的现金,在结他的账的时候,他要把手里的钱都上交。

       周结账单和日结账单是对所有金额的汇总,包括学生的消费金额,而由于在上机时的消费金额是在下机时自动扣除的,所以,不涉及到现金的问题。但是,虽然这个金额不反应在结账里面,但是却反应在周结账单和日决诶账单里面。

   

 '先判断所有内容是否都为0,如果都为0,那么,禁止结账
    If (Trim(txtReturnCardNum.Caption) = "0" And Trim(txtRechargeRmb.Caption) = "0" And Trim(txtReturnRmb.Caption) = "0" And Trim(txtAllRmb.Caption) = "0") Then
        MsgBox "操作员 " + " " + Trim$(cmbUserId.Text) + " 账目已全部结完!", vbOKOnly + vbInformation, "提示"
        Exit Sub
    Else    '如果有信息

        '将“未结账”的标记改为“已结账”的标记

        SQL = "update TeaReturnCard set 结账状态='已结账' where 退卡教师='" & Trim(cmbUserId.Text) & "'"
        Set Rst = ExecuteSQL(SQL, strMsg)

        SQL = "update TeaRechargeInfo set 结账状态='已结账' where 充值教师='" & Trim(cmbUserId.Text) & "'"
        Set Rst = ExecuteSQL(SQL, strMsg)

        MsgBox "结账成功!", vbOKOnly + vbInformation, "提示"
   End If
     

二,日结账单

在计算日结账单时,我采取的方法是:在昨日账单的基础上结账。

 

 '在窗体加载时,写日结账单表
    '在写日结账单表之前,先判断今天是否已经写过日结账单表了
'如果写过日结账单表了,那么,就删除今天写过的那条,重写今天的日结账记录
'如果,没有,就不重写记录

'日结账单中的计算
    '昨日充值卡中余额=读取昨天的日结账单的金额总和
    '充值金额=今天充值表中所有的钱
    '消费金额=今天学生上机表中,所有的消费金额相加
    '退还金额=今天教师退卡表里面,已经(结过账)的退卡总金额
    '金额总和=昨日卡中金额+充值金额-消费金额-退还金额
    '日期时间是今天的日期时间

    '判断今天是否已经结果账了
    SQL = "select * from dayaccount where 日期='" & Format(GetSqlTime, "yyyy-mm-dd") & "'" '从日结账单表里选择今天的结账记录
    Set Rst = ExecuteSQL(SQL, strMsg)

    If Not (Rst.BOF And Rst.EOF) Then    '今天已经结过账了,即,这不是今天第一次结账

        '先删除今天结过的账单
        SQL = "delete from dayaccount where 日期='" & Format(GetSqlTime, "yyyy-mm-dd") & "'"
        Call ExecuteSQL(SQL, strMsg)

        '然后根据昨天的结账记录重新结账

        '此处因为今天已经结果账了,也可以不上去今天的结账记录,在今天的记录上重新计算,然后用update更新一下就行
    End If

    '计算昨日充值卡中的余额
        '昨日充值卡中的余额=日结账单表中金额总和
        SQL = "select sum(金额总和) from dayaccount where 日期='" & Format(GetSqlTime - 1, "yyyy-mm-dd") & "'"
        Set Rst = ExecuteSQL(SQL, strMsg)

        If IsNull(Rst.Fields(0)) = True Then
            YesDayRMB = 0
        Else
            YesDayRMB = Trim(Rst.Fields(0))
        End If

        '计算充值金额(充值金额是教师充值信息表里面,教师今天充值的金额,并且这些金额都已经结果账了,如果今天充值了某些金额,但是没有结账,则在计算日结账单时,不计入)
        SQL = "select sum(充值金额) from tearechargeinfo where 日期='" & Format(GetSqlTime, "yyyy-mm-dd") & "' and 结账状态='已结账'"
        Set Rst = ExecuteSQL(SQL, strMsg)

        If IsNull(Rst.Fields(0)) = True Then
            RechargeRmb = 0
        Else
            RechargeRmb = Trim(Rst.Fields(0))   '充值金额赋值
        End If

        '计算消费金额
        SQL = "select sum(消费金额) from stushangji where 上机日期='" & Format(GetSqlTime, "yyyy-mm-dd") & "'"
        Set Rst = ExecuteSQL(SQL, strMsg)

        If Rst.EOF And Rst.BOF Then
            CostRMB = 0
        Else
            CostRMB = Trim(Rst.Fields(0))
        End If

        '计算退还金额
        SQL = "select sum(退卡金额) from teareturncard where 退卡日期='" & Format(GetSqlTime, "yyyy-mm-dd") & "' and 结账状态='已结账'"
        Set Rst = ExecuteSQL(SQL, strMsg)

        If IsNull(Rst.Fields(0)) = True Then
            RetRMB = 0
        Else
            RetRMB = Trim(Rst.Fields(0))
        End If

        '计算金额总和=昨日卡中金额+充值金额-消费金额-退还金额
        AllRMB = YesDayRMB + RechargeRmb - CostRMB - RetRMB

        '插入日结账单表
        SQL = "insert into DayAccount values('" & YesDayRMB & "','" & RechargeRmb & "','" & CostRMB & "','" & RetRMB & "','" & AllRMB & "','" & Format(GetSqlTime, "yyyy-mm-dd") & "','" & Format(GetSqlTime, "hh-mm-ss") & "')"
        Call ExecuteSQL(SQL, strMsg)
        

  三,周结账单

       周结账单是对从BeginTime到EndTime的金额的汇总,每次在需要周结账单时才插入,一旦不需要,就删除掉。可以说,周结账单是对这段是间的日结账单的汇总。

   

   '每次都先删除周结账单里的数据,然后重新写入
    SQL = "delete from weekaccount "
    Call ExecuteSQL(SQL, strMsg)

'将日结账单里的内容汇总后,填入周结账单,周结账单只是一个临时的表,一旦本窗体写在,周结账单里的内容也随之被Delete

    '上期充值卡余额=在begintime之前的充值卡的余额
    '本期充值金额=从dayAccount中,得到的这段时间的充值金额
    '本期消费金额=从dayAccount中,得出的这段时间的消费金额
    '本期退款金额=从dayAccount中,得出的这时间的退款金额
    '本期充值卡余额=上期充值卡余额+本期充值金额-本期消费金额-本期退款金额
    '日期=今天

    '计算上期充值卡余额
    SQL = "select max(金额总和) from dayaccount where 日期 < '" & Format(CDate(DTpcBegin.Value), "yyyy-mm-dd") & "'"
    Set Rst = ExecuteSQL(SQL, strMsg)
    Debug.Print SQL

    If IsNull(Rst.Fields(0)) = True Then
        BalanceRmb = 0
    Else
        BalanceRmb = Trim(Rst.Fields(0))   '上期充值卡余额
    End If

    '显示在文本框中
    txtBalance.Text = Format(BalanceRmb, "Fixed")

    '计算本期充值金额
    SQL = "select sum(充值金额) from dayaccount where 日期 between '" & Format(CDate(DTpcBegin.Value), "yyyy-mm-dd") & "' and '" & Format(CDate(DTPcEnd.Value), "yyyy-mm-dd") & "'"
    Set Rst = ExecuteSQL(SQL, strMsg)

    Debug.Print SQL

    If IsNull(Rst.Fields(0)) = True Then
        BenQiRechargeRmb = 0
    Else
        BenQiRechargeRmb = Trim(Rst.Fields(0))
    End If

    '计算本期消费金额
    SQL = "select sum(消费金额) from dayaccount where 日期 between '" & Format(CDate(DTpcBegin.Value), "yyyy-mm-dd") & "' and '" & Format(CDate(DTPcEnd.Value), "yyyy-mm-dd") & "'"
    Set Rst = ExecuteSQL(SQL, strMsg)

    Debug.Print SQL

    If IsNull(Rst.Fields(0)) = True Then
        BenQiCostRmb = 0
    Else
        BenQiCostRmb = Trim(Rst.Fields(0))
    End If

    '计算本期退款金额
    SQL = "select sum(退还金额) from dayaccount where 日期 between '" & Format(CDate(DTpcBegin.Value), "yyyy-mm-dd") & "' and '" & Format(CDate(DTPcEnd.Value), "yyyy-mm-dd") & "'"
    Set Rst = ExecuteSQL(SQL, strMsg)
    Debug.Print SQL

    If IsNull(Rst.Fields(0)) = True Then
        ReturnRmb = 0
    Else
        ReturnRmb = Trim(Rst.Fields(0))
    End If

    '计算本期充值卡余额
    'BenQiCardRmb = BalanceRmb + BenQiRechargeRmb - BenQiCostRmb - ReturnRmb(在所有数据完整时没问题,但是数据如果不完整,就不行了,所以采取别的办法)
    SQL = "select max(金额总和) from dayaccount where 日期 <= '" & Format(CDate(DTPcEnd.Value), "yyyy-mm-dd") & "'"
    Set Rst = ExecuteSQL(SQL, strMsg)

    If IsNull(Rst.Fields(0)) = True Then
        BenQiCardRmb = 0
    Else
        BenQiCardRmb = Trim(Rst.Fields(0))
    End If

    '计算日期
    DateToday = Format(GetSqlTime, "yyyy-mm-dd")

    '插入到周结账单里面
    SQL = "insert into weekaccount values('" & BalanceRmb & "','" & BenQiRechargeRmb & "','" & BenQiCostRmb & "','" & ReturnRmb & "','" & BenQiCardRmb & "','" & DateToday & "')"
    Call ExecuteSQL(SQL, strMsg)

    Call showReport   '显示查询到的报表
    Viewer.Refresh '刷新
    

 

时间: 2024-10-16 09:33:39

日结账单和周结账单的相关文章

机房收费系统之周结账单

         在做系统的过程中,应该说报表这块儿,尤其是周结账和日结账这块是最繁琐的了,我用了3.4天吧,拿下了这块儿.          首先看一下这个周结账单                     这个窗体的控件我也找了很长时间才找到,显示时间的是DTpicker,日历是monthview.           首先实例化报表        Dim WithEvents report As grproLibCtl.GridppReport '实例化报表          在报表中初始化

一段时间-java计算两个日期间有多少自然周

问题描述 java计算两个日期间有多少自然周 给定一个开始日期和一个结束日期,开始日期如果是周六或周天,那么这就不算一周.结束日期哪怕是周一也要算是一周.最好能有代码,谢谢! 解决方案 有点小失误,修改过的 public static int get(Date dtS, Date dtE) { Calendar calS = Calendar.getInstance(); calS.setTime(dtS); boolean isMonday = true; Calendar calE = Ca

国家计算机网络入侵防范中心5日发布安全漏洞周报说

国家计算机网络入侵防范中心5日发布安全漏洞周报说,2月27日至3月4日一周内共发现安全漏洞22个,其中高危漏洞16个,安全漏洞总量与前一周相比大幅下降. 本周的漏洞数量较少,所影响的系统和软件在我国的使用范围较小.比较值得关注的是Google公司公布了Chrome浏览器的多个未指明漏洞,会造成未知影响,及IBM公司公布了PersonalCommunications的一个缓冲区溢出漏洞.厂商已发布更新程序,建议用户及时下载,做好安全防护.以上漏洞被攻击者成功利用会影响信息的机密性完整性可用性,威胁

2010冬季日剧第五周收视榜评续集主打

2010年2月1日到2010年2月7日这一周,10年冬季档日剧收视率依然萎靡,榜单中10部剧集收视率下滑,其中朝日系金9<宿命1969-2010>.木9<转职必胜班>和东京放送的金10<完美小姐进化论>的收视率分别下滑2.1%.2.3%和2.4%,尤其是木10成为本季常规剧中第一部破5的片子,而金9和金10离破5也只是一步之遥.冬季档几近过半,本周先对四部收视率依然坚挺的剧集做个盘点,前两部都是往年热门剧集的续集,另一部是去年SP的电视化,加上榜单中<Code B

账单限定时间内失效-账单10分钟后失效的问题

问题描述 账单10分钟后失效的问题 功能需求:在网站中下一个订单,如果十分钟不支付的话,会取消订单.应该怎么做呢? 解决方案 做一个服务进程,然后将要做的事情和时间写在里面,它循环并且将所有超时的操作都做了. 也可以用事务队列完成. 解决方案二: 服务器存个时间搓信息,然后一个任务v处理这些记录

冬季日剧第六周榜评:《完美小姐进化论》反弹

2010年2月8日到2010年2月14日这一周,10年冬季档日剧收视率榜单排名变动不大,但势头上扬,榜单上游大部分收视率上升,其中富士电视台放送的四部剧集收视率集体上升,看来富士电视台本季重整旗鼓,尽管没有特别出彩的作品,但整体水平依然不俗.日本电视台凭借菅野美穂主演的<不能曲的女人>位列亚军,东京放送的三部剧集本周表现一般位列第三名. 本周有四部剧集的收视率上升超过1个百分点,其中TBS金10<完美小姐进化论>变化幅度最大,上周已徘徊在破5的危险境地,本周大幅反弹上升了3.3个百

日剧第十三周收视榜评《Boss》摘得桂冠

09.06.22-09.06.28日剧榜评 1 周四22点 CX木10 BOSS 20.7% ↑ 2 周日20点 NHK日8 天地人 20.3% ↓ 3 周六20点 TBS土8 Mr.Brain 18.1% ↓ 4 周三21点 EX水9 临场 15.3% ↑ 5 周二22点 CX火10 白色之春 15.1% ↑ 6 周五21点 EX金9 必杀仕事人 13.9% ↑ 7 周五22点 TBS金10 微笑 10.9% ↑ 8 周二21点 CX火9 家有六子 10.4% ↑ 9 周一21点 CX月9 结

日剧第十三周收视榜评《Boss》最终回夺冠

09.06.22-09.06.28日剧榜评 1 周四22点 CX木10 BOSS 20.7% ↑ 2 周日20点 NHK日8 天地人 20.3% ↓ 3 周六20点 TBS土8 Mr.Brain 18.1% ↓ 4 周三21点 EX水9 临场 15.3% ↑ 5 周二22点 CX火10 白色之春 15.1% ↑ 6 周五21点 EX金9 必杀仕事人 13.9% ↑ 7 周五22点 TBS金10 微笑 10.9% ↑ 8 周二21点 CX火9 家有六子 10.4% ↑ 9 周一21点 CX月9 结

2010秋季日剧第三周收视榜评《相棒》又来了

2010年10月18日至10月24日日剧榜评 2010年10月18日到2010年10月24日这一周,2010年秋季档日剧的收视率大战正式打响,本周17部上榜的作品最高收视率18.0%,由NHK大河剧<龙马传>创下,也是其时隔四个月自春季档以来再次取得18+的成绩,排在最后一位是东京放送台的<黑豹:如龙见参新章>,收视率1.8%,作为周二凌晨2点放送的电视剧,其收视率显然与国营电视台黄金时段放送的大河剧没有可比性.但同台两档深夜剧连播,若不考虑放送时间先后的关系,以关注度和收视率来看