Opencart是最常见的在线商店之一。 在许多情况下,出现了与仓库会计系统(最常见的是与1C)集成的任务。
集成至少涉及将订单从IM转移到仓库系统,以处理货物并将其发送给买方,并根据仓库中的实际可用性更新IM中的货物数量。
通常,任务是同步商品本身,其参数,照片等。
困难在于,通常需要在IM和仓库系统中都进行更改,这意味着开发人员必须同时了解两个系统或需要让另一个开发人员参与。 有现成的解决方案,但是它们通常需要修整或付费,并且仍然需要修整。
为了解决此问题,已为OpenCard创建了一个模块,该模块扩展了OpenCart API,仅允许在计费系统方面进行更改。
该模块是免费的开源代码,位于
github上 。
该模块是为
特定的会计系统开发的,但已编写该模块,以便任何其他第三方程序都可以使用它。
该模块可以通过管理面板以标准方式安装在IM中,也可以简单地将其复制到catalog / controller / api文件夹中。 该模块包含一个文件。 无需更改设置或开放式名片结构。
当然,您需要在管理面板中生成KEY API,然后将在仓库系统设置中对其进行设置,以便在访问该API之前登录该API。
使用OpenCart 2.3和3.0验证的工作
该模块提供了一些用于处理订单和货物的API函数。
根据开放卡协议,使用POST方法传输参数,并且在访问API之前必须获取特殊令牌。 数据以JSON格式交换。 所有这些都是与OpenCart API配合使用的标准工具。
处理订单
当新订单出现在IM中时,必须将其导入到仓库系统中,也就是说,必须基于新订单在仓库系统中创建适当的文档(记录等)并将其处理并发送给客户
通过调用
orders()函数导入
订单 。
要仅获取必要的订单,将传递带有订单状态的status_id参数。 由于打开的地图中的状态是由管理面板创建的,并且可以是任何内容,因此您首先需要使用
statuss()方法获取状态列表,该方法返回具有标识符和状态名称的键值数组。
会计系统会以某种下拉列表的形式显示这些状态以进行说明。 经理从这些状态中选择一种与新订单相对应的状态。
订单中附带了要交付的商品和客户数据的列表。
为了识别订单,会计系统必须在内部订单的某些属性中写入订单ID。 这些标识符更新MI中的状态,并验证订单是否已导入。
IM中的状态更新由
updateorder()函数执行
经理选择处于所需状态(例如,正在处理订单)的必要订单(会计系统),并更新IM中相应初始订单的状态。 传递键值数组-系统建议的下拉列表中的MI的订单ID和MI的状态ID。
例如,可以在接受处理订单后更新订单,将其运送到客户,交付给客户并关闭。 这是由经理决定的。
当然,如果两个系统中的状态均已明确定义且未更改,则具有固定状态的API调用可以挂在某些调度程序上并自动调用。
处理货物
处理货物时,最经常需要更新仓库中货物的实际数量和商店中的价格。
为了交换数据,IM中的货物必须与仓库中的货物同步。 本文提供了合规性,但是如果您愿意,可以调整代码并使用另一个参数(例如名称)(尽管这不是一个好主意)。
要将产品添加到商店,请使用
addproducts()函数。
尚不存在的商品将转移到商店。 为了不传送重复项,您可以使用
article()方法从商店中获取存在的
文章列表。
为了使商品直接属于所需类别,您必须首先使用
cats()方法获取类别列表,并使经理有机会从列表中选择所需类别。 之后,使用OpenCart管理面板中的标准工具重新注册商品。
货物以名称,物品,描述(如果有),价格和数量的形式转移。 在某些情况下,任务是从仓库转移属性,所有描述,照片等。 但是在这方面,对于在会计系统方面创建所有这一切的可取性存在疑问。
首先,对于传统的仓库会计,名称和商品编号(即发票和订单中使用的数据)就足够了。
其次,IM管理面板已经具有用于形成产品卡的常规方法。
第三,转移和协调诸如类别,属性,图像等之类的复杂结构是一件非常麻烦的事情,并且从上文中可以得出以下结论。
例如,如果会计系统与其他资源一起使用,将数据上传到市场,则此类解决方案就很有意义。 尽管我敢肯定开放卡有一些模块可以将特征和商品图片从开放卡上载到市场。
如果事实证明在引入仓库系统时IM中已经有一些商品,那么您可以使用
getproducts()方法从IM中获取商品清单,并将其添加到会计系统的商品
目录中 。 唯一性也由文章检查。
接下来,主要功能
updatequantity()和
updateprice()根据仓库数据更新MI中的数量和价格。 该函数传输键值数组(商品编号或价格),并且不需要参数,也就是说,它们可以由调度程序启动。
如前所述,该模块的优势在于OpenCart代码中没有任何更改。 如有必要,该模块很容易完成-要传输其他数据,您只需向相应的关联数组添加新键即可。 数据将被打包,然后在接收端以相同的形式解包。
如果记帐系统是用PHP编写的,则有一个
现成的函数可以调用opencards API(您可以简单地从系统中删除错误消息行)。