进销存系统采购入库功能实现

进销存系统采购入库功能实现(C# + 数据库)

如果说库存是“结果”,
那采购就是第一个真正改变库存的业务源头


一、什么是采购?

在进销存系统中:

采购 = 从供应商买东西,放进仓库

它一定包含三个核心要素:

  • 买了什么
  • 买了多少
  • 什么时候买的

二、为什么必须有“采购单”?

不能只做:

IncreaseStock(productId, 100);

原因:

  • 无法追溯来源
  • 无法审计
  • 无法统计

所有库存变化,都必须有“单据”支撑


三、采购单数据结构设计

采购单主表(purchase)

CREATE TABLE purchase (
    id INT PRIMARY KEY IDENTITY(1,1),
    purchase_no VARCHAR(50) NOT NULL UNIQUE,
    create_time DATETIME DEFAULT GETDATE(),
    remark VARCHAR(200)
);

采购明细表(purchase_item)

CREATE TABLE purchase_item (
    id INT PRIMARY KEY IDENTITY(1,1),
    purchase_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT NOT NULL
);

四、采购入库的完整流程

用户填写采购单
   ↓
保存采购单
   ↓
保存采购明细
   ↓
更新库存

这是一个完整的业务闭环


五、保存采购单

private int CreatePurchase(string remark)
{
    string sql = @"
        INSERT INTO purchase(purchase_no, remark)
        VALUES(@no, @remark);
        SELECT SCOPE_IDENTITY();";

    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();

        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.Parameters.AddWithValue("@no", "CG" + DateTime.Now.Ticks);
        cmd.Parameters.AddWithValue("@remark", remark);

        return Convert.ToInt32(cmd.ExecuteScalar());
    }
}

六、保存采购明细并更新库存

private void AddPurchaseItem(int purchaseId, int productId, int quantity)
{
    string sql = @"
        INSERT INTO purchase_item(purchase_id, product_id, quantity)
        VALUES(@pid, @productId, @qty)";

    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();

        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.Parameters.AddWithValue("@pid", purchaseId);
        cmd.Parameters.AddWithValue("@productId", productId);
        cmd.Parameters.AddWithValue("@qty", quantity);

        cmd.ExecuteNonQuery();
    }

    // 采购入库 → 增加库存
    IncreaseStock(productId, quantity);
}

七、采购如何“联动库存”?

关键点只有一句话:

库存永远不直接操作,只响应业务

采购单存在 → 库存增加
采购单不存在 → 库存不变


八、本篇小结(系统第一次真正联动)

到这里,你已经完成了:

  • 第一个业务单据
  • 库存的合法来源
  • 数据之间的因果关系

你的系统已经具备:

  • 可追溯性
  • 业务闭环
  • 扩展基础
posted @ 2025-10-29 11:31  元始天尊123  阅读(7)  评论(0)    收藏  举报