发票

VirtueMart有自己的发票系统,为您做以下工作:

  • 创建订单号和发票号
  • 创建PDF发票
  • 将PDF发票存储在安全路径中
  • 根据配置中选择的订单状态自动发送发票或手动发送发票

一般处理

发票存储在safepath的子文件夹“发票”中。订单列表提供用于手动下载或打印发票/送货单的图标。如果发票已发送或将创建,图标将给出提示。发票一旦创建就不能删除,也不会自动更新。这是有法律依据的。但由于vm3.0.10,可以通过更改订单状态来创建更新的订单。从一个订单状态更改为另一个订单状态,两者都会创建发票,然后重命名旧发票并创建新发票。购物者可以查看订单并下载现有发票,但不能创建发票。

配置

vm配置在标签签出自己的设置pdf,并允许配置订单状态发送和/或创建发票。

页面布局

页眉、页脚和常规设置可在“车间编辑”视图中配置,分别用于供应商的用户编辑。在那里可以设置默认字体、字体大小、页面格式、页面边距、方向、供应商图像等。

定制PDF

为了完全定制,可以像往常一样使用布局替代。如果您想查看非pdf格式的发票,只需使用打印视图(转到后端订单列表,使用打印图标,复制粘贴弹出窗口的链接)。应该是这样的:
/index.php?option=com\u virtuemart&view=invoice&layout=invoice&format=pdf&tmpl=component&virtuemart\u order\u id=5

只需删除&format=pdf以显示视图,而不是将其呈现为pdf。您还可以使用&layout=mail而不是&layout=invoice自定义邮件布局。
/ index . php ?选择= com_virtuemart&view = invoice&layout = mail&tmpl = component&virtuemart_order_id = 5

发票的名称“vminvoice”可以使用langkey COM_VIRTUEMART_FILEPREFIX_INVOICE重命名

可以使用langkey COM_VIRTUEMART_FILEPREFIX_DELIVERYNOTE重命名交货通知的名称

重要的是要考虑布局发票

可以从页面上的不同位置创建发票。这意味着插件可以从前端(FE)更改订单状态,因此发票由前端应用程序创建。但是,当订单的orderstatus发生更改时,也可以在后端(be)中更改订单状态。注意,屏幕上的图标可能会使用FE(它是一个链接)。因此,在FE的情况下,执行index.php通常在根目录下,并使用just/,但为BE执行的index.php位于/administrator/。因此,发票的布局应作为布局电子邮件处理。与电子邮件类似,布局应使用xhtml1.0编写。

任何url都应该是绝对url。在布局覆盖和CSS的发票。标准布局使用了VirtueMart API并处理了这一点。

  • 产品链接应使用JUri::root()(或VMF中的vUri::root())
  • 此外,重要的是要确保正确设置了变量VirtueMartModelCustomfields::$ use谬s(在标准布局中完成)。也许是搬出去了。
  • 在发票布局中设置的所有图像必须有完整的URL,例如http:://mydomain.com/images/…,确保编辑器保持绝对URL。

所有图片必须是jpg或gif。Tcpdf允许某些类型的png,其他则不允许。如果有疑问,就使用jpg或gif。

TCPDF库默认使用的字体有:courier, freemono, helvetica。

要更新TCDPF中的字体,请将正确的字体文件上传到您的/libraries/tcpdf/fonts/,如果在您的所见即所见模板中使用了不存在的字体,您可能会收到一个致命错误。

订单和发票号码的格式

订单号的要求是

  • 创造独特的关系
  • 没有可猜测的
  • 可以包含连续的数字吗

订单号的格式为RRRR0C,其中R表示随机,C表示计数器。随机数与计数器之间用0隔开。我们没有在订单号中使用简单的计数器,因为它太容易被“黑客”猜出来,可以用于社会工程,以获得支持,实际客户的地址等。

发票号码的要求是

  • 创造独特的关系
  • 没有可猜测的
  • 必须包含连续数
  • 你可以随意选择
  • 应该是合适的

因此,格式为YYMMDDRRR0c,YY代表年份,MM代表月份,DD代表天。计数器使用所有发票的发票条目。许多国家仍然坚持使用无空白的消费数字,因此,如果您的店铺是在线的,请不要删除发票!最好将其设置为“已取消”。

当已创建发票并将其设置为新订单状态时,这也应该创建发票(例如从“已确认”到“已取消”),然后在创建新发票之前重命名旧发票。

故障排除

Tcpdf需要干净的html。使用“定制PDF”中给出的提示来确保html本身没有错误是非常方便的。特别检查丢失的图像和图标。只要使用virtuemart的JS处理程序设置了任何相关的JS,就不会为pdf渲染JS。

总的来说,tcpdf库在使用png和alpha通道时不是很好。如果在使用图像时出现错误,检查是否使用gif或png图像,并将其替换为jpg。

没有发送带有发票的电子邮件

问题很可能是一个坏了的pdf文件。创建一个pdf文件可能需要很多内存,可能需要将memory_limit增加到256 MB。如果你的服务器很慢,可能需要将最大执行时间增加到60秒。一个正常的页面调用在前端通常花费不超过20mb,不应该超过1.5秒。

TCPDF错误:[图像]无法获取图像的大小:

TCPDF无法在路径上找到一些必需的文件。要解决这个问题,请使用“自定义pdf”章节,并检查html中缺少的图像。它也可以是一个htaccess目录保护。

XObject模板'-1'不存在!

请安装我们新的安装程序所提供的tcpdf库http://dev.virtuemart.net/projects/tcpdf/files

我不想创建发票

1.在订单状态标签上创建一个新的状态,如称其为无发票,并给它一个代码,如Z
2.在“配置/电子邮件”选项卡上,仅选择“无发票”作为默认订单状态以创建发票(或在“配置/签出”选项卡上使用的版本早于VM3.0.11)。付款插件不会使用该状态,因此将忽略创建/发送发票。

致命错误:调用undefined方法VmVendorPDF::convertHTMLColorToDec()

这是由于使用低于6的TCPDF版本造成的,只需使用我们的新组件更新您的TCPDF即可http://dev.virtuemart.net/projects/tcpdf/files