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/
发表评论 取消回复