发票
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