包装成本

Packaging Costs

我想在任何订单中添加一个 服务产品,类似于 运费 的行,提供有关 包装成本.

任何人都可以给我一些提示,以实现所描述的目标需要哪些步骤。提前谢谢你。

选项 1

最好的方法是创建一个'free text field'(配置-> 自由文本字段管理),然后修改店面设置中的SQL 查询(配置-> 基本设置-> 前端- > 运费模块)。

现在取决于你想如何改变它或者包装成本是否相同。虽然我相信你可能想让它们取决于产品的大小。

所以你可以这样做:

//You put this code in the Shipping Costs Modules
MAX(a.topseller) AS has_topseller, MAX(at.attr3) AS has_comment
MAX(b.esdarticle) AS has_esd,
SUM(at.attr4*b.quantity)

这里的重要部分是最后一行代码。

要完成这项工作,您必须创建一个名为 attr4 的 'free text field',现在在后端的文章详细信息中(项目 -> 概述 -> 钢笔符号),您为文章输入您希望的值。

但是这个示例非常具体,因为您必须对每篇文章都执行此操作,但几乎所有情况的方法都相同。

  1. 添加新的自由文本字段
  2. 在文章详细信息中编辑它的值
  3. 修改'Shipping Costs Modules'中的SQL

如果您懂德语,您还可以查看该主题的文档 here


选项 2

在选项 1 中,价格只是添加到正常运费中。不过如果你想让它们分开显示,我能想到的唯一方法就是创建一个小插件。

要从选项 2 开始,您必须创建一个自由文本字段。 创建后去结帐 -> cart_footer.tpl

在运费和总金额之间添加新添加的自由文本字段,如下所示:

{block name='frontend_checkout_cart_footer_field_labels_shipping'}{/block}
{block name='frontend_checkout_cart_footer_field_labels_package}

        {block name='frontend_checkout_cart_footer_field_labels_package_label'}
                        <div class="entry--label block">
                            Packaging Costs
                        </div>
        {/block}
        {block name='frontend_checkout_cart_footer_field_labels_package_label'}
                        <div class="entry--label block">
                            {s name="CartFooterLabelPackage"}{/s}
                        </div>
        {/block}
{/block}
{block name='frontend_checkout_cart_footer_field_labels_total'}{/block}

这基本上只是为了让客户看到他为包装支付的价格。

现在是创建插件的时候了。

您基本上要做的就是创建一个本地插件,提交一些简单的 SQL 查询。

您创建如图所示的基本插件结构here

然后你修改它,在 checkout/finish 控制器上操作 invoice_amount:

public function addPackage()
{
  $package       = 2.5;
  $select        = "SELECT invoice_amount FROM s_attribute_configuration ORDER BY id DESC LIMIT 1";
  $select_result = Shopware()->Container()->get('models')->getConnection()->fetchColumn($select);
  $new_price     = $select_result + $package;
  $update        = "UPDATE s_attribute_configuration SET invoice_amount = $new_price ORDER BY id DESC LIMIT 1"
  $update_result = Shopware()->Db()->query($update);
}

类似的东西应该可以做到。只需将其挂接到完成操作即可。

你现在遇到的最后一个问题是总和已经在前端更新了。我想你可以用一些 Javascript.

来更新它

选项 1.1

在为选项 2 创建 PHP-脚本时想到了这个想法:

只需像选项 1 一样将包装添加到运费中,然后在运费下添加一些信息,其中包含(在此处插入包装总和)的包装成本。您也可以使用自由文本字段来做到这一点。将是最简单的解决方案,可以让您几乎完美地达到您想要的结果。

希望这些对您有所帮助。