Files
order_system/README.md
T

135 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 博特维采购订单管理系统
> 苏州博特维智能科技有限公司 · 本地采购订单管理系统(采购单 / 委外生产订单)
>
> 制单 → 主管审核 → 经理批准 → 导出 PDF 的全流程本地化工具,按贵司现有 Excel 单据模板套打。
---
## 功能特性
- **两种单据**:采购单、委外生产订单共用同一套数据,按原模板版式分别套打。
- **两级审核**:制单员提交 → 主管审核 → 经理批准,每个动作写入审核记录,可追溯、可驳回。
- **Excel 导入明细**:编辑页上传 `.xls` / `.xlsx`,自动识别表头(代码/规格/单位/数量/单价/交期/备注),行数不限,PDF 自动分页。
- **供应商库 / 物料库**:制单时下拉带入名称、联系人、税号、单价等信息;支持行内编辑、停用/启用、删除,以及 Excel 批量导入(带模板下载)。
- **金额大写**:合计自动转人民币大写(壹万贰仟叁佰肆拾伍元整)。
- **审核盖章**:主管审核前须先「加盖审核章」,服务端二次校验,防止绕过;PDF 渲染红色审核专用章。
- **历史查询与统计**:按单号 / 供应商 / 状态 / 单据类型 / 日期区间筛选;按状态、供应商、月份汇总金额。
- **台账导出**:一键导出全部订单为 Excel。
- **PDF 套打**:完全复刻原 Excel 模板版式,草稿/待审核状态带水印防止误用,已批准状态导出无水印正式版。
## 技术栈
| 层 | 技术 |
|---|---|
| 后端 | Python 3 + Flask 3 |
| ORM | SQLAlchemy 2 |
| 数据库 | SQLite(单文件 `po.db`,免部署) |
| PDF | reportlab 4(中文套打 + 印章绘制) |
| Excel | openpyxl 3 / xlrd 2 |
| 打包 | PyInstaller(单文件版 / 文件夹版,免 Python 环境) |
## 目录结构
```
po_app/
├── app.py # 主程序(路由 / 业务逻辑 / 审核流程)
├── models.py # 数据库模型(用户 / 订单 / 明细 / 供应商 / 物料)
├── pdf_export.py # PDF 套打 + 审核章绘制
├── amount_cn.py # 金额转人民币大写
├── requirements.txt # 源码运行依赖
├── 启动.bat # 双击即启(源码方式)
├── templates/ # Jinja2 模板
├── static/ # CSS / JS / 资源
├── 博特维采购订单系统.spec # 文件夹版打包配置
├── 博特维采购订单系统_单文件版.spec # 单文件版打包配置
├── 使用说明.md # 详细使用手册
├── instance/ # 运行时数据库(.gitignore 排除,不入库)
├── exports/ # 导出的 PDF(忽略)
└── uploads/ # 上传的明细文件(忽略)
tools/ # 开发期脚本:测试 / 打包验证 / git 推送
```
> 仓库仅含**源码与配置**;数据库、构建产物、运行时数据均经 `.gitignore` 排除,不入库。
## 快速开始
三种运行方式任选其一:
1. **单文件 EXE(推荐分发)**
`po_app/dist/博特维采购订单系统_单文件版.exe`,拷贝到任意文件夹双击即用,免 Python 环境。
2. **文件夹版 EXE(启动最快)**
复制 `po_app/dist/博特维采购订单系统/` 整个文件夹,双击其中的 exe 秒开。
3. **源码运行**
安装依赖后双击 `po_app/启动.bat`,或命令行:
```bash
cd po_app
pip install -r requirements.txt
python app.py 8080
```
访问地址 <http://127.0.0.1:8080>;局域网其他电脑把 `127.0.0.1` 换成宿主机的局域网 IP(需放行 8080 端口)。
EXE 版数据落在 exe 同级的 `instance/po.db`,备份即复制该文件夹。
## 初始账号
| 账号 | 密码 | 角色 | 权限 |
|---|---|---|---|
| admin | admin123 | 系统管理员 | 全部功能,含用户 / 供应商 / 物料维护 |
| maker | 123456 | 制单员 | 新建、编辑、提交订单 |
| reviewer | 123456 | 主管审核 | 审核通过或驳回 |
| approver | 123456 | 经理批准 | 批准后订单生效,可出正式 PDF |
> ⚠️ 正式使用前请在「用户」页改掉默认密码。
## 业务流程
```
制单员新建订单 → 填写抬头与明细 → 提交
↓
主管审核(通过 / 驳回并填原因)
↓
经理批准(通过 / 驳回并填原因)
↓
状态 = 已批准 → 导出 PDF(无水印,带审核人姓名与时间)
```
- 草稿 / 待审核 / 待批准状态导出的 PDF 带斜向水印,避免误用。
- 被驳回的订单回到制单员名下,可修改后再次提交。
## PDF 套打版式
完全复刻原 Excel 模板:
1. 公司名 + 单据名称(采购单 / 委外生产订单)
2. 抬头区:左供方、右需方(含采购单号、采购日期、税点、税号等)
3. 明细表 9 列:序号 / 物料代码 / 物料规格 / 单位 / 数量 / 含税单价 / 金额 / 交期 / 备注(列宽取自原模板)
4. 合计:小写 + 人民币大写 + 元整
5. 备注条款 + 交货地点(苏州工业园区星汉街 5 号腾飞新苏工业坊 B 幢 5 楼 05-06 单元)
6. 签署区:制单 / 主管审核 / 经理批准(含姓名与时间)+ 双方盖章栏
7. 页脚:单据类型、单号、页码、打印时间
明细超过一页时自动分页并重复表头,合计与条款跟随在最后一页。
## 数据文件与备份
| 文件 | 说明 |
|---|---|
| `instance/po.db` | SQLite 主数据库,整个文件夹复制即备份 |
| `exports/` | 导出的 PDF |
| `uploads/` | 上传的明细文件 |
## 重新打包说明(开发)
```bash
# 打包前务必先备份 instance/ 与 exports/,PyInstaller 重建文件夹版会清空 dist
python -m PyInstaller "博特维采购订单系统[_单文件版].spec" --noconfirm --clean
```
## 许可
本仓库为苏州博特维智能科技有限公司内部业务系统源码,仅供公司内部使用与维护。