Openerp开发进销存系统总结

Openerp是一款开源的ERP软件,用Python语言编写,提供可扩展的模块化架构,支持多语言和多货币,适合企业进行管理。其中进销存模块是Openerp中最基础的模块之一,本文将从Openerp开发进销存系统的需求分析,数据库设计,模型开发,界面设计等方面进行详细介绍。

一,需求分析

1.采购管理:对供应商进行管理,采购订单的生成和审核,采购入库的记录,采购价和成本价的计算。

2.销售管理:对客户进行管理,销售订单的生成和审核,销售出库的记录,销售价和销售收入的计算。

3.库存管理:包括库存数量的实时更新,对库存和批次进行查询,采购入库,销售出库,盘点等操作。

4.报表管理:包括各种进销存报表的生成,如库存报表,盘点报表,销售收入报表等。

二,数据库设计

根据需求分析,我们设计了以下表:

1.供应商表:包含供应商编号,供应商名称,联系地址,联系人等字段。

2.采购订单表:包含订单编号,下单日期,供应商编号等字段。

3.采购入库表:包含入库编号,入库日期等字段。

4.销售订单表:包含订单编号,下单日期,客户编号等字段。

5.销售出库表:包含出库编号,出库日期等字段。

6.库存表:包含物品编号,物品名称,库存数量,加权平均成本价等字段。

7.库存变更表:包含物品编号,物品名称,变动日期,变动数量,变动原因等字段。

8.物品表:包含物品编号,物品名称,单位等字段。

9.盘点表:包含盘点编号,盘点日期等字段。

三,模型开发

在Openerp中,我们可以通过Python语言来编写业务逻辑,并通过模型将数据存入数据库。下面是对模型的开发介绍。

1.供应商模型:

class Supplier(models.Model):

_name = "supplier"

name = fields.Char(string="Name", required=True)

address = fields.Char(string="Address")

phone = fields.Char(string="Phone")

email = fields.Char(string="Email")

contacts = fields.One2many(comodel_name="contact", inverse_name="supplier_id", string="Contacts")

2.采购订单模型:

class PurchaseOrder(models.Model):

_name = "purchase.order"

name = fields.Char(string="Order No.", required=True)

order_date = fields.Date(string="Order Date", required=True, default=fields.Date.today())

supplier_id = fields.Many2one(comodel_name="supplier", string="Supplier")

product_ids = fields.One2many(comodel_name="purchase.product", inverse_name="order_id", string="Products")

state = fields.Selection(

selection=[

('draft', 'Draft'),

('confirmed', 'Confirmed'),

('done', 'Done'),

('cancel', 'Canceled')

],

string="State",

default="draft",

required=True

)

3.采购入库模型:

class PurchaseIn(models.Model):

_name = "purchase.in"

name = fields.Char(string="In No.", required=True)

in_date = fields.Date(string="In Date", required=True, default=fields.Date.today())

order_id = fields.Many2one(comodel_name="purchase.order", string="Order")

product_id = fields.Many2one(comodel_name="product", string="Product")

quantity = fields.Float(string="Quantity")

cost_price = fields.Float(string="Cost Price")

state = fields.Selection(

selection=[

('draft', 'Draft'),

('done', 'Done')

],

string="State",

default="draft",

required=True

)

4.销售订单模型:

class SaleOrder(models.Model):

_name = "sale.order"

name = fields.Char(string="Order No.", required=True)

order_date = fields.Date(string="Order Date", required=True, default=fields.Date.today())

customer_id = fields.Many2one(comodel_name="customer", string="Customer")

product_ids = fields.One2many(comodel_name="sale.product", inverse_name="order_id", string="Products")

state = fields.Selection(

selection=[

('draft', 'Draft'),

('confirmed', 'Confirmed'),

('done', 'Done'),

('cancel', 'Canceled')

],

string="State",

default="draft",

required=True

)

5.销售出库模型:

class SaleOut(models.Model):

_name = "sale.out"

name = fields.Char(string="Out No.", required=True)

out_date = fields.Date(string="Out Date", required=True, default=fields.Date.today())

order_id = fields.Many2one(comodel_name="sale.order", string="Order")

product_id = fields.Many2one(comodel_name="product", string="Product")

quantity = fields.Float(string="Quantity")

sale_price = fields.Float(string="Sale Price")

state = fields.Selection(

selection=[

('draft', 'Draft'),

('done', 'Done')

],

string="State",

default="draft",

required=True

)

6.物品模型:

class Product(models.Model):

_name = "product"

name = fields.Char(string="Name", required=True)

unit = fields.Char(string="Unit", required=True)

cost_price = fields.Float(string="Cost Price", compute="_compute_cost_price")

sale_price = fields.Float(string="Sale Price")

stock_quantity = fields.Float(string="Stock Quantity", compute="_compute_stock_quantity")

stock_moves = fields.One2many(comodel_name="stock.move", inverse_name="product_id", string="Stock Moves")

7.库存变更模型:

class StockMove(models.Model):

_name = "stock.move"

name = fields.Char(string="Name", required=True)

move_date = fields.Datetime(string="Move Date", required=True, default=fields.Datetime.now())

product_id = fields.Many2one(comodel_name="product", string="Product")

quantity = fields.Float(string="Quantity")

reason = fields.Char(string="Reason")

四,界面设计

通过Openerp的界面设计,我们可以方便地将模型的数据展示出来,并且可进行相关的操作。下面是进销存相关的界面设计。

1.采购管理界面:

2.销售管理界面:

3.库存管理界面:

4.报表管理界面:

五,使用方法

1.安装Openerp软件并在服务器上配置好环境。

2.将本系统的源代码放置于Openerp的addons目录下。

3.通过Openerp的应用菜单找到本系统的模块并安装。

4.在Openerp中创建数据库并导入本系统提供的数据。

5.登录Openerp系统并使用本系统。

六,案例说明

1.某公司采用本系统进行进销存管理,公司负责人在Openerp中创建了员工账号,并设置了相关权限。

2.某公司采购人员使用本系统创建采购订单,并将其提交给采购经理审核。

3.采购经理在Openerp中进行审核并通过了该采购订单。

4.采购部门在Openerp中进行采购入库并确认。

5.销售人员在本系统中创建销售订单,并将其提交给销售经理审核。

6.销售经理在Openerp中进行审核并通过了该销售订单。

7.销售部门在本系统中进行销售出库并确认。

8.库管人员在Openerp中进行盘点并生成盘点报表。

9.财务人员在Openerp中生成销售收入报表。

结语:

本文主要介绍了在Openerp中开发进销存管理系统的方法和技术,包括需求分析,数据库设计,模型开发和界面设计等方面,希望对正在使用Openerp进行开发的人员有所帮助。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/

点赞(37) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部