# 创建 项目流程表
# 针对不通过流程需要创建不同表

create table project_process
(
    id                     int auto_increment primary key comment 'ID',
    apply_date             date          null comment '申请时间',
    apply_dept             varchar(255)  null comment '申请部门(逗号分割)',
    apply_dept_id          varchar(255)  null comment '申请部门ID(逗号分割)',
    apply_dept_leader_id   int           null comment '申请部门领导ID',
    apply_dept_leader_name varchar(255)  null comment '申请人领导',
    apply_person_name      varchar(255)  null comment '申请人姓名',
    apply_person_id        int           null comment '申请人ID',
    contract_name          varchar(255)  null comment '合同名称',
    contract_no            varchar(255)  null comment '合同编号',
    project_id             int           null comment '项目ID',
    project_no             varchar(255)  null comment '项目编号',
    project_title          varchar(255)  null comment '标题',
    seal_types             varchar(255)  null comment '印章类型',
    `status`               varchar(255)  null comment '流程状态',
    tax_rate               varchar(255)  null comment '税率',
    process_type           varchar(255)  null comment '流程类型',
    remark                 text          null comment '备注',
    attachment_uri         text          null comment '附件 JSON Array',

    reviewed_id            varchar(1024) null comment '审核过的人的ID',
    current_audit          varchar(255)  null comment '当前审核人',
    current_audit_id       varchar(255)  null comment '当前审核人ID逗号分割',

    create_at              datetime default CURRENT_TIMESTAMP comment '创建时间',
    last_update_at         datetime default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP comment '最后更新时间'

) comment '项目对应的流程';

alter table project_process
    add reviewed_id varchar(1024) null comment '审核过的人的ID';

# 采购合同
create table procurement_contract
(
    id               int auto_increment primary key comment 'ID',
    procurement_mode varchar(255) null comment '采购模式',
    payment_terms    text         null comment '付款条件',
    supplier_name    varchar(255) null comment '供应商名称',
    process_id       int comment '流程ID'
) comment '采购合同流程';

# 销售合同
create table sale_contract
(
    id                 int auto_increment primary key comment 'ID',
    apply_person_phone varchar(255) null comment '申请人电话',
    client_name        varchar(255) null comment '客户名称',
    payment_terms      text         null comment '收款条件',
    process_id         int comment '流程ID'
) comment '销售合同流程';

create table procurement_contract_supplier_material
(
    id            int auto_increment primary key comment 'ID',
    company_name  varchar(255)  null comment '公司名称',
    total_amount  varchar(255)  null comment '合计金额',
    service_terms varchar(255)  null comment '服务条款',
    payment_terms varchar(255)  null comment '付款条件',
    tax_rate      varchar(255)  null comment '税率',
    remark        varchar(255)  null comment '备注',
    attachment    varchar(1000) null comment '附件',

    process_id    int comment '流程ID',
    contract_id   int comment '采购合同ID'
) comment '采购合同流程的供应商材料';

create table procurement_contract_budget_purchase_amount
(
    id             int auto_increment primary key comment 'ID',
    amount         decimal(11, 2) not null comment '总共要采购数量',
    amount_current decimal(11, 2) not null comment '本次采购数量',
    submit         bit default 0  not null comment '该流程是否提交，提交了才计算到已采购数量',
    process_id     int            not null comment '流程ID',
    contract_id    int            not null comment '采购合同ID',
    budget_cost_id int            not null comment '成本ID',
    UNIQUE key (process_id, budget_cost_id)
) comment '采购合同流程预算采购明细的数量记录';

alter table procurement_contract_budget_purchase_detail
    add budget_cost_id int not null comment '成本ID'
;

create table procurement_contract_budget_purchase_detail
(
    id                 int auto_increment primary key comment 'ID',
    supplier_name      varchar(255)   null comment '供应商名称',
    manufacturer_name  varchar(255)   null comment '设备厂商名称',
    purchase_list      varchar(255)   null comment '对应采购清单',
    spec               varchar(255)   null comment '规格型号',
    procurement_amount decimal(11, 2) null comment '对应采购数目',
    procurement_price  decimal(19, 5) null comment '采购单价',
    total_tax_include  decimal(19, 5) null comment '含税总金额（元）',

    process_id         int            not null comment '流程ID',
    contract_id        int            not null comment '采购合同ID',
    amount_id          int            not null comment '记录数量表的ID',
    budget_cost_id     int            not null comment '成本ID'

) comment '采购合同流程预算采购明细的详情';

alter table procurement_contract_budget_purchase_amount
    drop amount_left;

alter table procurement_contract_budget_purchase_amount
    add submit bit default 0 not null comment '该流程是否提交，提交了才计算到已采购数量'
;