--先手动创建文件夹：D:\DBEducationReceipt

CREATE DATABASE DBEducationReceipt ON PRIMARY
(
 NAME='DBEducationReceipt',
 FILENAME='D:\DBEducationReceipt\DBEducationReceipt.mdf',
 SIZE=3MB,
 FILEGROWTH=1MB
) LOG ON
(NAME='DBEducationReceipt_log',
 FILENAME='D:\DBEducationReceipt\DBEducationReceipt_log.ldf',
 SIZE=1MB,
 FILEGROWTH=10%
);
GO

USE DBEducationReceipt;
GO 

 
 -----学生信息------
CREATE TABLE tb_Student
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      School VARCHAR(255) ,
      Grade VARCHAR(255) ,
      StudentName VARCHAR(255) ,
      StudentPhone VARCHAR(255) ,
      IDCard VARCHAR(255) ,
      Address VARCHAR(255) ,
      Major VARCHAR(255) ,
      Teacher VARCHAR(255) ,
      Classtime VARCHAR(255) ,
      Classroom VARCHAR(255)
    ); 

 

-----收费项目------
CREATE TABLE tb_Product
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Code VARCHAR(255) ,
      Name VARCHAR(255) ,
      ProUnit VARCHAR(255) ,
      Price FLOAT ,
      Discount FLOAT ,
      DiscountPrice FLOAT ,
      Remark VARCHAR(255)
    );

-----收据主单（全是固定的数据，不是ID）--------------
-- DROP TABLE tb_ReceiptMain
CREATE TABLE tb_ReceiptMain
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Selected INT ,
      ReceiptNo VARCHAR(255) ,
      ReceiptDate DATETIME ,
      School VARCHAR(255) ,
      Grade VARCHAR(255) ,
      StudentName VARCHAR(255) ,
      StudentPhone VARCHAR(255) ,
      IDCard VARCHAR(255) ,
      Address VARCHAR(255) ,
      Major VARCHAR(255) ,
      Teacher VARCHAR(255) ,
      Classtime VARCHAR(255) ,
      Classroom VARCHAR(255) ,
      Paytype VARCHAR(255) ,
      Accountant VARCHAR(255) ,
      Cashier VARCHAR(255) ,
      Creater VARCHAR(255) ,
      TotalNum FLOAT ,
      TotalNumBig VARCHAR(255) ,
      --应收金额
      Total FLOAT ,
      TotalBig VARCHAR(255) ,
      --实收金额
      Actual FLOAT ,
      ActualBig VARCHAR(255) ,
      Remark VARCHAR(255) ,
      --打印
      PrintCount SMALLINT DEFAULT 0 , --打印次数
      LastPrintMan VARCHAR(255) ,  --最后打印人
      LastPrintTime DATETIME ,  --最后打印时间
      --状态
      Status VARCHAR(255) ,--单据状态
      StatusEditCount SMALLINT DEFAULT 0 ,  --状态修改次数
      LastStatusEditor VARCHAR(255) ,--最后修改状态人
      LastStatusEditTime DATETIME ,--最后修改状态时间
      --修改
      DataEditCount SMALLINT DEFAULT 0 ,  --单据修改次数
      LastDataEditor VARCHAR(255) ,--最后修改单据人
      LastDataEditTime DATETIME ,--最后修改单据时间 
      --删除
      IsDeleted SMALLINT DEFAULT 0 ,--1 删除，其它正常
      DeleteTime DATETIME ,--删除时间
      Deleter VARCHAR(255) --删除人 
    );

