该代码实现了发货通知单的下载功能,用户可以选择要下载的发货通知单,系统将生成包含发货通知单详细信息的 Excel 文件供用户下载。
SaleDeliveryXlsRrport
类,该类继承自 http.Controller
,包含一个路由 /web/export/sale_delivery_xls
,用于处理发货通知单的导出请求,生成 Excel 文件并返回给用户。SaleDeliveryDownload
模型,该模型包含两个字段 order_ids
和 type
,分别用于选择要下载的发货通知单和指定下载类型。action_download
方法用于生成下载链接并打开新窗口进行下载。在 Odoo 系统中找到 sale.delivery.download
向导(一般在相关菜单或操作按钮中),在 order_ids
字段中选择要下载的发货通知单,type
字段默认值为 sale_delivery
,无需修改。
点击 action_download
按钮(一般在向导界面中有对应的按钮),系统会调用 action_download
方法。
action_download
方法会将选择的发货通知单的 ids
和类型信息编码成 JSON 格式,并生成一个包含 data
和 token
的字典 datas
。然后,将这些数据编码成 URL 参数,拼接在 /web/export/sale_delivery_xls
路由后面,生成一个完整的下载链接。
系统会以新窗口的方式打开生成的下载链接,此时会触发 SaleDeliveryXlsRrport
类中的 index
方法。
index
方法会根据传入的 order_ids
从数据库中获取相应的发货通知单记录,然后使用 xlsxwriter
库创建一个 Excel 文件,将发货通知单的详细信息写入 Excel 文件中,包括发货通知单号、客户信息、交货地址、产品信息等。
Excel 文件生成后,系统会将文件以 发货通知_时间戳.xls
的文件名返回给用户,用户可以选择保存文件到本地。
xlsxwriter
库已正确安装,否则可能会导致 Excel 文件生成失败。order_ids
必须是有效的记录,否则可能会抛出异常。partner_id
、sale_id
等)必须存在,否则可能会导致部分信息无法正确显示在 Excel 文件中。