Gir*_*ldi 3 prestashop stock prestashop-1.5
在将库存从一个仓库转移到另一个仓库(库存>库存管理 - > 操作>转移)时,我需要创建某种带有转移号码的转移单(就像交货单一样)(例如转移#TR000008)股票).
我想在Stock Move 列中显示转移号码(例如#TR000008).
并且,如果可能的话,我想将LABEL从"转移到另一个仓库"更改为"转移到[此处的仓库名称] ".
我有什么方法可以破解PrestaShop来做上述事情?
非常感谢帮助.
如果no.1太难了,也许只是给我一个在Stock Transfer表单中添加额外输入字段的方法,这样我就可以手动输入转移号码.
注意:
我真的需要帮助才能根据@soulseekah提供的方向获得完整的工作代码.
PS:我正在使用Prestashop 1.5.2.0
虽然Prestashop在灵活性方面非常严格并且扩展了它的功能,但你可以通过在这里和那里洒上一些JavaScript魔法(读取:hacks)来实现.
注意:我正在使用Prestashop 1.5.6.1,因此可能存在一些细微差别.
我假设您知道如何编写基本的Prestashop模块,使用Prestashop挂钩,设置模块安装和卸载操作,以及使用数据库,使用jQuery.
准备?
Prestashop没有严格的库存转移概念.但是您确实获得了库存移动的完整历史记录,该历史记录存储在stock_mvt表格中并由StockMvt类别支持.
这非常幸运,可以节省您创建和管理转移表的费用.但是,它可能不太可靠.
库存移动屏幕由其呈现AdminStockMvtController,没有任何挂钩来更改列.所以这需要一些JavaScript动作.
注入JavaScript的标准方法是挂钩displayBackOfficeHeader.一旦您加入此操作,请注入一个JavaScript文件.
public function hookDisplayBackOfficeHeader() {
return '<script type="text/javascript" src="'.$this->_path.'transfers.js'.'"></script>';
}
Run Code Online (Sandbox Code Playgroud)
以上内容将包含随模块一起提供的脚本.此脚本可以使用jQuery来更改列的外观和内容.
jQuery( '.table.stock_mvt thead tr:nth(0)' ).append( '<th>Transfer</th>' );
jQuery( '.table.stock_mvt thead tr:nth(1)' ).append( '<td></td>' );
Run Code Online (Sandbox Code Playgroud)
通过新列进行排序,搜索和过滤的加分点.
更改名称"转移到另一个仓库或从另一个仓库转移"很简单,不需要任何数据库调用.只需查看每一行,如果列包含"从"查看上一行并从"仓库"列中获取名称.如果它包含"to"查看下一行.
这显然不适用于那样的排序和过滤器.在这种情况下,您可以为数据库调用每个运动的仓库名称 - 请参阅下一节.
用户界面非常简单.但是如何获得转移单数据呢?这是困难的部分.
就像我说的那样,移动数据是可用的,并且可以很容易地以相同的方式检索AdminStockMvtController.
该表将需要来自数据库的一些数据.您需要获取仓库之间的移动ID,这将是您的滑动ID和所涉及的两个仓库的名称.
基本上,你需要通过查看stock_mvt_reason_lang表并找到连续的"to"和"from"原因对来找出成对的转移,这些对id_stock_mvt_reason你感兴趣.查看内部stock_mvt,排序stock_mvt_id并在PHP或MySQL中配对它们.
在id_stock将指向一个仓库,在那里你可以得到的名称.基本上得到你需要的任何东西,然后将连续的"to" - >"from"运动配对作为转移.
滑动ID可能应该是id_stock_mvt"到"运动,或"从"运动(选择一个并坚持它).通过这种方式,您将能够生成具有一个特定ID的单据,并找到转移中涉及的两个运动.
因此,您需要做的是在您的模块上抛出一个AJAX调用并返回所需的数据 - 传输传票ID,传输到/从名称转移等.一旦完成此调用,您只需根据需要将数据注入表中.转移将是生成您的单据的链接(参见下一节).
由于表没有ID数据,因此您必须确保以正确的顺序返回结果,因此不要忘记考虑排序,限制和分页以输出正确的ordrdered有效负载以注入表中.您应该能够仅发送传输数据对.
或者,您可以创建一个名为"Stock Transfers"的新管理选项卡,您可以使用仅传输的干净方式输出表格.
PDF生成可以分叉AdminPdfController.您必须从转移中包含必要的数据.到目前为止,您已经发现了获取输出所需数据的正确方法.构建PDF非常简单.
一旦您的生成器获得了滑动ID,您就可以在移动表中查找它,获取它们的对和所有数据.你可以想象,动态的一代ocurrs,以及滑动从未存储在Prestashops中.您的新转帐单也不需要存储.
快速概述模块需要包含的内容:
hookDisplayBackOfficeHeader功能id_stock_mvt)中识别出一对,并输出一个漂亮的单据供您打印整个过程远非易事(即使解释起来也很困难),并且可能需要几天时间才能实现基本功能,但是当然可能会有不同的(非常成功的)结果.
其中一个主要困难在于两个相关的运动如何没有明确地联系起来,而不是一些有约束力的转移ID,你有一个"到"运动和一个"从"运动,它们之间的关闭时间和相同的数量.
顺便说一句,维护一个干净的核心分支也是一种选择,您可以对核心进行最小的更改,这些更改可以轻松地与更新合并.就像在方便的地方添加钩子一样,用一个核心类替换你自己的类等等.这样可以减少黑客攻击.
我很乐意聊聊并讨论上述方法的细节.祝您节日快乐,祝您好运!
| 归档时间: |
|
| 查看次数: |
1095 次 |
| 最近记录: |