-----收据详细（全是固定的数据，不是ID）--------------
-- DROP TABLE tb_ReceiptDetail
CREATE TABLE tb_ReceiptDetail
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      [index] INTEGER ,
      ReceiptNo VARCHAR(255) ,
      Code VARCHAR(255) ,
      Name VARCHAR(255) ,
      ProUnit VARCHAR(255) ,
      Num FLOAT ,
      Price FLOAT , --价格
      Discount FLOAT ,--折扣
      DiscountPrice FLOAT ,--折扣价
     --应收小计
      SubTotal FLOAT ,
      SubTotal12 VARCHAR(255) ,
      SubTotal11 VARCHAR(255) ,
      SubTotal10 VARCHAR(255) ,
      SubTotal9 VARCHAR(255) ,
      SubTotal8 VARCHAR(255) ,
      SubTotal7 VARCHAR(255) ,
      SubTotal6 VARCHAR(255) ,
      SubTotal5 VARCHAR(255) ,
      SubTotal4 VARCHAR(255) ,
      SubTotal3 VARCHAR(255) ,
      SubTotal2 VARCHAR(255) ,
      SubTotal1 VARCHAR(255) ,
      --实收小计
      ActualSubTotal FLOAT ,
      ActualSubTotal12 VARCHAR(255) ,
      ActualSubTotal11 VARCHAR(255) ,
      ActualSubTotal10 VARCHAR(255) ,
      ActualSubTotal9 VARCHAR(255) ,
      ActualSubTotal8 VARCHAR(255) ,
      ActualSubTotal7 VARCHAR(255) ,
      ActualSubTotal6 VARCHAR(255) ,
      ActualSubTotal5 VARCHAR(255) ,
      ActualSubTotal4 VARCHAR(255) ,
      ActualSubTotal3 VARCHAR(255) ,
      ActualSubTotal2 VARCHAR(255) ,
      ActualSubTotal1 VARCHAR(255) ,
      Remark VARCHAR(255)
    );

--单据状态
CREATE TABLE tb_Status
    (
      Id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Name VARCHAR(255) ,
      Sort INT
    );
INSERT  INTO tb_Status
        ( Name )
VALUES  ( '有效' );
INSERT  INTO tb_Status
        ( Name )
VALUES  ( '作废' );  

-----折扣------
CREATE TABLE tb_Discount
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Name VARCHAR(255)
    );
    
    
-----学校信息------
CREATE TABLE tb_School
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Name VARCHAR(255)
    );


-----班级信息------
CREATE TABLE tb_Grade
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Name VARCHAR(255)
    );


-----上课内容------
CREATE TABLE tb_Major
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Name VARCHAR(255)
    ); 
    
    
-----上课老师------
CREATE TABLE tb_Teacher
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Name VARCHAR(255)
    );


-----上课时间------
CREATE TABLE tb_Classtime
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Name VARCHAR(255)
    );

-----上课地点------
CREATE TABLE tb_Classroom
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Name VARCHAR(255)
    );


-----收款方式------
CREATE TABLE tb_Paytype
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Name VARCHAR(255)
    );
INSERT  INTO tb_Paytype
        ( Name )
VALUES  ( '支付宝' );
INSERT  INTO tb_Paytype
        ( Name )
VALUES  ( '现金' );
INSERT  INTO tb_Paytype
        ( Name )
VALUES  ( '银联刷卡' );

-----会计------
CREATE TABLE tb_Accountant
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Name VARCHAR(255)
    );
 
------出纳------
CREATE TABLE tb_Cashier
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Name VARCHAR(255)
    );

------备注------
CREATE TABLE tb_Remark
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Name VARCHAR(255)
    );

 

--------------------以下是公用表格-------------------- 
------收据编号------
CREATE TABLE tb_ReceiptNO
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      CustomText VARCHAR(255) ,
      FormatDate VARCHAR(255) ,
      NumLong INTEGER ,
      OverAgain BIT , --SQL server 用bit,sqlite用BOOLEAN
      CurrDay INTEGER ,
      CurrNum INTEGER
    );
    
INSERT  INTO tb_ReceiptNO
        ( CustomText ,
          FormatDate ,
          NumLong ,
          OverAgain ,
          CurrDay ,
          CurrNum           
        )
VALUES  ( '' ,
          'yyMMdd' ,
          3 ,
          0 ,
          24 ,
          1 
        );
  
--软件用户------

CREATE TABLE tb_User
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Realname VARCHAR(255) ,
      Password VARCHAR(255) ,
      Power VARCHAR(255) ,
      Status VARCHAR(255)
    );
INSERT  INTO tb_User
        ( Realname, Password, Power, Status )
VALUES  ( '超级管理员', '', '超级管理员', '有效' ); 

 
 --系统设置------
--DROP TABLE tb_Setting;
CREATE TABLE tb_Setting
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      Logo IMAGE ,  --SQLite用BLOB，SQL Server用IMAGE
      QRCode IMAGE ,--SQLite用BLOB，SQL Server用IMAGE
      --
      Title VARCHAR(255) , --抬头 
      Label VARCHAR(255) , --右侧联
      Remark VARCHAR(255) ,--下方备注
      --
      TopMargin INTEGER ,   --上边距     
      LeftMargin INTEGER ,  --左边距
      --
      SgAddRows INTEGER ,--明细录入控件行数
      DecimalDigits INTEGER ,--小数点位数
      MoneySymbols VARCHAR(10) ,--小写金额符号
      --BoolToStr(值,true)用字符串true ,false方式保存
      ShowSgProduct VARCHAR(10)  --【新增单据】界面显示快速选择产品列表         
    );
    
INSERT  INTO tb_Setting
        ( Title ,
          Label ,
          Remark ,
           --
          TopMargin ,   --上边距         
          LeftMargin ,  --左边距        
          --
          SgAddRows ,--明细录入控件行数
          DecimalDigits ,--小数点位数
          MoneySymbols ,
          ShowSgProduct --【新增单据】界面显示快速选择产品列表        
        )
VALUES  ( '远方教育培训学校收据' ,
          '①存根(白) ②客户(红) ③财务(黄)' ,
          '此处文字内容可在菜单的[系统设置]修改' ,
          0 ,
          0 ,
          8 ,
          2 ,
          '￥' ,
          'true' 
        );
        
 
        
        
--界面文字设置------
-- drop table tb_Translate
CREATE TABLE tb_Translate
    (
      id INT PRIMARY KEY
             IDENTITY(1, 1) ,
      ReceiptNO VARCHAR(255) ,
      ReceiptDate VARCHAR(255) ,
      School VARCHAR(255) ,
      Grade VARCHAR(255) ,
      StudentName VARCHAR(255) ,
      StudentPhone VARCHAR(255) ,
      IDCard VARCHAR(255) ,
      Address VARCHAR(255) ,
      Major VARCHAR(255) ,
      Teacher VARCHAR(255) ,
      Classtime VARCHAR(255) ,
      Classroom VARCHAR(255) ,
      Paytype VARCHAR(255) ,
      Accountant VARCHAR(255) ,      
      Cashier VARCHAR(255) ,
      Creater VARCHAR(255) ,
      Total VARCHAR(255) ,
      TotalBig VARCHAR(255) ,
      Actual VARCHAR(255) ,
      ActualBig VARCHAR(255) ,
      Code VARCHAR(255) ,
      Name VARCHAR(255) ,
      ProUnit VARCHAR(255) ,
      Num VARCHAR(255) ,
      Price VARCHAR(255) ,
      Discount VARCHAR(255) ,
      DiscountPrice VARCHAR(255) ,
      SubTotal VARCHAR(255) ,
      ActualSubTotal VARCHAR(255) ,
      mRemark VARCHAR(255) ,
      dRemark VARCHAR(255)
    );

--要插入两条记录
DECLARE @RowCount INT = 0;
WHILE @RowCount < 2
    BEGIN
        INSERT  INTO tb_Translate
                ( ReceiptNO ,
                  ReceiptDate ,
                  School ,
                  Grade ,
                  StudentName ,
                  StudentPhone ,
                  IDCard ,
                  Address ,
                  Major ,
                  Teacher ,
                  Classtime ,
                  Classroom ,
                  Paytype ,
                  Accountant ,
                  Cashier ,
                  Creater ,
                  Total ,
                  TotalBig ,
                  ActualTotal ,
                  ActualTotalBig ,
                  Code ,
                  Name ,
                  ProUnit ,
                  Num ,
                  Price ,
                  Discount ,
                  DiscountPrice ,
                  SubTotal ,
                  ActualSubTotal ,
                  mRemark ,
                  dRemark
                )
        VALUES  ( '单据编号' ,
                  '制单日期' ,
                  '学校信息' ,
                  '班级信息' ,
                  '学生姓名' ,
                  '学生电话' ,
                  '身份证号' ,
                  '现住地址' ,
                  '上课内容' ,
                  '上课老师' ,
                  '上课时间' ,
                  '上课地点' ,
                  '收款方式' ,
                  '会计' ,
                  '出纳' ,
                  '制单人' ,
                  '应收金额' ,
                  '应收金额（大写）' ,
                  '实收金额' ,
                  '实收金额（大写）' ,
                  '收费编号' ,
                  '收费名称' ,
                  '单位' ,
                  '数量' ,
                  '原价' ,
                  '折扣' ,
                  '折后价' ,
                  '应收小计' ,
                  '实收小计' ,
                  '收据备注' ,
                  '明细备注'  
                );
        SET @RowCount = @RowCount + 1;
    END;