# Table of Contents - [前言 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二章 Odoo上线顺序 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-odoo-) - [第三部分 销售管理 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一章 Odoo简介 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-odoo-) - [第四章 联系人与合作伙伴 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第五章 产品基础 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第七章 邮箱配置 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十章 租赁 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一章 销售管理总览 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三章 报价单与客户确认 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第六章 价格表、折扣与多币种 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第四部分 采购管理 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二章 成本计算 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第五章 开票策略与预付款 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二部分 基础数据 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第八章 销售与库存交付 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十二章 第二单位 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第九章 退货、退款与售后处理 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第七章 税率与财政结构 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一章 采购管理 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三章 公司和用户 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第九章 报表 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二章 销售产品与变体 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第四章 销售订单流程 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三章 基础数据准备 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第四章 测试库演练方法 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二章 数据库管理 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第八章 消息与讨论 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十一章 消费税 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第六章 导入与导出 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二章 库位管理 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第五部分 仓库管理 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第九章 上架规则 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三章 调拨类型 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第八章 条码规则 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第六章 订货规则 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三十七章 小程序商城专业版 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [外贸定制化服装 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [外贸行业方案 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [FAQ · odoo实施参考手册-青岛欧姆网络科技](#faq-odoo-) - [Odoo Implementation Manual · Odoo Implementation Manual - Qingdao Ohm Network Technology](#odoo-implementation-manual-odoo-implementation-manual-qingdao-ohm-network-technology) - [第十一章 物流方式 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十章 存储类别 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一章 实施前准备 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一部分 自主实施路线图 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十二章 成本核算 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三章 管理工单 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一章 基本概念 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第五章 工作中心 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第七章 套件生产 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第六部分 生产管理 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三章 支付 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第四章 对账 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第五章 日记账 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二章 开票 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第八部分 多公司 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一章 基础概念 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二章 商城 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第四章 邮件营销 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第五章 销售门户 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二章 自助终端 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第七部分 财务管理 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第五章 设置价格表 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第四章 支付方式 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一章 POS产品管理 · odoo实施参考手册-青岛欧姆网络科技](#-pos-odoo-) - [第五章 POS批次自动出库 · odoo实施参考手册-青岛欧姆网络科技](#-pos-odoo-) - [第四章 POS销售 · odoo实施参考手册-青岛欧姆网络科技](#-pos-odoo-) - [第六章 客户忠诚度 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一章 EPOS打印 · odoo实施参考手册-青岛欧姆网络科技](#-epos-odoo-) - [第十一部分 设置 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第四章 IP白名单 · odoo实施参考手册-青岛欧姆网络科技](#-ip-odoo-) - [第二章 语言设置 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一章 多公司间的采购 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三章 附件共享 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第九章 技术设置 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十二部分 通用解决方案 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十部分 销售点(POS) · odoo实施参考手册-青岛欧姆网络科技](#-pos-odoo-) - [第四章 微信POS支付 · odoo实施参考手册-青岛欧姆网络科技](#-pos-odoo-) - [第六章 支付宝POS支付 · odoo实施参考手册-青岛欧姆网络科技](#-pos-odoo-) - [STUDIO · odoo实施参考手册-青岛欧姆网络科技](#studio-odoo-) - [第五章 支付宝支付 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十章 企业微信审批 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第七章 Pos LinePay · odoo实施参考手册-青岛欧姆网络科技](#-pos-linepay-odoo-) - [第十二章 顺丰国际 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十三章 圆通速递 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第九部分 网站 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十七章 17Track · odoo实施参考手册-青岛欧姆网络科技](#-17track-odoo-) - [第十五章 快递鸟模块 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第八章 企业微信基础 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十一章 顺丰速递 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第九章 企业微信高级 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十六章 云途物流 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二十三章 韵达速递 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十九章 飞书/Lark · odoo实施参考手册-青岛欧姆网络科技](#-lark-odoo-) - [第二十章 阿里云短信 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一章 门户 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三章 小票和发票 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二十四章 指定支付方式 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一章 通用设置 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二十二章 WindCave · odoo实施参考手册-青岛欧姆网络科技](#-windcave-odoo-) - [第二十七章 QuickBooks · odoo实施参考手册-青岛欧姆网络科技](#-quickbooks-odoo-) - [第二十八章 京东快递 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二十一章 NMI支付 · odoo实施参考手册-青岛欧姆网络科技](#-nmi-odoo-) - [第三章 微信支付 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三十章 AWS S3 · odoo实施参考手册-青岛欧姆网络科技](#-aws-s3-odoo-) - [第三十一章 Google Cloud Storage · odoo实施参考手册-青岛欧姆网络科技](#-google-cloud-storage-odoo-) - [第二十六章 Xero · odoo实施参考手册-青岛欧姆网络科技](#-xero-odoo-) - [第三章 访问令牌 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第二十五章 Shopline对接 · odoo实施参考手册-青岛欧姆网络科技](#-shopline-odoo-) - [第三十四章 云打印 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第十二部分 行业解决方案 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第一章 微信扫码登陆 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三十八章 腾讯云COS · odoo实施参考手册-青岛欧姆网络科技](#-cos-odoo-) - [第二章 微信公众号 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [发货解决方案 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [Chapter 7 Email Configuration · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-7-email-configuration-odoo-implementation-manual-qingdao-ohm-network-technology) - [第三十五章 prod-backup方案 · odoo实施参考手册-青岛欧姆网络科技](#-prod-backup-odoo-) - [第十四章 DHL中国 · odoo实施参考手册-青岛欧姆网络科技](#-dhl-odoo-) - [第十八章 小红书 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [Chapter 1 Sales Management Overview · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-1-sales-management-overview-odoo-implementation-manual-qingdao-ohm-network-technology) - [第三十二章 Shopify · odoo实施参考手册-青岛欧姆网络科技](#-shopify-odoo-) - [第二十九章 阿里云对象存储 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三十六章 小程序商城 · odoo实施参考手册-青岛欧姆网络科技](#-odoo-) - [第三十三章 Revolut支付 · odoo实施参考手册-青岛欧姆网络科技](#-revolut-odoo-) - [Part 3 Sales Management · Odoo Implementation Manual - Qingdao Ohm Network Technology](#part-3-sales-management-odoo-implementation-manual-qingdao-ohm-network-technology) - [Part 4 Purchase Management · Odoo Implementation Manual - Qingdao Ohm Network Technology](#part-4-purchase-management-odoo-implementation-manual-qingdao-ohm-network-technology) - [Part 5 Warehouse Management · Odoo Implementation Manual - Qingdao Ohm Network Technology](#part-5-warehouse-management-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 2 Cost Calculation · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-2-cost-calculation-odoo-implementation-manual-qingdao-ohm-network-technology) - [Part 6 Manufacturing Management · Odoo Implementation Manual - Qingdao Ohm Network Technology](#part-6-manufacturing-management-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 3 Managing Work Orders · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-3-managing-work-orders-odoo-implementation-manual-qingdao-ohm-network-technology) - [Part 7 Accounting Management · Odoo Implementation Manual - Qingdao Ohm Network Technology](#part-7-accounting-management-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 5 Journals · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-5-journals-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 4 Sales Order Process · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-4-sales-order-process-odoo-implementation-manual-qingdao-ohm-network-technology) - [Part 8 Multi-Company · Odoo Implementation Manual - Qingdao Ohm Network Technology](#part-8-multi-company-odoo-implementation-manual-qingdao-ohm-network-technology) - [Part 1 Self-Implementation Roadmap · Odoo Implementation Manual - Qingdao Ohm Network Technology](#part-1-self-implementation-roadmap-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 2 Odoo Go-Live Sequence · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-2-odoo-go-live-sequence-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 1 Introduction To Odoo · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-1-introduction-to-odoo-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 3 Master Data Preparation · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-3-master-data-preparation-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 4 Contacts And Partners · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-4-contacts-and-partners-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 3 Companies And Users · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-3-companies-and-users-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 2 Database Management · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-2-database-management-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 8 Sales And Inventory Delivery · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-8-sales-and-inventory-delivery-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 6 Import And Export · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-6-import-and-export-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 7 Taxes And Fiscal Positions · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-7-taxes-and-fiscal-positions-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 11 Excise Duty · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-11-excise-duty-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 10 Rental · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-10-rental-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 6 Pricelists, Discounts, And Multi-Currency · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-6-pricelists-discounts-and-multi-currency-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 8 Messages And Discuss · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-8-messages-and-discuss-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 1 Purchase Management · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-1-purchase-management-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 2 Sales Products And Variants · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-2-sales-products-and-variants-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 2 Location Management · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-2-location-management-odoo-implementation-manual-qingdao-ohm-network-technology) - [Part 2 Basic Data · Odoo Implementation Manual - Qingdao Ohm Network Technology](#part-2-basic-data-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 1 Basic Concepts · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-1-basic-concepts-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 9 Putaway Rules · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-9-putaway-rules-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 10 Storage Categories · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-10-storage-categories-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 4 Test Database Rehearsal Method · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-4-test-database-rehearsal-method-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 11 Delivery Methods · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-11-delivery-methods-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 12 Inventory Cost Valuation · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-12-inventory-cost-valuation-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 1 Preparation Before Implementation · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-1-preparation-before-implementation-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 5 Product Basics · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-5-product-basics-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 5 Quality Checks · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-5-quality-checks-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 1 Basic Concepts · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-1-basic-concepts-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 7 Kit Production · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-7-kit-production-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 2 Invoicing · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-2-invoicing-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 4 Customer Statements · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-4-customer-statements-odoo-implementation-manual-qingdao-ohm-network-technology) - [Part 9 Website · Odoo Implementation Manual - Qingdao Ohm Network Technology](#part-9-website-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 1 Inter-Company Purchasing · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-1-inter-company-purchasing-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 12 Secondary Units · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-12-secondary-units-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 2 eCommerce · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-2-ecommerce-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 6 Reordering Rules · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-6-reordering-rules-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 1 POS Product Management · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-1-pos-product-management-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 3 Access Tokens · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-3-access-tokens-odoo-implementation-manual-qingdao-ohm-network-technology) - [Part 10 Point of Sale · Odoo Implementation Manual - Qingdao Ohm Network Technology](#part-10-point-of-sale-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 9 Returns, Refunds, And After-Sales Handling · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-9-returns-refunds-and-after-sales-handling-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 3 POS Receipts And Invoices · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-3-pos-receipts-and-invoices-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 3 Operation Types · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-3-operation-types-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 5 Sales Portal · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-5-sales-portal-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 6 Customer Loyalty · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-6-customer-loyalty-odoo-implementation-manual-qingdao-ohm-network-technology) - [Part 11 Settings · Odoo Implementation Manual - Qingdao Ohm Network Technology](#part-11-settings-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 8 POS Sales · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-8-pos-sales-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 7 ePOS Printing · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-7-epos-printing-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 1 General Settings · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-1-general-settings-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 9 Reports · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-9-reports-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 3 Quotations And Customer Confirmation · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-3-quotations-and-customer-confirmation-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 5 Invoicing Policy And Down Payments · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-5-invoicing-policy-and-down-payments-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 2 Language Settings · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-2-language-settings-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 5 Technical Settings · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-5-technical-settings-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 3 Payments · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-3-payments-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 4 IP Whitelist · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-4-ip-whitelist-odoo-implementation-manual-qingdao-ohm-network-technology) - [WeChat Pay Solution · Odoo Implementation Manual - Qingdao Ohm Network Technology](#wechat-pay-solution-odoo-implementation-manual-qingdao-ohm-network-technology) - [POS WeChat Pay · Odoo Implementation Manual - Qingdao Ohm Network Technology](#pos-wechat-pay-odoo-implementation-manual-qingdao-ohm-network-technology) - [WeChat Official Account Solution · Odoo Implementation Manual - Qingdao Ohm Network Technology](#wechat-official-account-solution-odoo-implementation-manual-qingdao-ohm-network-technology) - [POS Line Pay · Odoo Implementation Manual - Qingdao Ohm Network Technology](#pos-line-pay-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 2 Kiosk Self-Ordering · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-2-kiosk-self-ordering-odoo-implementation-manual-qingdao-ohm-network-technology) - [POS Alipay · Odoo Implementation Manual - Qingdao Ohm Network Technology](#pos-alipay-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 4 Mailing Lists · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-4-mailing-lists-odoo-implementation-manual-qingdao-ohm-network-technology) - [SF International · Odoo Implementation Manual - Qingdao Ohm Network Technology](#sf-international-odoo-implementation-manual-qingdao-ohm-network-technology) - [KDNiao Module · Odoo Implementation Manual - Qingdao Ohm Network Technology](#kdniao-module-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 9 Automatic Delivery For Lot And Serial-Tracked POS Products · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-9-automatic-delivery-for-lot-and-serial-tracked-pos-products-odoo-implementation-manual-qingdao-ohm-network-technology) - [YTO Express · Odoo Implementation Manual - Qingdao Ohm Network Technology](#yto-express-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 4 Payment Methods · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-4-payment-methods-odoo-implementation-manual-qingdao-ohm-network-technology) - [Advanced WeCom Applications · Odoo Implementation Manual - Qingdao Ohm Network Technology](#advanced-wecom-applications-odoo-implementation-manual-qingdao-ohm-network-technology) - [DHL For China Export Scenarios · Odoo Implementation Manual - Qingdao Ohm Network Technology](#dhl-for-china-export-scenarios-odoo-implementation-manual-qingdao-ohm-network-technology) - [SF Express · Odoo Implementation Manual - Qingdao Ohm Network Technology](#sf-express-odoo-implementation-manual-qingdao-ohm-network-technology) - [Xiaohongshu Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology](#xiaohongshu-integration-odoo-implementation-manual-qingdao-ohm-network-technology) - [17TRACK Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology](#17track-integration-odoo-implementation-manual-qingdao-ohm-network-technology) - [NMI Payment · Odoo Implementation Manual - Qingdao Ohm Network Technology](#nmi-payment-odoo-implementation-manual-qingdao-ohm-network-technology) - [Alibaba Cloud SMS · Odoo Implementation Manual - Qingdao Ohm Network Technology](#alibaba-cloud-sms-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 1 Portal · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-1-portal-odoo-implementation-manual-qingdao-ohm-network-technology) - [Lark / Feishu Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology](#lark-feishu-integration-odoo-implementation-manual-qingdao-ohm-network-technology) - [Website Payment Method Restrictions · Odoo Implementation Manual - Qingdao Ohm Network Technology](#website-payment-method-restrictions-odoo-implementation-manual-qingdao-ohm-network-technology) - [JD Logistics · Odoo Implementation Manual - Qingdao Ohm Network Technology](#jd-logistics-odoo-implementation-manual-qingdao-ohm-network-technology) - [QuickBooks · Odoo Implementation Manual - Qingdao Ohm Network Technology](#quickbooks-odoo-implementation-manual-qingdao-ohm-network-technology) - [Yunda Express · Odoo Implementation Manual - Qingdao Ohm Network Technology](#yunda-express-odoo-implementation-manual-qingdao-ohm-network-technology) - [General Solutions · Odoo Implementation Manual - Qingdao Ohm Network Technology](#general-solutions-odoo-implementation-manual-qingdao-ohm-network-technology) - [Xero Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology](#xero-integration-odoo-implementation-manual-qingdao-ohm-network-technology) - [Shopline Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology](#shopline-integration-odoo-implementation-manual-qingdao-ohm-network-technology) - [A Practical View Of Odoo Studio · Odoo Implementation Manual - Qingdao Ohm Network Technology](#a-practical-view-of-odoo-studio-odoo-implementation-manual-qingdao-ohm-network-technology) - [Google Cloud Storage · Odoo Implementation Manual - Qingdao Ohm Network Technology](#google-cloud-storage-odoo-implementation-manual-qingdao-ohm-network-technology) - [Revolut Pay Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology](#revolut-pay-integration-odoo-implementation-manual-qingdao-ohm-network-technology) - [Alibaba Cloud OSS · Odoo Implementation Manual - Qingdao Ohm Network Technology](#alibaba-cloud-oss-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 5 POS Pricelists · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-5-pos-pricelists-odoo-implementation-manual-qingdao-ohm-network-technology) - [Shopify And Odoo Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology](#shopify-and-odoo-integration-odoo-implementation-manual-qingdao-ohm-network-technology) - [Odoo Prod Backup Solution · Odoo Implementation Manual - Qingdao Ohm Network Technology](#odoo-prod-backup-solution-odoo-implementation-manual-qingdao-ohm-network-technology) - [WeChat Mini Program Store · Odoo Implementation Manual - Qingdao Ohm Network Technology](#wechat-mini-program-store-odoo-implementation-manual-qingdao-ohm-network-technology) - [WeCom Solution · Odoo Implementation Manual - Qingdao Ohm Network Technology](#wecom-solution-odoo-implementation-manual-qingdao-ohm-network-technology) - [WeChat Mini Program Store Pro · Odoo Implementation Manual - Qingdao Ohm Network Technology](#wechat-mini-program-store-pro-odoo-implementation-manual-qingdao-ohm-network-technology) - [Industry Solutions · Odoo Implementation Manual - Qingdao Ohm Network Technology](#industry-solutions-odoo-implementation-manual-qingdao-ohm-network-technology) - [Foreign Trade Industry Solution · Odoo Implementation Manual - Qingdao Ohm Network Technology](#foreign-trade-industry-solution-odoo-implementation-manual-qingdao-ohm-network-technology) - [Alipay Payment · Odoo Implementation Manual - Qingdao Ohm Network Technology](#alipay-payment-odoo-implementation-manual-qingdao-ohm-network-technology) - [WeChat QR Code Login · Odoo Implementation Manual - Qingdao Ohm Network Technology](#wechat-qr-code-login-odoo-implementation-manual-qingdao-ohm-network-technology) - [FAQ · Odoo Implementation Manual - Qingdao Ohm Network Technology](#faq-odoo-implementation-manual-qingdao-ohm-network-technology) - [Windcave Payment · Odoo Implementation Manual - Qingdao Ohm Network Technology](#windcave-payment-odoo-implementation-manual-qingdao-ohm-network-technology) - [WeCom-Based Petty Cash And Expense Reimbursement · Odoo Implementation Manual - Qingdao Ohm Network Technology](#wecom-based-petty-cash-and-expense-reimbursement-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 8 Barcode Rules · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-8-barcode-rules-odoo-implementation-manual-qingdao-ohm-network-technology) - [Tencent Cloud COS · Odoo Implementation Manual - Qingdao Ohm Network Technology](#tencent-cloud-cos-odoo-implementation-manual-qingdao-ohm-network-technology) - [AWS S3 Simple Storage · Odoo Implementation Manual - Qingdao Ohm Network Technology](#aws-s3-simple-storage-odoo-implementation-manual-qingdao-ohm-network-technology) - [Cloud Printing · Odoo Implementation Manual - Qingdao Ohm Network Technology](#cloud-printing-odoo-implementation-manual-qingdao-ohm-network-technology) - [Foreign Trade Shipping · Odoo Implementation Manual - Qingdao Ohm Network Technology](#foreign-trade-shipping-odoo-implementation-manual-qingdao-ohm-network-technology) - [Chapter 3 Attachment Sharing · Odoo Implementation Manual - Qingdao Ohm Network Technology](#chapter-3-attachment-sharing-odoo-implementation-manual-qingdao-ohm-network-technology) - [YunExpress Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology](#yunexpress-integration-odoo-implementation-manual-qingdao-ohm-network-technology) - [Foreign Trade Custom Apparel · Odoo Implementation Manual - Qingdao Ohm Network Technology](#foreign-trade-custom-apparel-odoo-implementation-manual-qingdao-ohm-network-technology) --- # 前言 · odoo实施参考手册-青岛欧姆网络科技 [前言](https://xp.odoohub.com.cn/) ================================= Odoo 实施使用参考手册 ============= 版本:19.0.0 作者:[青岛欧姆网络科技](https://odoohub.com.cn/) Kevin > English version: [Odoo Implementation Manual](https://xp.odoohub.com.cn/en/index.html) 前言 -- ### 为什么要写这本书 经常有朋友在购买我的服务的时候会问到我这里有没有Odoo的使用手册,遗憾的是,笔者从事了Odoo这么多年的实施和开发,并未能总结出来经验手册之类的东西。细想来,一方面是开发任务比较重,但凡有点空闲时间都去干别的事情了,另一方面就是Odoo的版本变化比较频繁,可能现有的解决方案,在下个版本就不适用了,所以,很难有成体系的东西出来。 本着有困难要上,本着困难制造困难也要上的精神,笔者决定开始执笔写一本Odoo的经验之书。起名实施使用参考手册,因为这里提供的经验不一定适用于您的企业,因为Odoo的开源与灵活,很难说市面上现有的方案就会使您企业的最佳实践。因此,本书的目的,为您提供一种现有通用的解决方案,不是给您最终的解决方案。 ### 本书的架构 本书将按照原生业务模块(销售、采购、仓储和生产等)若干大模块划分,读者可以根据章节目录迅速找到想要阅读的部分。当然,模块间的关系其实并不是割裂的,而是有着千丝万缕的联系,因此不能够单独的进行学习,但是为了查找方便,本书将尽量将独立的一个功能作为单独的一章进行编排,以方便读者进行快速查找。 ### 版本声明 由于odoo每年一更的节奏,导致很多时候我们上一个版本还没来得及完成就已经过时了。因此,我们决定本书使用"杂糅模式",即将多个版本的内容都涵盖在内,在有区别的地方使用声明的形式标注其他版本的异同。同时,本书也不会有正式版,因为一直在滚动更新,跟贴近于参考手册的定义。 当前主版本基于19.0, 涵盖:16.0 17.0 18.0 ### 建议和反馈 本书由[青岛欧姆网络科技](https://www.odoomommy.com/) 编写发布,读者如有意见和建议,欢迎关注公众号OdooHub,进行反馈。 ![OdooHub](https://xp.odoohub.com.cn/pub.png) results matching "" =================== No results matching "" ====================== --- # 第二章 Odoo上线顺序 · odoo实施参考手册-青岛欧姆网络科技 [第二章 Odoo上线顺序](https://xp.odoohub.com.cn/) =========================================== 第二章 Odoo上线顺序 ============ Odoo 是一个模块化系统。模块化的好处是企业可以按需启用,坏处是新用户容易不知道从哪里开始。 本章给出一套适合国内中小企业的通用上线顺序。它不是唯一答案,但足够安全,适合大多数第一次自主实施 Odoo 的企业。 总体原则 ---- 上线顺序应该遵守三个原则: * 先基础数据,后业务单据; * 先主流程,后自动化; * 先原生功能,后定制开发。 很多项目失败,不是因为 Odoo 做不到,而是因为顺序反了。一开始就做复杂审批、报表、接口和定制页面,基础数据和业务流程反而没有跑通。 推荐上线阶段 ------ | 阶段 | 目标 | 主要工作 | | --- | --- | --- | | 第0阶段 | 准备测试库 | 确认公司、用户、语言、模块范围 | | 第1阶段 | 基础数据 | 客户、供应商、产品、仓库、税率、银行账号 | | 第2阶段 | 销售采购库存闭环 | 报价、销售订单、采购订单、收货、发货 | | 第3阶段 | 财务闭环 | 开票、付款、银行流水、对账、应收应付 | | 第4阶段 | 权限和报表 | 按岗位分配权限,确认老板和部门报表 | | 第5阶段 | 上线演练 | 用测试数据跑完整流程,确认异常流程 | | 第6阶段 | 正式上线 | 导入期初数据,切换到正式录入 | | 第7阶段 | 二期优化 | 自动化、接口、行业定制、管理驾驶舱 | 不要跳过第 0 阶段和第 1 阶段。它们看起来不产生业务单据,但决定了后面系统是否稳定。 第0阶段:准备测试库 ---------- 测试库要先完成这些基础动作: * 创建公司资料; * 设置语言和时区; * 创建管理员以外的业务用户; * 安装本期要用的模块; * 设置基本文档版式; * 准备一套测试客户、测试供应商、测试产品。 测试库不要怕弄乱。它的价值就是让大家在上线前犯错。 第1阶段:基础数据 --------- 基础数据是 Odoo 的地基。 建议按这个顺序准备: 1. 公司资料; 2. 用户和权限; 3. 客户和联系人; 4. 供应商; 5. 产品类别; 6. 产品; 7. 仓库和库位; 8. 税率; 9. 银行账号; 10. 期初库存和财务余额。 如果客户、产品、供应商资料没有整理好,不建议急着导入。宁可少导入一些高质量数据,也不要一次性导入大量错误数据。 第2阶段:销售采购库存闭环 ------------- 对贸易型企业来说,第一条要跑通的通常是: 客户报价 -> 销售订单 -> 采购订单 -> 入库 -> 发货 -> 客户签收 这一阶段要验证: * 销售能不能创建报价; * 报价确认后库存是否产生发货需求; * 没有库存时采购是否能补货; * 采购收货后库存是否增加; * 发货完成后客户订单状态是否正确; * 部分发货、取消订单、退货是否能处理。 这一阶段不一定要马上把财务做得很细,但必须让业务单据能顺利流转。 第3阶段:财务闭环 --------- 业务流程跑通后,要让财务参与进来。 财务阶段要验证: * 销售订单能否创建客户发票; * 采购订单能否匹配供应商账单; * 客户付款能否登记; * 供应商付款能否登记; * 银行流水能否导入或同步; * 银行交易能否和发票、付款进行对账; * 应收账款、应付账款、账龄报表是否能看懂。 很多企业会把“开票”理解成中国增值税发票。这里要注意,Odoo 的 Invoice 是会计应收/应付单据,不等于税控系统里的中国发票。国内企业如果要对接开票平台,需要单独评估。 第4阶段:权限和报表 ---------- 权限不要等上线后再补。业务流程跑通后,就应该切换到真实岗位账号测试。 建议至少测试这些角色: * 销售能否只看到自己负责的客户和订单; * 仓库能否收发货,但不能改销售价格; * 采购能否下采购单,但不能改会计凭证; * 财务能否处理发票和付款,但不随意改库存; * 老板能否看到报表,但不参与日常录单。 报表也要在这个阶段确认。不要等上线后才发现老板要看的指标系统里没有。 第5阶段:上线演练 --------- 上线前至少做一次完整演练。 演练不要只做顺利流程,还要故意测试异常情况: * 销售订单取消; * 部分发货; * 客户退货; * 采购部分收货; * 供应商账单金额和采购单不一致; * 客户部分付款; * 银行流水找不到对应发票; * 员工没有权限操作某个按钮。 只有异常流程也能处理,才说明系统真的可用。 第6阶段:正式上线 --------- 正式上线前,要确定一个切换时间点。 比如: > 从 2026 年 8 月 1 日开始,所有新销售订单都在 Odoo 中录入,旧系统只查历史,不再新增业务。 切换时要处理: * 期初库存; * 期初应收; * 期初应付; * 未完成销售订单; * 未完成采购订单; * 未完成发货和收货; * 银行余额; * 旧系统只读或停止录入。 不要让两个系统长期同时录入同一类业务,否则数据一定会对不上。 第7阶段:二期优化 --------- 第一期上线后,再考虑二期。 二期适合做: * 审批流程; * 自动补货; * 价格规则; * 佣金和返利; * 网站商城; * POS门店; * 微信、企业微信、支付、物流接口; * 管理驾驶舱; * 行业定制模块。 这时再定制,需求会更准确。因为客户已经知道原生 Odoo 能做什么,也知道自己真正缺什么。 不建议的上线方式 -------- 不建议这样做: * 第一天就安装所有模块; * 先做定制开发,再跑原生流程; * 没有测试库,直接在正式库操作; * 只由老板或管理员测试,不让真实岗位员工参与; * 一边上线一边大规模改基础数据; * 没有确定旧系统和新系统的切换日期。 自主实施的最低成功标准 ----------- 如果客户不知道自己是否已经准备好上线,可以用下面这张表判断。 | 检查项 | 通过标准 | | --- | --- | | 基础资料 | 客户、供应商、产品、仓库、税率已整理并抽查 | | 主流程 | 至少一条销售/采购/库存/财务流程完整跑通 | | 异常流程 | 取消、退货、部分收货、部分付款已测试 | | 权限 | 真实岗位账号可以完成自己的工作 | | 报表 | 老板和财务能看懂关键报表 | | 切换计划 | 已确定正式启用日期和旧系统停止录入规则 | | 备份 | 已确认数据库和文件备份方式 | 满足这些条件,再上线会稳很多。 results matching "" =================== No results matching "" ====================== --- # 第三部分 销售管理 · odoo实施参考手册-青岛欧姆网络科技 [第三部分 销售管理](https://xp.odoohub.com.cn/) ======================================== 第三部分 销售管理 ========= 销售管理是企业从客户需求走向收入确认的核心流程。Odoo销售模块不只是记录订单,还会连接CRM、产品、价格表、库存、会计、网站门户、租赁和项目服务。 本部分会按照真实实施顺序展开:先建立销售管理整体框架,再讲销售产品、报价、订单确认、交付、开票、价格、税率、库存、退货和行业扩展。目标是让客户既能按Odoo原生流程自主实施,也能理解哪些场景适合标准配置,哪些场景需要进一步方案设计或开发增强。 results matching "" =================== No results matching "" ====================== --- # 第一章 Odoo简介 · odoo实施参考手册-青岛欧姆网络科技 [第一章 Odoo简介](https://xp.odoohub.com.cn/) ========================================= 第一章 Odoo 简介 =========== Odoo 是一套企业应用系统。它不是单一的进销存软件,也不是单一的财务软件,而是由很多应用模块组成的业务平台。 对小白客户来说,可以先把 Odoo 理解成一套可以逐步启用的企业管理工具:先把销售、采购、库存、财务跑起来,再根据业务需要扩展网站、POS、生产、项目、人事、审批和各种接口。 Odoo 可以做什么 ---------- 进入 Odoo 后,通常会看到应用首页。 ![Odoo 中文应用首页](https://xp.odoohub.com.cn/basic/images/basic-cn-home.png) 常见应用包括: | 应用 | 主要用途 | | --- | --- | | 销售 | 报价、销售订单、客户管理、销售报表 | | 采购 | 询价、采购订单、供应商管理 | | 库存 | 收货、发货、调拨、盘点、批次序列号 | | 发票/会计 | 客户发票、供应商账单、付款、银行对账 | | CRM | 线索、商机、销售跟进 | | POS | 门店收银、退货、交班、会员和优惠 | | 生产 | BOM、制造订单、工单、物料消耗 | | 项目 | 任务、工时、项目交付 | | 网站/电商 | 官网、商城、客户门户 | | 员工 | 员工档案、请假、招聘、薪酬等 | 企业不需要第一天把所有应用都装上。第一次实施,应该围绕主业务流程选择最少模块。 Odoo 的三个关键词 ----------- ### 模块化 Odoo 的功能按应用模块组织。销售、采购、库存、财务可以独立使用,也可以连接成完整流程。 例如贸易企业常见流程: 客户报价 -> 销售订单 -> 采购补货 -> 入库 -> 发货 -> 开票 -> 收款 这条流程会同时用到销售、采购、库存和财务。 ### 集成 Odoo 的模块不是孤立的。一个产品资料可以同时用于销售、采购、库存、POS 和生产。一个客户资料可以同时用于报价、发票、门户和售后。 这也是为什么基础数据很重要。基础数据整理好,后面模块就顺;基础数据混乱,所有模块都会被拖累。 ### 可扩展 Odoo 支持配置、第三方模块和定制开发。很多业务可以通过原生设置解决;少量行业差异可以通过模块或开发扩展。 自主实施时建议遵守一个顺序: 1. 先用原生功能跑通主流程; 2. 再判断哪些地方确实不适合; 3. 最后再考虑定制开发或接口。 不要一开始就要求 Odoo 和旧系统一模一样。这样会把项目拖进大量低价值定制。 Odoo 的版本 -------- Odoo 通常分为社区版和企业版。 | 版本 | 特点 | | --- | --- | | 社区版 | 开源免费,适合基础业务和可自行维护的团队 | | 企业版 | 官方收费,包含更多高级功能、移动端、官方升级服务和企业应用 | 如果企业要使用完整会计、移动端、Studio、Odoo.sh、官方升级服务等,通常会考虑企业版。 具体价格会随官方政策变化,报价前应以 Odoo 官方网站或正式合同为准。 Odoo 的部署方式 ---------- 常见部署方式有三种: | 部署方式 | 适合场景 | | --- | --- | | Odoo Online | 使用官方标准 SaaS,不安装第三方模块,适合标准化需求 | | Odoo.sh | 官方托管开发平台,适合企业版加定制模块 | | 自部署 | 自己服务器部署,适合需要深度控制、第三方模块或本地化运维的企业 | 国内客户还要考虑网络、邮件、短信、支付、物流、备案、服务器运维和备份策略。部署方式不要只看软件费用,还要看后续维护成本。 第一次实施应该从哪里开始 ------------ 第一次实施不要从“我要装哪些模块”开始,而要从业务主线开始。 常见主线: | 企业类型 | 优先主线 | | --- | --- | | 贸易批发 | 销售、采购、库存、财务 | | 零售门店 | POS、产品、库存、收款 | | 制造企业 | 产品、BOM、库存、采购、生产 | | 服务公司 | CRM、销售、项目、工时、开票 | | 电商企业 | 产品、订单、库存、物流、对账 | 第一期目标应该是主流程可用,而不是所有细节都完美。 学习 Odoo 的正确顺序 ------------- 建议按下面顺序学习: 1. 基础数据:公司、用户、客户、产品; 2. 销售流程:报价、订单、发货、开票; 3. 采购流程:询价、采购、收货、供应商账单; 4. 库存流程:仓库、库位、调拨、盘点; 5. 财务流程:发票、付款、银行对账、报表; 6. 权限和报表:岗位权限、老板报表、部门统计; 7. 二期优化:自动化、接口、行业定制。 本手册也会按照这个思路展开。先打地基,再跑业务,再做优化。 常见误区 ---- * 第一天就安装所有模块; * 没有清洗客户和产品资料就开始导入; * 只让管理员测试,不让真实岗位员工测试; * 还没跑通原生流程就开始定制; * 把中国税控发票和 Odoo 会计发票混为一谈; * 长期让旧系统和 Odoo 同时录入同一类业务; * 没有备份和上线切换计划。 Odoo 很灵活,但灵活不等于可以跳过实施顺序。对小白客户来说,最稳的方式是:先小范围跑通,再逐步扩展。 关于我们 ---- 本手册由 **青岛欧姆网络科技** 整理和维护。我们专注 Odoo 实施与研发十余年,长期服务国内外贸易、零售、制造、电商、门店、外贸和服务型企业。 我们做这本手册的目标很简单:让第一次接触 Odoo 的客户能够自己看懂、自己动手测试;也让有经验的客户在评估方案时,能看到 Odoo 原生能力、实施边界和定制开发建议。 青岛欧姆网络科技的实施理念是: * 原生优先:能用 Odoo 标准功能解决的,不急着定制; * 流程优先:先把销售、采购、库存、财务主流程跑通; * 数据优先:先清洗客户、产品、库存和财务基础数据; * 长期维护:考虑后续升级、运维、备份和二期优化; * 高性价比:在保证专业交付的前提下,为中小企业提供更超值的Odoo方案。 如果您只是想先了解 Odoo,可以按照本手册一步一步测试。如果您已经进入真实项目,遇到多公司、复杂库存、国内邮箱、支付物流接口、财务口径、权限隔离或行业定制等问题,也可以把这些问题作为实施评估的重点。Odoo 很灵活,但真正稳定落地,需要懂业务、懂原生功能,也懂开发边界。 results matching "" =================== No results matching "" ====================== --- # 第四章 联系人与合作伙伴 · odoo实施参考手册-青岛欧姆网络科技 [第四章 联系人与合作伙伴](https://xp.odoohub.com.cn/) =========================================== 第四章 联系人与合作伙伴 ============ 联系人是 Odoo 中最基础、也最容易混淆的数据。客户、供应商、联系人、发票地址、送货地址,在 Odoo 里都属于联系人体系。 理解联系人,后面的销售、采购、库存、财务和门户都会轻松很多。 联系人是什么 ------ 在 Odoo 中,一个联系人可以代表: * 客户公司; * 供应商公司; * 某个具体联系人; * 发票地址; * 送货地址; * 员工关联的联系人; * 门户用户关联的联系人。 所以不要把“联系人”理解成通讯录那么简单。它是 Odoo 业务单据的核心主数据。 进入客户列表 ------ 安装销售应用后,可以从 **销售 -> 订单 -> 客户** 进入客户列表。 ![客户列表](https://xp.odoohub.com.cn/basic/images/basic-cn-customers.png) 如果安装了 Contacts 应用,也可以从联系人应用统一维护客户、供应商和其他联系人。 新建公司客户 ------ 新建客户时,可以选择 **个人** 或 **公司**。 ![联系人表单](https://xp.odoohub.com.cn/basic/images/basic-cn-contact-form.png) 常见规则: | 类型 | 适用场景 | | --- | --- | | 公司 | 客户主体、供应商主体、开票主体 | | 个人 | 公司下的联系人、个人客户、业务联系人 | 如果客户是企业,建议先建公司,再在公司下面添加联系人。不要把同一家公司的采购、财务、老板分别建成三个独立客户。 客户和供应商不是两张表 ----------- Odoo 中客户和供应商本质上都是联系人。一个公司可以既是客户,也是供应商。 例如: * A 公司向我们采购商品,所以它是客户; * A 公司同时给我们提供维修服务,所以它也是供应商。 在销售订单中使用过的联系人,会表现为客户;在采购订单或供应商账单中使用过的联系人,会表现为供应商。不要为了区分客户和供应商,重复创建两条公司资料。 发票地址和送货地址 --------- 很多企业会遇到这种情况:客户总部负责付款,但货物送到不同仓库或门店。 正确做法是: 1. 建立客户公司; 2. 在客户公司下面添加联系人或地址; 3. 把地址类型设置为发票地址、送货地址或其他地址; 4. 在销售订单中选择正确的客户和送货地址。 常见地址类型: | 类型 | 用途 | | --- | --- | | 联系人 | 公司下的联系人 | | 发票地址 | 开票、对账、账务联系人 | | 送货地址 | 仓库发货、物流配送 | | 其他地址 | 备用地址、门店、临时地址 | 不要把同一个客户的不同送货地址都建成独立客户,否则应收账款和销售统计会被拆散。 联系人字段说明 ------- 建议至少维护这些字段: | 字段 | 用途 | | --- | --- | | 名称 | 客户或供应商名称 | | 邮箱 | 发送报价、订单、发票、门户邀请 | | 电话 | 日常联系 | | 地址 | 报价、发票、送货 | | 税务识别码 | 财务和发票资料 | | 网站 | 客户或供应商资料 | | 语言 | 客户收到邮件和门户内容时使用 | | 标签 | 客户分类、行业、等级、渠道 | 邮箱非常重要。没有邮箱,就无法顺利发送报价、发票、重置密码和门户邀请。 标签和分类 ----- 联系人标签适合做轻量分类。 常见标签: * VIP; * 批发客户; * 零售客户; * 代理商; * 供应商; * 门店客户; * 海外客户; * 需要月结; * 需要特殊价格。 标签适合筛选和统计,但不要把复杂权限寄托在标签上。如果要按业务员、部门、公司隔离数据,需要进一步评估权限规则。 联系人去重 ----- 联系人重复会导致很多问题: * 同一客户的销售订单分散在不同资料下; * 应收账款统计不完整; * 客户门户看到的资料不一致; * 财务对账时找不到完整历史; * 邮件沟通记录分散。 导入客户前必须先去重。 去重时重点检查: | 检查项 | 示例 | | --- | --- | | 名称重复 | 青岛欧姆、青岛欧姆网络、欧姆网络科技 | | 电话重复 | 同一个电话出现在多个客户 | | 邮箱重复 | 同一个邮箱绑定多个客户 | | 税号重复 | 同一税号对应多个公司 | | 地址重复 | 同一地址建成多个送货客户 | 如果发现重复联系人,优先合并或停用,不要继续在重复资料上创建新订单。 用户、联系人和员工的关系 ------------ 这三个概念经常被混在一起。 | 概念 | 说明 | | --- | --- | | 用户 | 可以登录 Odoo 的账号 | | 联系人 | 公司、个人、客户、供应商、地址等资料 | | 员工 | 人力资源模块中的员工档案 | 一个用户通常会关联一个联系人。安装员工模块后,一个员工也可以关联一个用户。 简单理解: * 用户解决“谁能登录系统”; * 联系人解决“业务单据上的客户、供应商和地址是谁”; * 员工解决“公司内部人员的人事资料是谁”。 门户用户 ---- 门户用户也是基于联系人产生的。客户收到报价、订单或发票后,可以通过门户查看相关文件。 门户用户适合: * 客户查看报价; * 客户确认订单; * 客户查看发票; * 客户查看项目、工单或订阅; * 供应商查看部分协作资料。 门户用户不是内部员工账号。门户用户不能像销售、仓库、财务那样进入后台处理业务。 地址和国家 ----- Odoo 会根据国家显示不同的地址格式。国内客户通常需要注意: * 国家/地区是否填写; * 省份、城市、详细地址是否分开维护; * 邮编是否需要; * 发票地址和送货地址是否不同; * 客户英文地址是否需要用于外贸单据。 如果企业对中国省市区联动、地图、物流面单有要求,通常需要本地化模块或定制模块支持。 联系人验收清单 ------- 联系人资料整理完成后,可以用下面标准验收: | 检查项 | 通过标准 | | --- | --- | | 客户主体 | 同一个客户只有一个公司主体 | | 联系人 | 公司下面有采购、财务、收货等联系人 | | 地址 | 发票地址和送货地址区分清楚 | | 邮箱电话 | 关键联系人有邮箱和电话 | | 税务资料 | 需要开票的客户税务资料完整 | | 标签 | 客户分类清晰,不滥用标签 | | 门户 | 需要门户访问的联系人邮箱正确 | | 去重 | 没有明显重复客户或供应商 | 联系人是后续业务的入口。只要联系人清楚,销售、采购、财务和门户都会顺很多。 客户和供应商为什么会在一起 ------------- 很多新用户会问:为什么客户、供应商、联系人都在一个地方?这是 Odoo 联系人设计的核心。客户和供应商都基于 `res.partner`。早期版本曾经使用字段区分客户和供应商。 ![客户供应商字段示例](https://xp.odoohub.com.cn/basic/images/9.png) 后来版本中,客户和供应商更多通过业务使用关系、客户排名、供应商排名等方式体现。 ![客户供应商排名](https://xp.odoohub.com.cn/basic/images/10.png) 这意味着同一个合作伙伴可以同时是客户和供应商。实施时不要为了“客户一条、供应商一条”重复建档,否则会影响应收应付和业务历史统计。 用菜单和筛选区分客户供应商 ------------- 为了方便国内客户快速区分客户和供应商,也可以通过菜单或筛选条件做分类入口。 ![客户供应商菜单](https://xp.odoohub.com.cn/basic/images/8.png) 这种方式本质上是显示和筛选优化,不应该破坏 Odoo 原生联系人模型。 客户编码、别名和快速识别 ------------ 如果客户数量很多,建议建立客户编码规则。Odoo 中常用字段是参考号或内部编码。 ![客户编码](https://xp.odoohub.com.cn/basic/images/30.png) 客户简称或别名可以帮助销售、仓库、财务快速识别客户。 ![客户别名](https://xp.odoohub.com.cn/basic/images/31.png) 专业建议: * 客户编码保持唯一; * 不要把客户等级、地区、销售员都硬塞进编码; * 编码用于识别,标签和字段用于分类; * 编码规则上线前确定,后面不要频繁改。 公司和个人的隶属关系 ---------- 客户可以是公司,也可以是个人。公司下面可以有多个联系人。 ![联系人公司关系](https://xp.odoohub.com.cn/basic/images/17.png) 在业务单据中选择个人联系人时,Odoo 会体现其所属公司关系。 ![销售单联系人关系](https://xp.odoohub.com.cn/basic/images/18.png) 技术上常见字段包括 `is_company` 和 `company_type`。做开发时通常要注意公司和个人的判断逻辑,不要只按名称或标签判断客户类型。 地址类型如何影响业务单据 ------------ 联系人不仅能表示客户主体,还能表示发票地址、送货地址、其他地址等。 ![联系人地址类型](https://xp.odoohub.com.cn/basic/images/19.png) 实施时要特别关注: * 发票地址是否用于财务; * 送货地址是否用于仓库和物流; * 联系人是否只是沟通人; * 私有地址是否涉及员工和隐私权限。 地址类型配置错误,会直接影响销售订单、发票和送货单。 用户、合作伙伴和员工不要混用 -------------- 用户、联系人、员工是三个不同对象。 ![员工用户关系](https://xp.odoohub.com.cn/basic/images/16.png) 通常: * `res.users` 表示登录账号; * `res.partner` 表示联系人、客户、供应商、地址; * `hr.employee` 表示员工档案。 一个用户通常关联一个联系人。安装 HR 后,员工也可以关联用户。权限通常跟用户有关,而不是直接跟员工部门自动绑定。 国家、城市和地址格式 ---------- 联系人地址会受国家和地区配置影响。 ![联系人地址](https://xp.odoohub.com.cn/basic/images/11.png) 国家设置中可以定义地址输入视图和地址格式布局。 ![国家地址格式](https://xp.odoohub.com.cn/basic/images/32.png) 例如中国地址常见顺序更接近: 国家 / 省份 / 城市 / 区县 / 街道 / 门牌号 而海外地址可能更重视邮编、州、省、城市顺序。外贸企业要特别关注中英文地址格式。 ### 城市选择和扩展地址 Odoo可以通过我们的地址城市模块把城市从文本变为可选数据。 ![开启城市选择](https://xp.odoohub.com.cn/basic/images/12.png) 开启后,城市可以作为标准数据选择。 ![城市选择效果](https://xp.odoohub.com.cn/basic/images/13.png) 如果客户需要楼号、门牌号等更细地址,可以通过地址扩展模块实现。 ![地址扩展](https://xp.odoohub.com.cn/basic/images/20.png) ### 中国省市区联动 国内客户经常需要省、市、区县甚至乡镇联动。原生 Odoo 的地址能力不一定完全满足国内物流和发票要求。 ![中国区县问题](https://xp.odoohub.com.cn/basic/images/21.png) 本地化模块可以提供更适合中国的行政区划联动。 ![中国行政区划联动](https://xp.odoohub.com.cn/basic/images/22.png) 如果客户需要对接快递、电子面单、小程序地址、地图定位,这一块通常要提前评估。 地图模式适合什么场景 ---------- 企业版中可能存在地图视图,用于按地理位置查看客户。 ![地图视图](https://xp.odoohub.com.cn/basic/images/14.png) 国内访问海外地图服务时可能不稳定,可以考虑我们的本地地图服务替代方案。 ![百度地图示例](https://xp.odoohub.com.cn/basic/images/15.png) 地图能力适合外勤、配送、客户拜访、区域销售等场景。 VAT 校验和海外客户资料 ------------- Odoo 的本地化模块可能会启用不同国家的 VAT 税号格式校验。 ![VAT校验](https://xp.odoohub.com.cn/basic/images/vat.png) 如果客户经常维护海外客户或供应商,VAT 格式校验可以减少错误。但如果客户数据来源复杂,也可能造成录入障碍。 部分方案可以提供 VAT 校验开关。 ![VAT校验开关](https://xp.odoohub.com.cn/basic/images/vat2.png) 专业实施时要先确认:客户是否真的需要税号校验,哪些国家需要,错误数据如何清洗。 results matching "" =================== No results matching "" ====================== --- # 第五章 产品基础 · odoo实施参考手册-青岛欧姆网络科技 [第五章 产品基础](https://xp.odoohub.com.cn/) ======================================= 第五章 产品基础 ======== Odoo原生用一套产品资料连接销售、采购、库存、生产、POS、电商和财务。企业第一次实施Odoo时,产品资料往往是最关键、也最容易被低估的基础数据。 产品不是简单的“商品名称”。产品类型会影响是否扣库存,产品类别会影响报表和会计规则,单位会影响采购和库存数量,条码会影响POS和仓库扫码,价格和税率会影响报价、发票和毛利。本章我们就来看一下如何理解Odoo原生的产品资料,以及上线前应该怎样设计产品主数据。 产品为什么重要 ------- 在Odoo中,同一个产品可能同时出现在多个业务环节: 销售报价 -> 销售订单 -> 发货 -> 开票 -> 收款 采购询价 -> 采购订单 -> 收货 -> 供应商账单 -> 付款 库存盘点 -> 调拨 -> 批次序列号 -> 成本估值 POS收银 -> 网站商城 -> 生产BOM -> 项目服务开票 所以产品资料一旦建错,影响不是一个页面,而是一整条业务链。 常见后果: * 实物商品建成服务,销售后库存不减少; * 服务项目建成实物,系统要求仓库发货; * 单位设置错误,采购入库和销售出库数量对不上; * 税率错误,发票金额和税额不正确; * 产品类别混乱,销售统计、库存估值和财务科目不好拆分; * 变体滥用,导致产品数量暴涨,员工很难选择; * 条码重复,POS或仓库扫码出错。 产品基础数据要在上线前认真设计,不建议边录订单边临时补。 进入产品列表 ------ 安装销售应用后,可以从 **销售 -> 产品 -> 产品** 进入产品列表。 ![产品列表](https://xp.odoohub.com.cn/basic/images/basic-cn-products.png) 也可以在采购、库存、POS、生产、电商等模块中进入产品。入口不同,背后使用的是同一套产品资料。 新建产品 ---- 点击 **新建** 可以创建产品。 ![产品表单](https://xp.odoohub.com.cn/basic/images/basic-cn-product-form.png) 第一期建议先维护关键字段。不要一开始就把所有字段都填满,也不要为了“看起来完整”导入大量没人确认的数据。 产品模板和产品变体 --------- 理解产品前,要先区分两个概念: | 概念 | 说明 | 示例 | | --- | --- | --- | | 产品模板 | 一类产品的公共资料 | T恤 | | 产品变体 | 模板下不同属性组合的具体产品 | 红色/M码T恤、蓝色/L码T恤 | 如果一个产品没有颜色、尺码、规格差异,可以只当普通产品使用。如果有颜色、尺码、容量、材质等属性,就可以考虑使用变体。 变体适合: * 服装颜色和尺码; * 手机容量和颜色; * 食品规格; * 材料厚度和尺寸; * 同一商品不同包装规格。 不适合滥用变体: * 每个客户一个定制品; * 每个订单规格都不同; * 只是想把产品名称写短; * 属性组合很多,但实际很少售卖; * 变体只是为了分类,而不是为了区分库存或价格。 变体会影响销售、采购、库存、条码、图片、价格和统计。第一期如果不确定,可以先用普通产品跑通流程,再规划变体。 产品基础字段 ------ | 字段 | 说明 | 建议 | | --- | --- | --- | | 产品名称 | 对内、对外显示的产品名称 | 必填,命名要稳定 | | 销售 | 是否可以出现在销售订单中 | 可销售商品勾选 | | 采购 | 是否可以出现在采购订单中 | 可采购商品勾选 | | 产品类型 | 实物、服务、组合 | 会影响库存和业务流程 | | 销售价格 | 销售订单默认价格 | 上线前抽查 | | 成本 | 成本和毛利分析使用 | 财务或采购确认 | | 销售税 | 销售发票税率 | 财务确认 | | 采购税 | 供应商账单税率 | 财务确认 | | 类别 | 产品分组和会计/库存规则 | 不要全部放默认类别 | | 参考号 | 内部编码或SKU | 建议唯一 | | 条码 | POS、仓库扫码、快速搜索 | 有扫码业务时必填 | 产品编码、名称和类别最好在导入前统一规则。不要让同一个产品同时出现“苹果手机壳”“iPhone Case”“IPHONE壳”三种写法。 产品类型 ---- 产品类型决定产品是否参与库存,以及后续业务单据怎么流转。 | 类型 | 适用场景 | 影响 | | --- | --- | --- | | 实物 | 有库存的商品、原材料、成品 | 会参与库存收发、盘点和库存分析 | | 服务 | 咨询、安装、运费、人工服务 | 通常不产生库存移动 | | 组合 | 套餐、组合销售 | 适合特定组合场景 | 如果产品需要库存管理,一般应使用 **实物**。如果只是咨询、安装、运费、人工等不需要库存收发的项目,一般使用 **服务**。 这里有一个很重要的判断:客户嘴里说的“产品”,不一定都应该建成实物产品。例如安装费、运费、设计费、服务费,虽然会出现在报价单里,但它们不应该让仓库发货。 可销售和可采购 ------- 产品表单上的 **销售** 和 **采购** 决定产品是否用于对应流程。 | 勾选方式 | 适用场景 | | --- | --- | | 只勾销售 | 只卖不买,例如服务产品 | | 只勾采购 | 只采购不销售,例如办公用品 | | 销售和采购都勾 | 贸易商品、可买可卖商品 | | 都不勾 | 暂停使用或内部资料 | 如果产品无法在销售订单中选择,先检查是否勾选了销售。如果无法在采购订单中选择,先检查是否勾选了采购。 对于已经停用的产品,不建议直接删除。可以取消销售和采购,或者归档产品,避免影响历史订单和报表。 销售价格、成本和毛利 ---------- 销售价格是销售订单上的默认单价。成本用于毛利分析、库存估值和经营判断。 常见做法: | 字段 | 谁确认 | 影响 | | --- | --- | --- | | 销售价格 | 销售或运营 | 报价和订单金额 | | 成本 | 采购、仓库或财务 | 毛利、库存价值、成本分析 | | 销售税 | 财务 | 客户发票税额 | | 采购税 | 财务 | 供应商账单税额 | 不要只让销售自己维护成本,也不要让财务完全不了解产品税率。产品价格、成本和税率最好在上线前抽查确认。 如果企业有复杂价格策略,例如客户等级价、批发价、会员价、渠道价、阶梯价,应该使用价目表,而不是给同一个产品建立多个重复产品。 产品类别 ---- 产品类别不是简单的分类名称,它还可能影响库存估值、会计科目和报表统计。 第一期可以先设置几类: * 成品; * 原材料; * 包材; * 服务; * 运费; * POS商品; * 备件; * 耗材。 不要所有产品都放在同一个“所有”类别里。后面做库存和财务分析时,会很难拆分。 产品类别设计建议: | 设计原则 | 说明 | | --- | --- | | 不要太粗 | 全部放一个类别,后续报表没法分析 | | 不要太细 | 每个产品一个类别,维护成本太高 | | 和财务沟通 | 类别可能影响会计科目和库存估值 | | 和仓库沟通 | 类别会影响库存统计和补货判断 | | 和销售沟通 | 类别会影响销售分析和产品筛选 | 如果企业启用了库存估值和会计集成,产品类别会变得更重要。上线前一定要让财务参与确认。 单位和计量 ----- 产品单位影响销售数量、采购数量、库存数量和价格。 常见单位: * 件; * 箱; * 公斤; * 米; * 套; * 小时; * 次。 上线前要确认: | 问题 | 示例 | | --- | --- | | 销售单位和库存单位是否一致 | 按箱卖,按件库存 | | 采购单位和库存单位是否一致 | 按公斤采购,按克库存 | | 是否需要包装单位 | 一箱24件 | | 是否需要第二单位 | 布料按米和公斤双单位管理 | 单位不要随便改。产品已经产生销售、采购、库存后,再修改单位会影响历史数量理解。尤其是库存产品,单位规则要在正式上线前确定。 如果业务有复杂单位换算,不要只靠产品名称备注解决,应先评估Odoo单位、包装或定制方案。 包装和条码 ----- 条码常用于: * POS收银; * 仓库扫码收货; * 仓库扫码发货; * 盘点; * 快速搜索产品。 一个条码不要对应多个产品,否则扫码会混乱。 包装适合处理“一箱多少件”“一包多少个”这类业务。比如产品库存单位是“件”,但采购经常按箱采购,销售也可能按箱销售,这时就要规划包装或单位换算,而不是只在产品名称里写“每箱24件”。 上线前建议确认: | 检查项 | 说明 | | --- | --- | | 条码唯一 | 同一条码只能对应一个产品或一个变体 | | 条码来源 | 使用厂家条码、内部条码还是重新编码 | | 包装规则 | 箱、包、托盘等包装数量是否固定 | | POS显示 | 门店收银是否需要图片和短名称 | | 仓库扫码 | 收货、发货、盘点是否使用扫码 | 销售页签和开票原则 --------- 产品表单中的销售相关字段会影响销售订单和发票。 常见开票原则: | 开票原则 | 说明 | 适用场景 | | --- | --- | --- | | 订购数量 | 按销售订单确认的数量开票 | 标准商品销售、预收款 | | 已交付数量 | 按实际交付数量开票 | 分批发货、服务交付后开票 | 不同业务应该选择不同开票原则。比如服务项目可能希望按已交付里程碑开票,标准商品可能按订单数量开票。 如果客户经常分批发货、分批开票,产品的开票原则和销售流程要一起测试。 采购和供应商价格 -------- 可采购产品通常还要维护供应商信息。 供应商价格可以记录: * 供应商; * 最小采购数量; * 采购价格; * 交期; * 供应商产品编码; * 供应商产品名称; * 币种。 这些信息会影响采购订单自动带出的价格和供应商交期。如果企业要做自动补货、按供应商采购、采购价格分析,就不能只维护销售价格。 库存追踪和补货 ------- 实物产品如果要进入库存管理,还需要考虑追踪和补货。 常见问题: | 问题 | 说明 | | --- | --- | | 是否管理库存 | 不是所有产品都需要库存数量 | | 是否批次追踪 | 食品、药品、材料常见 | | 是否序列号追踪 | 设备、手机、贵重商品常见 | | 是否设置安全库存 | 低于某数量自动提醒或补货 | | 是否自动采购 | 没货时是否触发采购需求 | 这些内容会在库存章节展开。产品章节先要理解一点:库存规则不是仓库单独决定的,产品基础资料就已经决定了很多库存行为。 路线、补货和生产关系 ---------- 安装库存、采购、生产等应用后,产品上可能会出现路线和补货相关设置。它们决定系统在缺货、接单或计划生产时,应该自动建议采购、生产、调拨还是按订单补货。 常见路线理解: | 路线 | 业务含义 | 常见场景 | | --- | --- | --- | | 购买 | 需要向供应商采购 | 贸易商品、原材料 | | 生产 | 需要通过制造订单生产 | 成品、半成品 | | 按订单补货 | 有销售需求后再触发补货 | 不常备库存、定制产品 | | 直运 | 供应商直接发给客户 | 不经过本公司仓库的商品 | 路线设置不要只看字段名称,要结合实际交付方式判断。例如同一个商品,常规库存销售可以走仓库发货,特殊客户订单可能希望按订单采购,跨境业务可能希望供应商直运。路线设置错误,后续可能出现采购建议不生成、制造订单不生成,或者仓库流程被错误触发。 如果产品涉及生产,还要进一步确认BOM、工艺路线、半成品、原材料单位和损耗逻辑。产品主数据不清楚,MRP计划通常也不会准确。 产品和会计规则 ------- 产品会影响财务,但实际项目中不建议每个产品都单独设置复杂会计科目。更常见的做法是先通过产品类别管理会计规则,再对少数特殊产品单独调整。 需要财务参与确认的内容: | 内容 | 影响 | | --- | --- | | 销售税 | 客户发票税额 | | 采购税 | 供应商账单税额 | | 收入科目 | 销售收入归集 | | 费用科目 | 采购成本或费用归集 | | 库存估值科目 | 启用自动库存估值时使用 | | 成本方法 | 标准成本、平均成本或先进先出等成本口径 | 如果企业只是先跑销售、采购和库存,可以先把税率、类别和成本确认清楚。如果企业第一期就要做库存估值和财务自动记账,产品类别和会计科目必须提前设计,不能等已经录入大量库存后再回头调整。 POS和网站商城中的产品 ------------ 如果企业使用POS或网站商城,产品还会影响前端展示。 POS常关注: * 是否可用于POS; * 条码是否正确; * 产品图片是否清晰; * 产品类别是否适合收银员查找; * 价格和税率是否正确; * 是否参与优惠、会员价和礼品卡规则。 网站商城常关注: * 是否发布到网站; * 产品图片和详情; * 变体选择; * 库存显示; * 运费和重量; * SEO信息; * 是否参与优惠券、促销和会员价。 同一个产品如果同时用于后台销售、POS和网站,要提前统一命名、图片、价格和库存策略。 产品图片 ---- 产品图片不是必填,但对POS、网站商城、销售展示很有帮助。 建议: * POS和网站商品尽量上传图片; * 内部耗材可以不上传; * 图片大小适中,不要上传特别大的原图; * 同类产品图片风格尽量统一。 图片不是越大越好。图片过大可能影响网站和POS加载速度。 产品编码规则 ------ 产品编码也叫内部参考或SKU。编码最好保持唯一、稳定、可读。 推荐原则: * 同一个产品或变体只有一个编码; * 不要把太多含义塞进编码; * 不要频繁修改已经使用的编码; * 不同系统之间尽量使用同一个编码; * 导入数据前先去重。 不推荐: * 用供应商编码直接当内部编码,但不同供应商可能重复; * 用产品名称拼音缩写当唯一编码,后期容易冲突; * 把颜色、尺码、供应商、年份、类别都塞进一个很长编码; * 没有编码,完全靠名称识别产品。 如果企业要对接电商、POS、条码仓库、外部ERP或财务系统,编码规则尤其重要。 产品数据设计顺序 -------- 第一次整理产品资料时,建议按下面顺序: 1. 先确定产品范围,删除明显停用和无效数据; 2. 统一产品名称和内部编码; 3. 区分实物、服务、组合; 4. 确认可销售、可采购; 5. 设计产品类别; 6. 确认单位和包装; 7. 确认销售价格、成本、销售税、采购税; 8. 整理条码和图片; 9. 判断是否需要变体; 10. 判断是否需要路线、补货、批次或序列号; 11. 再导入测试库进行抽查。 不要一开始就导入全部历史产品。宁可先导入当前仍在销售、采购和库存中的有效产品。 results matching "" =================== No results matching "" ====================== --- # 第七章 邮箱配置 · odoo实施参考手册-青岛欧姆网络科技 [第七章 邮箱配置](https://xp.odoohub.com.cn/) ======================================= 第七章 邮箱配置 ======== Odoo原生把邮件能力嵌入在销售、采购、财务、门户、项目和消息区里。报价单可以通过邮件发送给客户,发票可以自动附带PDF,客户可以通过门户链接查看单据,员工也可以在业务单据上直接给客户发消息。 邮箱配置看起来只是填SMTP服务器,实际会影响客户能不能收到报价、能不能重置密码、客户回复能不能回到单据、邮件会不会进垃圾箱,以及多公司、多销售、多域名场景下发件人是否合规。本章我们就来看一下Odoo原生邮件的工作逻辑,以及国内企业邮箱、Outlook、Gmail和多公司邮箱环境下应该怎样落地。 邮件功能用在哪里 -------- Odoo中常见的邮件场景包括: * 给客户发送报价单、订单确认和发票; * 给门户用户发送邀请、密码重置和系统通知; * 在销售订单、发票、项目任务等单据上给客户发送消息; * 员工收到活动提醒、审批提醒和业务通知; * 客户回复邮件后,沟通记录回到对应业务单据; * 邮件模板自动生成主题、正文、按钮和附件。 如果邮件没有配置好,表面上只是“发不出邮件”,实际会影响销售转化、财务开票、门户体验和内部协同。 先理解Odoo邮件链路 ----------- Odoo的邮件链路可以分成四部分: 业务单据 -> 邮件模板/消息区 -> 发件服务器 -> 客户邮箱 客户回复 -> 收件服务器/转发/MX -> Odoo邮件路由 -> 对应单据消息区 从实施角度看,要先分清楚三件事: | 问题 | 说明 | | --- | --- | | 谁发出去 | 使用哪个SMTP或OAuth账号发送邮件 | | 谁显示为发件人 | 客户看到的From地址是什么 | | 回复到哪里 | 客户点击回复后,邮件回到哪个邮箱或单据 | 很多国内项目的问题就卡在第二点和第三点:邮箱服务商要求From必须等于登录账号,而Odoo又希望根据业务用户、公司、别名域、catch-all来组织发件和回信。 邮件设置入口 ------ 进入 **设置**,搜索“邮件”,可以看到邮件相关配置。 ![邮件设置](https://xp.odoohub.com.cn/basic/images/basic-cn-email-settings-search.png) 常见配置包括: * 自定义电子邮件服务器; * 发件服务器和收件服务器; * 邮件别名域; * 邮件模板; * 摘要邮件; * Gmail或Outlook集成; * 邮件插件或其他集成模块。 不同Odoo版本和安装模块不同,界面上的选项会略有差异。实施时不要只看菜单是否存在,还要确认当前数据库安装了哪些邮件相关模块,以及服务器是否允许访问目标邮箱服务。 原生发件服务器 ------- Odoo发送邮件通常需要发件服务器。常见方式有两类: | 方式 | 适用场景 | | --- | --- | | SMTP | 企业邮箱、国内邮箱、部分自建邮件服务器 | | OAuth | Outlook/Office365、Gmail等要求新式认证的邮箱 | 启用自定义邮件服务器后,可以进入发件服务器配置。 ![发件箱配置](https://xp.odoohub.com.cn/basic/images/email1.png) 一个典型的SMTP发件服务器配置如下: ![发件服务器](https://xp.odoohub.com.cn/basic/images/email3.png) 常见字段包括: | 字段 | 说明 | | --- | --- | | 描述 | 给管理员看的服务器名称 | | SMTP Server | 邮箱服务商提供的SMTP地址 | | SMTP端口 | 常见为465或587 | | 连接安全性 | SSL/TLS或STARTTLS | | 用户名 | 邮箱账号 | | 密码 | 邮箱密码、授权码或应用密码 | | From Filter | 限定这个服务器处理哪些发件地址或域名 | 国内使用网易、腾讯、阿里等企业邮箱时,经常不是填写登录密码,而是填写邮箱后台生成的授权码。配置完成后,可以先测试连接。 ![成功提示](https://xp.odoohub.com.cn/basic/images/email2.png) 也可以在技术菜单中找到邮件记录,再发送测试邮件。 ![测试邮件](https://xp.odoohub.com.cn/basic/images/mail4.png) 收到的测试邮件示例: ![收件效果](https://xp.odoohub.com.cn/basic/images/email5.png) 这里要提醒客户一句:连接成功不等于业务可用。真正要测试的是报价、发票、密码重置、门户邀请这些真实业务邮件能不能送达,客户回复后能不能被正确处理。 原生收件和客户回复 --------- Odoo不只是把邮件发出去,也可以把客户回复收回来,并尽量挂回原来的业务单据。 例如销售人员从报价单发送邮件,客户直接回复这封邮件。如果收件配置、回复地址和邮件路由都正确,回复可以回到对应报价单或销售订单的消息区。 收件通常依赖以下能力之一: | 方式 | 说明 | | --- | --- | | 收件服务器 | Odoo定时读取IMAP/POP邮箱 | | 邮件转发 | 邮箱服务商把邮件转发给Odoo处理 | | MX/mail gateway | 邮件直接进入Odoo邮件网关,常见于更专业部署 | 收件服务器配置示例: ![收件服务器配置](https://xp.odoohub.com.cn/basic/images/email7.png) 如果企业只想先发报价和发票,第一期可以先只配置发件。如果企业希望客户回复自动留在Odoo单据上,就要认真设计收件、别名域和catch-all。 Catch-all和Bounce ---------------- Odoo邮件里经常会遇到两个词:catch-all和bounce。 | 概念 | 简单理解 | 用途 | | --- | --- | --- | | catch-all | 全收邮箱 | 接收发给某个域名下各种别名的邮件,再交给Odoo分配 | | bounce | 退信地址 | 处理退信、代发和邮件返回路径 | Bounce相关参数可以在系统参数中查看或调整。 ![Bounce参数](https://xp.odoohub.com.cn/basic/images/mail6.png) 在标准海外邮箱环境中,Odoo常使用别名域、catch-all和bounce处理回信、退信和单据匹配。但国内邮箱环境常见限制更多: * 免费版或普通企业邮箱不支持catch-all; * 邮箱要求发件人必须等于SMTP认证用户; * 不允许系统随意代发其他员工邮箱; * 需要授权码、应用密码或OAuth; * 对海外服务器登录、批量发送、异常登录有风控; * SPF、DKIM、DMARC未配置时更容易进垃圾箱。 所以国内项目不要默认照搬海外文档方案,而要先确认邮箱服务商规则。 国内项目的方案选择 --------- 第一期实施时,邮箱方案不一定越复杂越好。建议先按业务目标选择。 | 方案 | 适合场景 | 优点 | 注意事项 | | --- | --- | --- | --- | | 统一发件邮箱 | 小团队、第一期上线、只需发送报价发票 | 简单稳定 | 客户看到的是统一邮箱,不是个人销售邮箱 | | 统一发件+统一收件 | 需要人工或系统集中处理客户回复 | 容易管理 | 回复不一定自动回到具体单据 | | 每个用户独立邮箱 | 销售希望用个人邮箱对外沟通 | 客户识别度高 | 配置和维护成本高,容易遇到认证限制 | | 多公司多邮箱 | 多品牌、多主体、多域名经营 | 发件身份更准确 | 需要严格匹配公司、域名和发件服务器 | | catch-all/别名域 | 希望客户回复自动回到单据 | 留痕效果好 | 国内邮箱服务商未必支持 | | OAuth集成 | Outlook、Gmail等新式认证 | 安全合规 | 需要云平台应用和回调地址配置 | 小公司第一期可以先采用简单方案: 统一发件邮箱 -> 发送报价、发票和系统通知 统一收件邮箱 -> 接收客户回复或人工查看 例如: * `service@company.com`用于系统发件; * `reply@company.com`用于客户回复; * `finance@company.com`用于财务发票相关沟通; * 销售个人邮箱暂时不直接接入Odoo。 流程稳定后,再考虑每个销售使用自己的邮箱、多公司邮箱、catch-all或更复杂的邮件路由。 发送邮件和客户回复测试 ----------- 邮箱配置完成后,建议用真实业务单据测试。可以创建一张销售订单或报价单,然后向客户邮箱发送邮件。 ![销售订单发送邮件](https://xp.odoohub.com.cn/basic/images/sale1.png) 发送后,消息区会记录已经发出的邮件。 ![消息区记录](https://xp.odoohub.com.cn/basic/images/sale2.png) 客户收到邮件后的效果示例: ![客户收到邮件](https://xp.odoohub.com.cn/basic/images/sale3.png) 如果客户直接回复邮件,回复地址会进入系统声明的收件邮箱或catch-all邮箱。 ![客户回复地址](https://xp.odoohub.com.cn/basic/images/sale4.png) 在技术菜单中的邮件记录里,可以进一步检查邮件和业务单据之间的关联。 ![邮件记录详情](https://xp.odoohub.com.cn/basic/images/sale5.png) 测试时不要只给内部邮箱发一封“Hello”。至少要覆盖: * 内部邮箱和外部邮箱; * QQ、网易、腾讯企业邮、Outlook等不同收件方; * 报价邮件、发票邮件、密码重置邮件和门户邀请; * PDF附件能否打开; * 客户回复后是否能被收到; * 邮件是否进入垃圾箱; * 测试库是否可能误发真实客户。 这些测试是实施过程中的风险控制,不建议写成客户验收清单,但顾问自己要认真做。 邮件模板 ---- Odoo中很多邮件都由模板生成,例如报价邮件、发票邮件、密码重置邮件和门户邀请邮件。 邮件模板会影响: * 邮件标题; * 正文内容; * 按钮文字; * 附件; * 使用语言; * 公司签名; * 门户链接。 修改模板前要先复制或记录原始内容。不要随意删除模板变量,例如客户名称、单据链接、门户链接、附件表达式,否则邮件可能无法正常生成。 对于面向客户的模板,建议使用真实业务场景预览:客户能不能看懂、按钮是否明确、公司签名是否正确、附件是否符合预期。邮件模板不是“美化文案”这么简单,它会直接影响客户是否顺利完成确认、付款或查看门户单据。 国内免费邮箱的常见报错 ----------- 国内邮箱最常见的问题是发件人不匹配。 典型报错类似: SMTPSenderRefused: 553 Mail from must equal authorized user 或: SMTPSenderRefused: 501 mail from address must be same as authorization user 意思是:Odoo声明的发件人和SMTP登录邮箱不是同一个邮箱,邮件服务器拒绝发送。 下面是一个多公司和国内邮箱环境下的示例配置。 ![多公司邮箱示例](https://xp.odoohub.com.cn/basic/images/email8.png) 用户邮箱和声明发件人不一致时,国内邮箱服务商可能会拒绝发送。 ![用户邮箱示例](https://xp.odoohub.com.cn/basic/images/email9.png) 常见处理方向: | 处理方式 | 适合场景 | | --- | --- | | 使用固定公司邮箱作为统一发件人 | 第一阶段快速上线 | | 让From和SMTP认证用户保持一致 | 腾讯企业邮、网易企业邮等严格场景 | | 为不同公司配置不同发件服务器 | 多公司、多域名业务 | | 使用OAuth认证 | Outlook、Gmail等云邮箱 | | 调整catch-all和bounce策略 | 客户回复需要进入Odoo | | 使用本地化邮件模块 | 原生配置无法满足国内限制时 | 第一种方式最简单,但无法满足“每个销售用自己邮箱对外沟通”的场景。后几种方式更灵活,但配置和维护成本更高。 腾讯企业邮配置 ------- 腾讯企业邮在国内项目中很常见,但经常遇到“发件人必须等于认证用户”的限制。 常用服务器参数: POP3/SMTP协议 接收邮件服务器:pop.exmail.qq.com,SSL,端口995 发送邮件服务器:smtp.exmail.qq.com,SSL,端口465 IMAP协议 接收邮件服务器:imap.exmail.qq.com,SSL,端口993 发送邮件服务器:smtp.exmail.qq.com,SSL,端口465 配置前要确认: * 邮箱账号已启用POP/IMAP/SMTP; * 使用的是授权码或正确密码; * 企业微信/腾讯企业邮后台没有限制第三方客户端; * Odoo发件人和SMTP认证用户是否一致; * 当前服务器网络可以连接腾讯企业邮服务器。 腾讯企业邮后台配置示例: ![腾讯企业邮配置](https://xp.odoohub.com.cn/basic/images/tx1.png) 常见报错: SMTPSenderRefused: 501 mail from address must be same as authorization user 如果企业要求多个用户通过同一个腾讯企业邮发信,就需要调整发件策略,或使用支持严格发件人匹配处理的模块。 Office365/Outlook OAuth配置 ------------------------- Office365和Outlook逐步收紧了基本身份验证。很多情况下,不能再简单用邮箱密码配置SMTP/IMAP,而需要使用OAuth新式认证。 配置前提: * Odoo需要能通过HTTPS访问; * 回调地址需要和Odoo的base URL一致; * Microsoft Entra ID中需要创建应用; * 用户或组织需要允许对应权限; * SMTP Auth可能需要单独开启。 ### 注册应用 进入Microsoft Azure/Entra管理后台,创建应用注册。 ![Office365注册应用](https://xp.odoohub.com.cn/basic/images/office1.png) 应用类型通常选择Web,回调地址填写: https://你的Odoo域名/microsoft_outlook/confirm 如果使用本地测试环境,部分OAuth场景只允许HTTPS或`http://localhost`,普通HTTP域名可能无法通过。 应用注册页面示例: ![Office365应用注册详情](https://xp.odoohub.com.cn/basic/images/office2.png) ### 设置API权限 在应用的API权限中,按Odoo的Outlook集成要求添加邮件相关权限。 ![Office365 API权限入口](https://xp.odoohub.com.cn/basic/images/office3.png) ![Office365 API权限选择](https://xp.odoohub.com.cn/basic/images/office4.png) 最终权限界面示例: ![Office365权限结果](https://xp.odoohub.com.cn/basic/images/office5.png) 常见权限包括: * 读取用户基本资料; * 发送邮件; * 读取邮件; * 离线访问令牌。 具体权限会随Odoo版本和Microsoft策略变化,配置时以当前Odoo界面提示和Microsoft后台为准。 还需要确认用户或用户组可以使用该应用。 ![Office365企业应用](https://xp.odoohub.com.cn/basic/images/office6.png) ![Office365用户和组](https://xp.odoohub.com.cn/basic/images/office7.png) ![Office365分配用户](https://xp.odoohub.com.cn/basic/images/office8.png) ### 创建凭据 Odoo需要两个关键参数: * Client ID; * Client Secret。 Client ID可以在应用概览页面获取。Client Secret需要在证书和密码中生成。生成后要立即保存,后续可能无法再次查看明文。 Client ID位置示例: ![Office365 Client ID](https://xp.odoohub.com.cn/basic/images/office9.png) Client Secret生成入口: ![Office365 Client Secret](https://xp.odoohub.com.cn/basic/images/office10.png) ### 在Odoo中连接Outlook账号 回到Odoo,填写Client ID和Client Secret,然后创建或编辑邮箱服务器。 ![Odoo的Outlook凭据](https://xp.odoohub.com.cn/basic/images/office11.png) 服务器类型选择Outlook OAuth认证,点击连接Outlook账号,跳转到Microsoft登录页面完成授权。 ![Odoo的Outlook邮箱服务器](https://xp.odoohub.com.cn/basic/images/office13.png) 完成授权后,邮箱服务器会显示令牌有效状态。 ![Outlook授权成功](https://xp.odoohub.com.cn/basic/images/office14.png) 授权成功后,回到Odoo测试连接。 ### Office365常见问题 **SmtpClientAuthentication is disabled for the tenant** 这通常表示租户或用户没有启用Authenticated SMTP。 ![Office365 SMTP Auth提示](https://xp.odoohub.com.cn/basic/images/office12.png) 处理方向: * 进入Microsoft 365管理中心; * 找到目标用户; * 编辑邮件应用设置; * 勾选Authenticated SMTP; * 等待策略生效后重新测试。 Microsoft 365管理中心示例: ![Office365用户管理](https://xp.odoohub.com.cn/basic/images/office15.png) Email App中开启Authenticated SMTP: ![Office365开启SMTP](https://xp.odoohub.com.cn/basic/images/office16.png) **Redirect URI不匹配** 检查: * Odoo的Web Base URL; * Microsoft应用中的重定向URI; * 是否使用HTTPS; * 域名后是否多了斜杠或路径不一致。 Gmail OAuth配置 ------------- Gmail也常使用OAuth认证,不建议直接使用普通密码。 在Odoo设置中启用Gmail后,系统会要求填写ID和密钥。 ![Gmail设置](https://xp.odoohub.com.cn/basic/images/gmail.png) 配置大致步骤: 1. 打开Google Cloud Console; 2. 创建项目; 3. 配置OAuth同意屏幕; 4. 创建Web应用OAuth凭据; 5. 设置授权重定向URI; 6. 将Client ID和Client Secret填入Odoo; 7. 创建Gmail发件服务器; 8. 点击连接Gmail账号完成授权。 重定向URI通常类似: https://你的Odoo域名/google_gmail/confirm Google Cloud Console中新建项目示例: ![Google项目](https://xp.odoohub.com.cn/basic/images/gmail2.png) OAuth同意屏幕示例: ![Google OAuth同意屏幕](https://xp.odoohub.com.cn/basic/images/gmail3.png) 创建OAuth凭据: ![Google OAuth凭据](https://xp.odoohub.com.cn/basic/images/gmai4.png) 填写授权重定向URI: ![Google重定向URI](https://xp.odoohub.com.cn/basic/images/gmail5.png) 在Odoo中创建Gmail发件箱: ![Gmail发件箱](https://xp.odoohub.com.cn/basic/images/gmail6.png) 点击连接Gmail账号完成认证: ![连接Gmail账号](https://xp.odoohub.com.cn/basic/images/gmail7.png) 认证成功后的状态示例: ![Gmail认证成功](https://xp.odoohub.com.cn/basic/images/gmail8.png) 常见问题: | 问题 | 处理方向 | | --- | --- | | Redirect URI mismatch | 检查Google后台回调地址和Odoo的base URL | | 认证后500错误 | 检查网络、域名、证书和OAuth配置 | | 测试用户无法授权 | 检查OAuth同意屏幕测试用户列表 | | 发信失败 | 检查Gmail API、授权范围和邮箱服务器配置 | Gmail在国内网络环境中可能不稳定,国内客户使用前要充分测试。 欧姆网络邮箱解决方案 ---------- 当项目进入多公司、多域名、多销售邮箱或国内严格邮箱服务商场景时,原生配置有时会不够顺。例如: * A公司下使用`sales@companya.com`; * B公司下使用`sales@companyb.com`; * 客户回复要进入对应公司或对应单据; * 发件箱需要按公司、域名、用户进行匹配; * 邮箱服务商要求From必须等于SMTP认证用户; * 客户环境不支持catch-all。 这些问题不是Odoo不会发邮件,而是原生邮件机制和国内邮箱规则之间存在落地缝隙。为了解决这些实施痛点,可以使用青岛欧姆网络科技的邮箱配置解决方案作为增强。 模块入口: [欧姆邮箱配置解决方案](https://odoohub.com.cn/shop/11) 模块示例: ![欧姆邮箱模块](https://xp.odoohub.com.cn/basic/images/mommy_mail.png) 安装后,可以在通用设置中看到和catch-all、严格发件人匹配相关的配置项。 ![Catch All设置](https://xp.odoohub.com.cn/basic/images/13.jpg) 配置后再次发送邮件,可以解决部分国内邮箱严格发件人匹配导致的失败问题。 ![修正后发送邮件](https://xp.odoohub.com.cn/basic/images/sale6.png) 客户收到邮件示例: ![修正后客户收件](https://xp.odoohub.com.cn/basic/images/sale7.png) 典型能力: * 发件箱支持公司维度配置; * 发件箱可以匹配对应收件箱; * 支持限制发件人和认证邮箱一致; * 支持不使用catch-all的国内邮箱环境; * 支持用户在多公司下配置优先邮箱; * 适合外贸、多公司、多邮箱销售团队。 ### 发件箱公司匹配 在多公司环境中,可以为发件箱指定适用公司。留空表示所有公司可用。 ![发件箱公司配置](https://xp.odoohub.com.cn/basic/images/email16.png) 这样可以避免A公司业务误用B公司邮箱发信。 ### Catch-all匹配 发件箱可以关联对应收件箱。配置后,由该发件箱发出的邮件,可以声明对应的回复地址。 ![发件箱Catch All配置](https://xp.odoohub.com.cn/basic/images/email17.png) 例如: 发件箱:service@odoomommy.com 回复邮箱:catchall@odoohub.com.cn 客户回复时,会回复到指定的catch-all或收件邮箱,再由系统处理。 ### 用户多公司优先邮箱 如果员工在不同公司下使用不同邮箱,可以在用户上配置多公司优先邮箱。 ![用户多公司邮箱配置](https://xp.odoohub.com.cn/basic/images/email18.png) 例如: | 公司 | 用户邮箱 | | --- | --- | | A公司 | a@companya.com | | B公司 | a@companyb.com | 系统发送邮件时,可以根据当前公司优先使用对应邮箱。 > 注意:邮箱后缀需要能匹配到对应发件箱域名,否则仍可能发送失败。 实施建议 ---- 邮箱配置不要一上来就追求最复杂。更稳的方式是按阶段推进: | 阶段 | 建议 | | --- | --- | | 第一阶段 | 统一发件邮箱,确保报价、发票、密码重置、门户邀请能正常发送 | | 第二阶段 | 配置收件或统一回复邮箱,让客户回复有地方沉淀 | | 第三阶段 | 根据销售团队和多公司需求,再启用个人邮箱、多公司邮箱或OAuth | | 第四阶段 | 如果国内邮箱规则限制明显,再引入欧姆邮箱方案或定制策略 | 对大多数自主实施客户来说,第一阶段先把“能稳定发出去、客户能收到、不进垃圾箱、模板内容正确”做好,就已经能支撑销售和财务主流程。等团队真正开始依赖Odoo消息区,再逐步完善客户回复留痕和多邮箱规则。 本章我们把Odoo邮件配置从原生链路、发件收件、catch-all、国内邮箱限制、OAuth认证和欧姆邮箱增强方案串了一遍。下一章会继续讲“消息与讨论”,也就是业务单据右侧的消息区如何记录沟通、安排活动、管理关注者,并和本章的邮件配置一起形成完整的协同闭环。 results matching "" =================== No results matching "" ====================== --- # 第十章 租赁 · odoo实施参考手册-青岛欧姆网络科技 [第十章 租赁](https://xp.odoohub.com.cn/) ===================================== 第十章 租赁 ====== Odoo租赁应用把“按时间出租产品”纳入销售体系。租赁单本质上仍然围绕销售订单展开,只是订单会带有出租、归还、租赁周期和租赁价格等额外信息。 租赁业务适合设备、工具、车辆、服装、摄影器材、活动用品等需要借出和归还的场景。本章我们先用Odoo原生租赁流程理解它的标准能力,再判断复杂租赁是否需要额外方案设计。 租赁业务 ---- 租赁流程和普通销售流程最大的区别是:普通销售通常是产品所有权转移给客户,而租赁是产品借出一段时间后还要回到公司。系统不仅要记录客户是谁、租金多少,还要记录租赁开始时间、结束时间、出租状态和归还状态。 标准租赁流程可以理解为: 创建租赁产品 -> 创建租赁单 -> 确认出租 -> 产品进入租赁库位 -> 客户归还 -> 产品回到仓库 -> 开票 ### 1\. 定义租赁产品 首先,需要定义一个租赁产品,并设置租赁价格。这里以A4L为例,在产品信息中勾选可被租赁,表示该产品可以用于租赁业务。 ![](https://xp.odoohub.com.cn/sale/images/38.png) 然后在租赁选项卡中设置租赁价格: ![](https://xp.odoohub.com.cn/sale/images/39.png) ### 2\. 创建租赁单 在应用中安装租赁模块后,系统会出现租赁菜单,点击进入租赁模块。 ![](https://xp.odoohub.com.cn/sale/images/36.png) 然后创建租赁订单。假设要将A4L租给北京三块网络科技有限公司一天,租金5000,可以按租赁周期和租赁产品创建订单。 ![](https://xp.odoohub.com.cn/sale/images/37.png) 选择租赁产品后,系统会弹窗提示填写租赁期限。 ![](https://xp.odoohub.com.cn/sale/images/40.png) 这里的订单单价会根据租赁价格和租赁期限计算。 租赁价格设计时要提前确认计价单位。例如按小时、按天、按周、按月收费,或者不同租期使用不同价格。对客户来说,租期和价格必须在报价阶段就清楚,否则归还后很容易产生争议。 ### 3\. 出租产品 确认订单后,可以点击出租,将产品正式借给客户,系统会创建出库动作并完成租赁转移。 ![](https://xp.odoohub.com.cn/sale/images/41.png) ![](https://xp.odoohub.com.cn/sale/images/42.png) 查看产品出入库记录,可以看到A4L已经被租借至租赁库位。 ![](https://xp.odoohub.com.cn/sale/images/43.png) > Rental库位的类型是内部库位而不是客户库位,这表示产品所有权仍然属于本公司,只是处于出租状态。 这个设计很重要。租赁产品虽然离开了仓库,但它不是卖给客户,因此不应该像普通销售那样直接转到客户库位并完成所有权转移。租赁库位能帮助企业区分“在仓库存放”“已经出租”“已经归还”的状态。 ### 4\. 归还产品 客户归还产品后,在租赁订单中点击归还按钮,将产品归还到仓库。点击归还后会弹出归还向导。 ![](https://xp.odoohub.com.cn/sale/images/44.png) 确认归还后,订单状态会变为已归还。 ![](https://xp.odoohub.com.cn/sale/images/45.png) ### 5\. 开票 租赁订单完成后,可以给客户创建发票。租赁开票本质上仍然走销售订单到客户发票的流程。 ![](https://xp.odoohub.com.cn/sale/images/46.png) 租赁开票可以根据企业规则安排: * 出租前先收款; * 归还后按实际租期结算; * 按月定期开票; * 租金和押金分开处理; * 损坏赔偿单独开票。 Odoo原生租赁适合标准出租和归还。如果押金、逾期、赔偿、续租、维修都很复杂,就要在原生流程基础上进一步设计。 实施建议 ---- Odoo原生租赁流程适合标准出租、归还和开票场景。如果客户有押金、逾期罚金、损坏赔偿、租赁审批、复杂库存状态、设备维保、合同续租等要求,就需要进一步做流程设计。 租赁不要一开始就做复杂定制。建议先用一两个租赁产品跑通出租、归还、开票和库存位置,再评估是否需要押金、合同、维修或行业增强。 本章讲清楚了租赁产品、租赁单、出租、归还和开票的基本流程。下一章会进入消费税,看看特定行业税种如何在销售流程中扩展标准税率逻辑。 results matching "" =================== No results matching "" ====================== --- # 第一章 销售管理总览 · odoo实施参考手册-青岛欧姆网络科技 [第一章 销售管理总览](https://xp.odoohub.com.cn/) ========================================= 第一章 销售管理总览 ========== Odoo原生销售模块用于管理从客户报价到销售订单,再到交付、开票和收款的完整流程。它不是单独的一张订单表,而是连接CRM、联系人、产品、价格表、库存、会计、网站、租赁和项目服务的核心模块。 企业实施Odoo销售管理时,最重要的不是先把旧系统里的订单界面照搬过来,而是先理解Odoo的标准销售链路:什么阶段是报价,什么阶段是订单,什么时候触发库存,什么时候可以开票,价格、税率、付款条件和交付承诺分别在哪里决定。本章先建立整体框架,后续章节再逐步展开每一块。 销售管理的标准流程 --------- Odoo销售流程可以简单理解为: 客户/商机 -> 报价单 -> 客户确认 -> 销售订单 -> 交付 -> 开票 -> 收款 -> 售后 不同企业会有不同变体: | 企业类型 | 常见流程 | | --- | --- | | 贸易公司 | 报价 -> 确认订单 -> 采购/备货 -> 发货 -> 开票收款 | | 服务公司 | 商机 -> 报价 -> 项目/工时 -> 阶段开票 -> 收款 | | 外贸公司 | 报价 -> 形式发票 -> 预付款 -> 发货 -> 尾款发票 | | 门店/零售 | POS直接销售,必要时和销售订单衔接 | | 租赁业务 | 租赁订单 -> 出租 -> 归还 -> 开票 | | 定制生产 | 报价 -> 确认订单 -> 生产/采购 -> 发货 -> 开票 | Odoo的优势在于这些流程并不是孤立的。销售订单确认后,可以根据产品和配置自动生成发货、采购、生产、项目任务或发票。 销售模块和其他模块的关系 ------------ 销售模块经常会和其他模块一起使用。 | 相关模块 | 和销售的关系 | | --- | --- | | 联系人 | 客户、开票地址、送货地址、联系人 | | CRM | 商机转报价,统计销售漏斗和赢单率 | | 产品 | 决定是否可销售、价格、税率、开票策略、交付方式 | | 库存 | 销售订单确认后生成发货单,影响可用库存 | | 会计 | 销售订单创建客户发票,登记收款和应收账款 | | 网站/门户 | 客户在线查看、签名、支付和下载单据 | | 项目/工时 | 服务销售、按工时或里程碑开票 | | 采购/生产 | 按订单采购、按订单生产、补货 | | 租赁 | 基于销售订单扩展出租和归还流程 | 所以销售模块实施不能只问“销售要填哪些字段”,还要问库存怎么发货、财务怎么开票、客户怎么确认、产品怎么定价。 报价单和销售订单 -------- 报价单是尚未被客户确认的销售提案。客户接受后,报价单确认为销售订单。 下面是一张典型的报价单。此时订单还没有正式成立,系统顶部仍然显示发送邮件、确认、取消等操作按钮。 ![报价单界面](https://xp.odoohub.com.cn/sale/images/17.png) | 阶段 | 业务含义 | 系统影响 | | --- | --- | --- | | 报价单 | 给客户的价格和条件提案 | 可以修改、发送、设置有效期 | | 已发送报价 | 已经发给客户等待确认 | 可跟进、可在线签名或支付 | | 销售订单 | 客户已经确认 | 触发交付、开票、采购、生产或项目 | | 已取消 | 交易取消 | 相关下游单据需要同步处理 | | 已锁定/完成 | 订单不再随意修改 | 适合归档或流程完成 | 从技术角度看,报价单和销售订单通常是同一个对象的不同状态。对业务人员来说,关键是理解:确认订单以后,系统会开始产生后续业务动作。 确认后的销售订单会出现交付、客户预览等智能按钮,订单行也会显示已交付、已开票等履约字段。 ![销售订单界面](https://xp.odoohub.com.cn/sale/images/18.png) 销售设置先看哪些 -------- 进入 **销售 -> 配置 -> 设置**,常见设置包括: | 设置 | 作用 | | --- | --- | | 报价模板 | 快速生成标准报价内容 | | 在线签名 | 客户在门户中签署确认报价 | | 在线支付 | 客户付款后确认订单 | | 报价有效期 | 控制报价默认有效天数 | | 价格表 | 启用客户等级价、多币种、促销价 | | 折扣 | 允许在订单行中显示折扣字段 | | 利润 | 在销售订单中查看成本和毛利 | | 发货地址 | 客户、开票地址、送货地址分开管理 | | 开票策略 | 默认按订购数量或已交付数量开票 | | 销售警告 | 对特定客户或产品给销售提醒 | 不建议一开始把所有开关都打开。第一期可以先启用报价、产品、价格、交付、开票必需的设置;等流程稳定后,再逐步启用在线签名、在线支付、报价模板、复杂价格表等能力。 客户地址 ---- 一个客户可能有多个地址:总公司、开票地址、送货地址、联系人地址。销售订单中常见的三个角色是: | 地址 | 用途 | | --- | --- | | 客户 | 当前销售订单所属客户 | | 开票地址 | 发票抬头、税号、账务往来对象 | | 送货地址 | 仓库发货和物流配送地址 | 很多客户初期会把所有地址都写在一个联系人里。这样小规模使用没问题,但当一个集团客户有多个门店、仓库、开票主体时,就应该使用联系人层级和不同地址类型。 在用户权限或销售设置中启用相关能力后,销售订单可以显示单独的开票地址和送货地址。 ![开票地址和送货地址](https://xp.odoohub.com.cn/sale/images/60.png) 如果希望销售员在订单上直接看到完整地址,也可以通过方案增强把详细地址展示出来,减少仓库发货前反复点开客户资料的动作。 ![订单上的详细地址](https://xp.odoohub.com.cn/sale/images/61.png) 交付承诺和提前期 -------- 销售订单不仅记录客户买什么,也记录企业承诺什么时候交付。 常见概念: | 概念 | 说明 | | --- | --- | | 销售提前期 | 产品从下单到可交付需要的时间 | | 承诺交货日期 | 销售对客户承诺的交付日期 | | 预计日期 | 系统根据提前期和策略计算出的交付日期 | | 交付策略 | 尽快交付,或等全部产品就绪再交付 | 如果企业有库存、采购或生产,交付日期就不能只靠销售随手填写。销售承诺会影响仓库计划、采购补货和客户满意度。 订单中可以设置交付策略,例如尽快交付,或等所有产品就绪后再交付。 ![销售订单交付策略](https://xp.odoohub.com.cn/sale/images/3.jpg) 如果销售承诺的日期早于系统根据提前期计算出的可交付日期,系统会提示可能存在延误风险。 ![交付日期风险提示](https://xp.odoohub.com.cn/sale/images/6.jpg) 锁定销售订单 ------ 销售订单确认后,后续可能已经关联发货单、发票、采购单或生产单。为了避免历史订单被随意修改,Odoo支持锁定订单。 锁定的意义是: * 防止确认后的订单被无意修改; * 让销售和财务数据更稳定; * 对已完成订单形成归档状态; * 需要修改时再由有权限人员解锁。 锁定不是必须每个企业都立刻使用,但订单量变大后,建议启用更严格的修改控制。 锁定后的订单会显示解锁按钮,提示用户当前订单已经不适合随意编辑。 ![锁定销售订单](https://xp.odoohub.com.cn/sale/images/1.jpg) 销售利润和成本 ------- 销售人员和管理者经常需要看毛利。Odoo可以启用销售利润功能,在销售订单中显示成本和利润。 启用后要注意: * 成本来自产品成本或库存估值逻辑; * 成本不准确时,毛利也不准确; * 不同成本方法会影响毛利口径; * 销售员是否能看到成本,需要结合权限管理。 毛利不是一个简单字段,它连接产品、库存、会计和销售绩效。 启用利润功能后,销售订单行可以显示成本和利润信息,方便销售主管查看订单是否有足够毛利空间。 ![销售利润设置](https://xp.odoohub.com.cn/sale/images/12.png) 打印和发送销售单据 --------- Odoo可以打印报价单、销售订单,也可以通过邮件发送给客户。PDF版式受文档布局和报表模板影响。 销售单据常见输出方式: * 打印PDF; * 邮件发送; * 客户门户查看; * 在线签名; * 在线支付; * 下载或归档附件。 如果客户对报表格式要求很高,优先使用原生文档布局和QWeb报表机制做轻度调整,不建议一开始引入复杂报表插件。报表章节已经解释过这个原则。 销售订单右上角可以直接打印报价单或销售订单。 ![打印报价单和销售订单](https://xp.odoohub.com.cn/sale/images/31.png) 打印出的PDF会使用公司文档布局,包括Logo、公司信息、页眉页脚和订单明细。 ![销售订单PDF效果](https://xp.odoohub.com.cn/sale/images/32.png) 实施顺序建议 ------ 销售模块建议按下面顺序实施: | 阶段 | 重点 | | --- | --- | | 第一阶段 | 客户、产品、税率、价格、报价单、销售订单 | | 第二阶段 | 交付、发票、付款、取消、退货 | | 第三阶段 | 报价模板、价格表、折扣、多币种 | | 第四阶段 | 在线签名、在线支付、客户门户 | | 第五阶段 | CRM、采购、库存、生产、项目、租赁联动 | | 第六阶段 | 行业增强,例如第二单位、消费税、特殊报表 | 对小白客户来说,先把标准报价到订单、交付、开票、收款跑通,比一开始追求所有高级功能更重要。对顾问来说,销售模块的关键是把商业承诺、库存履约和财务开票放在同一条线上设计。 本章建立了销售管理的整体框架。下一章会进入销售产品与变体,继续看产品资料如何影响报价、价格、库存、开票和后续履约。 results matching "" =================== No results matching "" ====================== --- # 第三章 报价单与客户确认 · odoo实施参考手册-青岛欧姆网络科技 [第三章 报价单与客户确认](https://xp.odoohub.com.cn/) =========================================== 第三章 报价单与客户确认 ============ Odoo原生的销售流程通常从报价单开始。报价单是给客户看的商业提案,里面包含客户、产品、价格、税率、付款条件、有效期、交付信息和条款;客户接受后,报价单才会确认成销售订单,进入后续交付、开票和收款流程。 很多企业上线Odoo时,会把报价单当成“销售订单草稿”简单录入。这样也能用,但会浪费Odoo原生在报价模板、在线签名、在线支付、可选产品、报价有效期和客户门户确认方面的能力。本章我们就来看一下如何把报价单做成真正可复用、可追踪、可让客户确认的销售工具。 报价单和销售订单的关系 ----------- 报价单和销售订单在系统中属于同一类业务对象,只是状态不同。 报价单草稿 -> 已发送报价 -> 客户确认 -> 销售订单 -> 交付/开票/收款 常见状态可以这样理解: | 状态 | 含义 | | --- | --- | | 报价单 | 内部正在编辑的销售提案 | | 已发送 | 已通过邮件、门户或其他方式发送给客户 | | 销售订单 | 客户已经接受,商业交易成立 | | 已取消 | 报价或订单取消 | | 已锁定/完成 | 订单不再随意修改,进入归档或完成状态 | 实施时要让客户明白:报价单阶段可以调整方案,确认成销售订单后就应该更加谨慎,因为后续可能已经生成发货、发票、采购或生产需求。 创建报价单 ----- 进入 **销售 -> 订单 -> 报价单**,点击新建即可创建报价。 下面是一张典型的报价单界面。顶部有发送邮件、确认、取消等按钮,右侧状态条会显示报价单当前处于报价阶段。 ![报价单界面](https://xp.odoohub.com.cn/sale/images/17.png) 报价单通常需要填写: * 客户; * 开票地址; * 送货地址; * 产品和数量; * 单价、折扣和税率; * 价格表和币种; * 付款条件; * 报价有效期; * 销售员和销售团队; * 条款、备注和附件。 如果从CRM商机创建报价,客户、销售员和商机来源通常可以顺带进入报价单。这样销售漏斗和后续订单会形成连续记录。 在报价单中,订单行是最核心的区域。销售人员需要确认产品、说明、数量、单价、税率和小计是否正确。右下角的未税金额、税额和总计,是客户最关心的报价结果。 报价有效期 ----- 报价有效期用于告诉客户:这份报价在什么日期前有效。 适合使用有效期的场景: * 原材料价格波动较大; * 汇率变化会影响价格; * 促销活动有截止日期; * 销售希望推动客户尽快确认; * 项目报价需要内部重新评估。 可以在销售设置中配置默认报价有效期,也可以在单张报价单上手动调整。 不要把报价长期保持有效。过期报价如果继续让客户确认,容易产生价格争议。 报价模板 ---- 报价模板适合重复销售相似方案的企业。 例如: * 标准实施服务包; * 网站建设套餐; * 设备销售加安装服务; * 年度维护服务; * 常见产品组合; * 标准租赁方案。 报价模板可以预先准备产品行、说明、可选产品和条款。销售创建报价时选择模板,就能快速生成标准内容。 报价模板的价值不只是省时间,更重要的是让不同销售的报价口径一致。 设计报价模板时,不建议把模板做得过细。比如“网站标准版”“网站专业版”“Odoo实施基础包”这类常用套餐适合模板;每个客户都不同的项目,不适合为每个客户单独建模板。 模板中可以沉淀: | 内容 | 作用 | | --- | --- | | 标准产品行 | 减少销售漏填 | | 标准说明 | 统一交付范围和服务边界 | | 可选产品 | 引导客户选择增值服务 | | 默认有效期 | 控制报价风险 | | 标准条款 | 避免每个销售自己写条款 | 如果企业销售流程还不稳定,第一期可以先不用模板。等销售团队反复使用同类报价后,再把成熟方案沉淀成模板。 可选产品 ---- 可选产品适合做增购建议。 例如客户购买打印机时,可以推荐墨盒和维护服务;客户购买设备时,可以推荐安装培训;客户购买软件时,可以推荐实施服务或运维服务。 可选产品不会一开始就强制加入订单,而是作为客户可以选择的附加项。在客户门户确认报价时,客户可以选择是否添加。 这类能力适合提升客单价,但不要滥用。可选产品应该和主产品相关,否则客户会觉得报价单很杂。 可选产品和订单行的区别在于:订单行是本次报价默认包含的内容,可选产品是给客户的附加选择。客户接受报价时,如果选择了可选产品,系统可以把它加入订单。 实施时可以让销售主管先确定几类标准搭配: * 主设备+安装服务; * 软件订阅+实施服务; * 租赁产品+保险或押金; * 产品销售+延保服务; * 电商商品+配件包。 这样可选产品才是销售策略,而不是随手堆商品。 在线签名和在线支付 --------- Odoo支持让客户在门户中确认报价。常见确认方式包括: | 方式 | 适用场景 | | --- | --- | | 在线签名 | 客户签署报价确认,适合B2B服务和项目 | | 在线支付 | 客户支付后确认订单,适合预收款或标准商品 | | 签名+支付 | 高价值订单或需要客户承诺的场景 | | 内部手动确认 | 传统线下确认、电话确认、合同另签 | 在线签名和在线支付是不同机制。签名代表客户确认条款,支付代表客户完成收款动作。是否使用,要看企业的交易习惯和付款流程。 如果启用在线支付,还需要先配置支付提供商。支付确认后,销售员通常会收到通知,订单也会进入后续流程。 在线签名更适合需要客户明确确认条款的B2B报价,例如实施服务、设备销售、项目合同。在线支付更适合客户可以直接下单付款的标准商品或预付款业务。 两者可以一起用,但不要为了“看起来高级”强行启用。如果客户习惯线下盖章合同,可以先用PDF报价和邮件确认;如果客户习惯门户操作,再逐步启用在线签名和在线支付。 客户门户确认 ------ 报价单发给客户后,客户可以通过邮件链接或门户查看报价。 客户门户可以让客户: * 查看报价明细; * 下载PDF; * 接受或拒绝报价; * 在线签名; * 在线付款; * 添加可选产品; * 查看后续订单和发票。 门户体验和邮件配置密切相关。上一部分已经讲过邮箱配置和消息区,这里要把它们连起来:报价邮件能否送达、客户能否点开链接、客户回复能否回到单据,都会影响销售体验。 报价单右上角的客户预览可以帮助销售人员提前查看客户看到的页面。正式发送前,建议至少预览一次,确认金额、条款和按钮符合预期。 ![客户预览入口](https://xp.odoohub.com.cn/sale/images/17.png) 如果企业使用门户确认报价,还要同时测试: * 客户是否能收到报价邮件; * 客户点击链接后是否能打开门户页面; * 未登录客户是否能通过访问令牌查看; * 在线签名按钮是否显示; * 在线支付按钮是否显示; * 客户接受后订单状态是否正确变化; * 销售是否收到提醒。 这些内容和前面基础数据部分的邮箱配置、消息区、门户访问令牌都有关。销售模块不是孤立的,报价确认体验往往会暴露基础设置是否完整。 报价单发送前要确认什么 ----------- 发送报价前,销售至少要确认: * 客户名称、开票地址、送货地址正确; * 产品名称、数量、单位正确; * 单价、折扣、税率正确; * 价格表和币种正确; * 付款条件和报价有效期合理; * 交付周期和承诺日期可实现; * 附件和条款没有遗漏; * 客户看到的PDF版式可接受。 这些不是项目交付文件,而是销售日常工作习惯。报价单一旦发出,就代表公司对客户做出商业承诺。 如果企业对报价PDF格式要求较高,可以先使用原生文档布局调整Logo、颜色、页脚,再评估是否需要QWeb报表轻度定制。不要为了追求和旧系统一模一样,把第一期报价流程拖得过重。 报价单也可以直接打印为PDF,适合发给客户归档或线下盖章。 ![打印报价单](https://xp.odoohub.com.cn/sale/images/31.png) 打印后的PDF样式由文档布局和报表模板决定。第一期至少要保证公司Logo、地址、电话、页脚、产品明细和金额显示清楚。 ![报价PDF效果](https://xp.odoohub.com.cn/sale/images/32.png) 报价和CRM的衔接 --------- 如果企业使用CRM,推荐从商机中创建报价。 这样可以保留: * 线索来源; * 商机阶段; * 销售活动; * 客户沟通记录; * 报价金额; * 赢单或丢单原因。 如果销售直接在销售模块创建报价,也可以使用。但从管理角度看,CRM到报价的链路更完整,方便后续统计转化率和销售漏斗。 实施建议 ---- 第一期上线时,不建议马上启用所有报价高级功能。可以按下面顺序推进: | 阶段 | 建议 | | --- | --- | | 第一阶段 | 标准报价单、邮件发送、PDF样式、客户确认流程跑通 | | 第二阶段 | 配置报价有效期、付款条件、标准条款 | | 第三阶段 | 使用报价模板和可选产品,提高报价效率 | | 第四阶段 | 根据客户习惯启用在线签名或在线支付 | | 第五阶段 | 和CRM、订阅、项目、库存、财务流程打通 | 本章我们把报价单从创建、发送、有效期、模板、可选产品、在线签名、在线支付和CRM衔接讲了一遍。下一章会继续看客户确认报价后,销售订单如何进入交付、开票、取消、锁定和状态管理。 results matching "" =================== No results matching "" ====================== --- # 第六章 价格表、折扣与多币种 · odoo实施参考手册-青岛欧姆网络科技 [第六章 价格表、折扣与多币种](https://xp.odoohub.com.cn/) ============================================= 第六章 价格表、折扣与多币种 ============== 价格是销售管理中最敏感的部分。不同客户等级、不同渠道、不同币种、不同数量、不同促销活动,都会影响最终报价。Odoo原生通过价格表、折扣、付款条件和币种配置,帮助企业把价格规则从人工Excel中沉淀到系统里。 本章我们重点讲Odoo原生价格体系应该怎么理解。最佳实践仍然是先使用原生价格表和折扣能力,把规则设计清楚;只有当原生规则无法表达业务时,再考虑定制价格计算或外部价格引擎。 价格从哪里来 ------ 销售订单行上的单价通常来自多个因素: | 因素 | 说明 | | --- | --- | | 产品销售价格 | 产品资料中的基础售价 | | 价格表 | 根据客户、币种、数量、时间、产品等规则计算价格 | | 折扣 | 订单行上的折扣比例 | | 税率 | 决定含税/不含税和税额 | | 币种 | 影响报价币种和汇率 | | 客户条件 | 客户默认价格表、付款条件、财政结构 | 销售人员看到的最终价格,不一定只是产品上的销售价格。实施时要把价格来源讲清楚,否则客户会觉得“系统价格乱跳”。 启用价格表 ----- 价格表可以在 **销售 -> 配置 -> 设置 -> 价格** 中启用。 启用后,销售订单上可以选择价格表。 ![](https://xp.odoohub.com.cn/sale/images/48.png) 价格表适合: * VIP客户价格; * 批发价; * 经销商价格; * 促销价; * 阶梯价; * 多币种销售; * 按产品类别定价; * 按数量或日期定价。 不要为每个客户复制一套产品价格。优先用价格表规则表达价格差异。 切换价格表 ----- 销售订单上切换价格表后,系统通常会提示是否更新订单行价格。 例如,一台A4L公开价格为250000元。 ![](https://xp.odoohub.com.cn/sale/images/49.png) 给VIP客户设置8折价格表。 ![](https://xp.odoohub.com.cn/sale/images/50.png) 在报价单上切换到VIP价格表后,系统出现更新价格按钮。 ![](https://xp.odoohub.com.cn/sale/images/51.png) 确认更新后,订单行价格会按新价格表重新计算。 ![](https://xp.odoohub.com.cn/sale/images/52.png) ![](https://xp.odoohub.com.cn/sale/images/53.png) 这个动作要谨慎。如果销售已经手工调整过某些行价格,切换价格表可能覆盖原来的价格。 价格表规则 ----- 常见价格表规则包括: | 规则 | 示例 | | --- | --- | | 固定价格 | 某产品对VIP客户固定为200元 | | 百分比折扣 | 所有产品8折 | | 基于成本加价 | 成本价加20% | | 基于其他价格表 | 在公开价基础上打折 | | 最小数量 | 购买10件以上享受批发价 | | 有效日期 | 促销价只在本月有效 | | 产品类别 | 某一类产品统一折扣 | 规则越复杂,越要提前设计优先级。否则销售会很难解释为什么某个产品最终价格是这个数。 折扣 -- 折扣可以理解为订单行层面的价格调整。 适合折扣的场景: * 销售临时让利; * 单张订单谈判折扣; * 清仓折扣; * 客户投诉补偿; * 手工处理特殊价格。 适合价格表的场景: * 长期客户等级价; * 批发规则; * 渠道价格; * 多币种价格; * 有效期促销; * 可复用的标准规则。 简单说:长期规则用价格表,临时让利用折扣。 多币种销售 ----- Odoo可以通过价格表管理不同币种的销售价格。多币种销售通常需要会计模块支持币种和汇率。 常见场景: * 外贸订单使用美元、欧元、澳元; * 不同国家客户使用不同报价币种; * 同一产品在不同市场有不同价格; * 汇率变化影响报价有效期。 实施时要确认: | 问题 | 说明 | | --- | --- | | 报价币种 | 客户看到哪种币种 | | 汇率来源 | 手工维护还是自动更新 | | 开票币种 | 是否与报价币种一致 | | 收款币种 | 是否存在汇兑损益 | | 价格有效期 | 汇率波动时报价多久有效 | 多币种不是只改一个符号。它会影响报价、开票、收款和财务汇兑。 税前价和含税价 ------- 价格表和税率还会影响客户看到的是税前价格还是含税价格。 在B2B场景,报价常用不含税单价,再单独显示税额。在零售或部分国家地区,客户更习惯看到含税价。 实施时要让销售、财务确认: * 产品价格是含税还是不含税; * 报价单PDF如何显示税额; * 发票税率是否和销售订单一致; * 不同国家客户是否通过财政结构映射不同税率。 税前税后口径如果没讲清楚,客户很容易认为报价和发票金额不一致。 什么时候需要定制价格 ---------- 原生价格表能处理大量常见规则,但以下情况可能需要定制: * 价格依赖实时成本、库存、汇率或外部系统; * 多维度复杂公式,例如长度、面积、重量、加工工艺一起计算; * 客户合同价需要审批后生效; * 价格规则和返利、佣金、预算联动; * 行业报价需要配置器或CPQ能力; * 需要从电商平台或第三方价格系统同步。 定制前建议先问:这个规则能不能拆成价格表、折扣、产品属性、第二单位或报价模板?如果能用原生表达,就不要先写复杂代码。 实施建议 ---- 价格体系建议按下面顺序设计: 1. 先确认产品基础售价; 2. 再确认是否需要客户等级价; 3. 再确认是否需要多币种; 4. 再确认数量阶梯和促销有效期; 5. 最后处理特殊客户、特殊公式和行业报价。 第一期不要把所有历史特价都导进系统。先让当前仍在使用、能解释清楚、能被销售执行的价格规则上线。 本章讲清楚了价格表、折扣、多币种和税前税后价格的基本逻辑。下一章会继续看税率与财政结构,解决不同地区、不同客户、不同产品税率如何自动匹配的问题。 results matching "" =================== No results matching "" ====================== --- # 第四部分 采购管理 · odoo实施参考手册-青岛欧姆网络科技 [第四部分 采购管理](https://xp.odoohub.com.cn/) ======================================== results matching "" =================== No results matching "" ====================== --- # 第二章 成本计算 · odoo实施参考手册-青岛欧姆网络科技 [第二章 成本计算](https://xp.odoohub.com.cn/) ======================================= 第二章 成本计算逻辑 ========== 收货入库 ---- 如果产品设置的成本计算方法为平均价格, 那么当产品采购入库以后,系统会根据本次采购的价值加上系统中原有的库存价值, 除以入库后的总数量来计算平均价格. 即: 平均价格 = (采购价格 _采购数量 + 原平均价格_ 库存) / 入库后的库存数量 ### 库存核算层 虽然逻辑上可以用上面的公式来进行计算, 但实际过程中 results matching "" =================== No results matching "" ====================== --- # 第五章 开票策略与预付款 · odoo实施参考手册-青岛欧姆网络科技 [第五章 开票策略与预付款](https://xp.odoohub.com.cn/) =========================================== 第五章 开票策略与预付款 ============ 销售订单确认以后,企业最关心的问题通常是:什么时候可以给客户开票,开多少,按订单数量开还是按交付数量开,客户预付款要怎么处理。Odoo原生通过产品上的开票策略、销售订单上的创建发票动作、预付款发票和形式发票来处理这些问题。 开票不是销售部门一个人的事,它会影响财务应收、收入确认、库存交付、项目服务和客户付款体验。本章我们就来看一下Odoo销售中的开票策略和预付款逻辑,帮助客户在上线前把“报价、交付、开票、收款”的口径讲清楚。 两种开票策略 ------ Odoo原生支持两种核心开票策略: 开票策略通常在产品上维护。销售订单创建发票时,系统会根据产品开票策略和当前交付情况判断可开票数量。 ![产品开票策略](https://xp.odoohub.com.cn/sale/images/16.png) | 策略 | 含义 | 适用场景 | | --- | --- | --- | | 按订购数量开票 | 销售订单确认后,就可以按订单数量开票 | 标准商品、预收款、按合同金额开票 | | 按已交付数量开票 | 产品交付后,按实际交付数量开票 | 分批发货、散装材料、按实际交付结算 | 开票策略可以在销售设置中设置默认值,也可以在产品资料中单独调整。设置默认策略只会影响之后新建或更新的产品,已经存在的产品通常需要单独确认。 按订购数量开票 ------- 按订购数量开票的逻辑比较直接。 报价确认 -> 销售订单 -> 创建发票 -> 确认发票 -> 登记付款 这种方式适合: * 客户确认订单后即可开票; * 先收款再发货; * 标准服务费; * 固定金额合同; * 不需要等仓库交付后再结算的业务。 优点是流程简单,财务可以更早开票。缺点是如果实际交付数量变化较大,后续可能需要退款、贷项通知单或补开发票。 按已交付数量开票 -------- 按已交付数量开票会把开票动作和交付结果绑定。 报价确认 -> 销售订单 -> 发货/交付 -> 创建发票 -> 按交付数量开票 这种方式适合: * 分批发货; * 实际交付数量可能和订单数量不同; * 材料、液体、食品等按实际数量结算; * 服务需要交付完成后再开票; * 项目、工时、里程碑等交付驱动业务。 如果产品设置为按交付数量开票,但还没有交付,销售订单上可能不会有可开票数量。客户看到“为什么不能开票”时,通常要先检查产品开票策略和交付数量。 创建常规发票 ------ 销售订单确认后,可以点击 **创建发票**。 创建发票时,系统会弹出向导。选择常规发票时,系统会根据当前可开票数量创建客户发票草稿。 ![创建发票向导](https://xp.odoohub.com.cn/sale/images/19.png) 常规发票会根据可开票数量生成发票草稿。财务确认后,发票进入正式应收流程,再登记客户付款。 在销售菜单的待开票列表中,可以集中查看哪些销售订单已经满足开票条件。财务或销售主管可以从这里批量进入开票处理。 ![待开票销售订单](https://xp.odoohub.com.cn/sale/images/30.png) 要注意: * 销售订单不是会计发票; * 发票草稿还不是正式应收; * 发票确认后才会进入会计账务; * 登记付款后才表示客户付款已经记录; * 银行对账和付款状态还会受财务配置影响。 销售人员不需要掌握所有会计细节,但要知道销售订单、发票、付款是三个不同阶段。 预付款 --- 预付款适合客户先支付一部分金额,再根据交付或最终结算开尾款。 选择预付款百分比或固定金额后,系统会生成一张预付款发票。 ![预付款设置](https://xp.odoohub.com.cn/sale/images/22.png) Odoo创建发票时,可以选择: | 方式 | 说明 | | --- | --- | | 预付款百分比 | 按销售订单总额的一定比例开票,例如30% | | 预付款固定金额 | 开固定金额预付款,例如5000元 | | 常规发票 | 按可开票数量创建普通发票 | 预付款常见场景: * 定制产品; * 高价值设备; * 项目实施; * 跨境订单; * 租赁押金或订金; * 客户信用不足时先收款。 预付款发票确认并收款后,后续创建最终发票时,系统会把已经开过的预付款进行抵扣,避免重复收款。 下图是一张预付款发票示例。它代表客户先支付的一部分金额,不等同于最终结算完成。 ![预付款发票](https://xp.odoohub.com.cn/sale/images/23.png) 100%预付款不是最终发票 ------------- Odoo官方文档中特别容易被忽略的一点是:100%预付款不等于销售订单已经完成最终开票。 它仍然是预付款流程。系统后续可能还需要生成最终发票,用来完成销售订单的结算关系。 所以如果企业只是想“一次性开完整发票”,通常应使用常规发票;如果业务上确实是先收全款、后交付、后结算,可以使用100%预付款。 这个区别在实施时要讲清楚,否则财务可能会疑惑为什么已经收了100%,系统还允许继续创建发票。 创建尾款或最终发票时,系统会自动抵扣已经开过的预付款,避免重复收款。 ![预付款抵扣](https://xp.odoohub.com.cn/sale/images/27.png) 形式发票 ---- 形式发票通常用于提前给客户查看付款信息或进口清关资料,它不是正式会计发票。 适合场景: * 外贸客户付款前需要Pro-forma Invoice; * 客户内部审批需要付款文件; * 货物发出前需要商业文件; * 不希望先生成正式应收发票。 形式发票不要和正式发票混淆。它可以作为商业预览文件,但真正进入财务应收的仍然是客户发票。 销售开票和库存的关系 ---------- 开票策略会影响销售和库存的配合。 | 产品开票策略 | 库存影响 | 开票影响 | | --- | --- | --- | | 按订购数量 | 是否发货不影响可开票数量 | 确认订单后通常可开票 | | 按已交付数量 | 需要完成交付数量 | 交付后才出现可开票数量 | 如果企业启用库存,销售订单确认后通常会生成发货单。仓库完成发货后,已交付数量更新,财务再按策略开票。 如果企业销售的是服务,已交付数量可能来自手工交付、项目里程碑、工时或其他服务交付机制。 销售订单行中的已交付数量和已开票数量,是判断后续能否开票的重要依据。 ![销售订单交付和开票数量](https://xp.odoohub.com.cn/sale/images/35.png) 实施建议 ---- 开票策略不要只由销售决定,必须让财务和业务负责人一起确认。 推荐做法: | 产品类型 | 常见建议 | | --- | --- | | 标准现货商品 | 可按订购数量或交付数量,取决于是否先款后货 | | 分批发货商品 | 通常按已交付数量 | | 定制产品 | 常用预付款+尾款 | | 服务产品 | 根据服务交付方式选择订购数量、工时或里程碑 | | 项目实施 | 常用预付款、阶段款、里程碑开票 | | 外贸订单 | 常结合形式发票、预付款和最终发票 | 本章我们把销售开票策略、常规发票、预付款、100%预付款、形式发票和库存交付之间的关系讲清楚了。下一章会继续看价格表、折扣和多币种,解决不同客户、不同市场、不同币种下的销售定价问题。 results matching "" =================== No results matching "" ====================== --- # 第二部分 基础数据 · odoo实施参考手册-青岛欧姆网络科技 [第二部分 基础数据](https://xp.odoohub.com.cn/) ======================================== 第二部分 基础数据 ========= 基础数据是 Odoo 的地基。销售订单、采购订单、库存、财务、POS、生产都会反复使用这些资料。 本部分不只介绍按钮在哪里,更重要的是帮助读者理解:哪些资料要先准备,哪些字段会影响后续业务,哪些设置一旦开始正式使用就不要轻易修改。 本部分学习目标 ------- 读完本部分,读者应该能够完成下面几件事: * 理解 Odoo 的基本应用结构; * 知道测试库、正式库和备份的区别; * 设置公司、用户、语言和常用权限; * 正确区分客户、供应商、联系人、发票地址和送货地址; * 创建可以用于销售、采购和库存的产品资料; * 使用导入导出功能批量维护基础数据; * 理解邮件、消息、活动和报表的基础作用。 推荐配置顺序 ------ 第一次实施时,建议按下面顺序处理基础数据: 1. 公司资料; 2. 用户和权限; 3. 客户、供应商、联系人; 4. 产品类别和产品资料; 5. 仓库、库存和计量单位; 6. 税率、银行账号、付款条件; 7. 数据导入、抽查和修正; 8. 邮件、消息和报表样式。 不要在基础数据还没有确认时,就急着大量录入正式业务单据。基础数据错了,后面的订单、库存和财务都会跟着错。 第一部分和后续模块的关系 ------------ | 基础数据 | 后续影响 | | --- | --- | | 公司资料 | 报价单、发票、邮件模板、报表抬头 | | 用户和权限 | 员工能看到什么菜单,能不能创建、修改、审批 | | 联系人 | 客户、供应商、送货地址、发票地址、门户账号 | | 产品 | 报价、采购、库存、生产、POS、成本和毛利 | | 单位和类别 | 价格、库存数量、会计科目、统计报表 | | 邮件设置 | 报价发送、客户回复、系统通知 | | 报表设置 | 打印样式、客户文档、内部管理报表 | 如果企业第一次接触 Odoo,可以先把本部分跑通,再进入销售、采购、库存、财务等业务模块。 results matching "" =================== No results matching "" ====================== --- # 第八章 销售与库存交付 · odoo实施参考手册-青岛欧姆网络科技 [第八章 销售与库存交付](https://xp.odoohub.com.cn/) ========================================== 第八章 销售与库存交付 =========== 销售订单确认后,Odoo会根据产品类型、库存路线和仓库配置决定是否生成发货单。对销售人员来说,客户买了什么、什么时候能发货、库存够不够,是每天都要回答的问题;对仓库来说,销售订单是出库作业的重要来源。 本章只讲销售相关的库存交付逻辑。更完整的库位、路线、批次、盘点和补货,会在仓库管理部分展开。 哪些销售会影响库存 --------- 不是所有销售订单都会生成发货单。 | 产品类型 | 是否通常生成发货 | | --- | --- | | 实物产品 | 通常会生成发货单 | | 服务产品 | 通常不生成库存移动 | | 消耗品/非库存商品 | 取决于版本和配置,通常不严格管理库存 | | 租赁产品 | 走出租和归还流程 | | 套件/组合 | 取决于BOM和路线 | 如果确认订单后没有发货单,先检查产品类型、库存应用是否安装、产品是否可库存、路线是否正确。 发货单如何产生 ------- 标准库存销售流程: 销售订单确认 -> 系统生成发货单 -> 仓库拣货/打包/发货 -> 验证出库 -> 已交付数量更新 发货单状态会告诉销售当前是否能发货: | 状态 | 含义 | | --- | --- | | 等待 | 库存不足或等待上游作业 | | 就绪 | 库存满足,可以处理发货 | | 已完成 | 仓库已完成出库 | | 已取消 | 发货单取消 | 销售人员不要只看订单状态,也要看发货单状态。 销售订单确认后,如果产品需要库存交付,右上角会出现交付智能按钮。销售可以通过这个按钮进入对应发货单,查看仓库处理情况。 ![销售订单交付按钮](https://xp.odoohub.com.cn/sale/images/18.png) 库存预测小部件 ------- 启用库存后,销售订单行可能显示库存预测相关信息。它用于帮助销售判断当前库存是否足够,以及未来是否有入库或出库会影响交付。 在订单行中,库存预测小图标可以帮助销售查看当前产品的可用情况。这个信息对判断能否按时交付非常有用。 ![销售订单库存预测](https://xp.odoohub.com.cn/sale/images/17.png) 库存预测通常会考虑: * 当前在手数量; * 已预留数量; * 已确认销售需求; * 采购在途; * 生产在制; * 补货规则; * 预计交付日期。 预测库存不是简单的“现在仓库里有多少”。它更像一个计划视角,帮助销售判断订单是否能按时交付。 交付策略 ---- 销售订单可以设置交付策略。 交付策略可以在订单的其他信息或发货相关区域中设置。不同版本界面位置可能略有差异,但业务含义一致。 ![销售订单交付策略](https://xp.odoohub.com.cn/sale/images/3.jpg) | 策略 | 含义 | 适用场景 | | --- | --- | --- | | 尽快 | 有货的产品先发 | 客户接受分批发货 | | 全部就绪后发货 | 等所有产品齐备再发 | 客户要求一次收货 | 交付策略会影响发货安排,也会影响客户体验。若客户不接受分批发货,就不要随便选择尽快交付。 承诺交货日期 ------ 销售订单可以记录承诺交货日期。这个日期代表企业对客户的交付承诺。 如果承诺日期早于系统预计可交付日期,Odoo会给出风险提示,提醒销售不要轻易向客户承诺无法完成的交付时间。 ![交付日期风险提示](https://xp.odoohub.com.cn/sale/images/6.jpg) 承诺交货日期会和产品销售提前期、库存可用性、采购/生产计划一起影响交付安排。 实施建议: * 不要让销售随意承诺无法实现的日期; * 产品提前期要维护真实; * 库存不足时要结合采购和生产计划; * 对外贸或项目订单,交付日期最好和合同条款一致。 已交付数量和开票 -------- 销售订单行中的已交付数量非常重要。 订单行中可以看到订购数量、已交付数量、已开票数量。对按交付数量开票的产品来说,已交付数量会直接影响可开票数量。 ![销售订单已交付数量](https://xp.odoohub.com.cn/sale/images/35.png) 它会影响: * 客户是否已经收到货; * 按交付数量开票的产品是否可以开票; * 退货后实际交付数量; * 销售履约统计。 如果产品开票策略是按已交付数量,仓库不完成发货,财务就可能无法开票。这就是销售、仓库、财务必须协同的原因。 按订单采购和按订单生产 ----------- 有些产品不是现货销售,而是客户下单后采购或生产。 常见路线: | 路线 | 说明 | | --- | --- | | 按订单采购 | 销售确认后触发采购需求 | | 按订单生产 | 销售确认后触发生产订单 | | 直运 | 供应商直接发给客户 | | 补货规则 | 库存低于规则后生成采购或生产建议 | 这些内容属于库存、采购、生产模块的交叉范围。销售人员至少要知道:订单确认后不一定马上有货,系统可能需要等待采购或生产。 退货对交付数量的影响 ---------- 客户退货后,库存退货会影响已交付数量和后续开票判断。 例如客户订购10件,已发10件,退回2件。系统中的交付数量和可开票数量可能需要根据退货结果重新计算。 售后章节会继续讲退货、退款和贷项通知单。这里先记住:退货不是删除销售订单,而是通过库存反向作业处理。 实施建议 ---- 销售与库存交付建议这样落地: | 阶段 | 建议 | | --- | --- | | 第一阶段 | 先用一个现货产品跑通订单确认、发货、开票 | | 第二阶段 | 测试库存不足、分批发货和全部就绪发货 | | 第三阶段 | 维护产品提前期和承诺交货日期 | | 第四阶段 | 再引入按订单采购、按订单生产、直运等路线 | | 第五阶段 | 结合退货、批次、序列号和条码完善仓库流程 | 本章讲清楚了销售订单与库存交付之间的关系。下一章会进入退货、退款与售后处理,继续看订单发生问题后如何用Odoo的反向流程保留业务记录。 results matching "" =================== No results matching "" ====================== --- # 第十二章 第二单位 · odoo实施参考手册-青岛欧姆网络科技 [第十二章 第二单位](https://xp.odoohub.com.cn/) ======================================== 第十二章 第二单位 ========= 什么是第二单位 ------- 在ERP系统里,“数量”和“单位”看起来是非常基础的概念。销售10件、采购5箱、入库3卷、出库20张,似乎一个数量加一个单位就可以把业务说明白。 但在很多行业的真实业务中,一个数量维度往往不够。 比如: * 梯子按“件”销售,但业务还要记录每件多少米 * 布匹按“卷”采购,但采购和仓库都关心每卷多少米 * 板材按“张”出入库,但报价或统计可能要看平方米 * 纸箱按“箱”发货,但客户和仓库还要知道每箱内装多少个 * 加工件按“件”管理,但生产或报价时还会关注展开面积、加工长度或重量 这些场景里,“件、卷、箱、张”是系统主数量单位,用来支撑销售、采购、库存、开票等标准流程;而“米、平方米、个、展开量、加工量”等,则是业务上同样重要的辅助数量维度。 这个辅助数量维度,我们通常就称为第二单位,也可以理解为“辅助单位”或“业务规格单位”。 ### 第二单位不是替代主单位 第二单位并不是要替代Odoo原生的计量单位体系。 Odoo标准单位主要解决的是系统核心数量口径,例如: * 销售订单数量 * 采购订单数量 * 库存移动数量 * 发票开票数量 * 成本和库存估值相关数量 这些数量通常应该保持稳定、统一、可核算。 第二单位解决的是另一个问题:当业务需要在主数量之外,同时记录另一个辅助维度时,系统应该如何表达。 例如销售订单上写:销售数量:4 件,第二数量:每件 2.5 米,第二数量合计:10 米 这里Odoo的主数量仍然是4件,销售、库存、开票可以继续按“件”运行;而10米则用于表达客户关心的长度、内部交接需要的规格,或者后续报表统计需要的辅助维度。 ### 为什么不能全部用Odoo原生单位换算解决? Odoo原生单位换算非常适合处理同一计量类别下的标准换算,比如: * 1 箱 = 24 个 * 1 米 = 100 厘米 * 1 吨 = 1000 千克 但第二单位经常不是这种简单换算关系。 它可能和主数量不是同一类单位,也可能每个产品都有自己的业务规则。比如同样是“一件”,不同产品对应的长度、面积、展开量可能完全不同;同样是“一卷”,每卷米数也可能需要在采购或入库时填写。这时候如果强行用原生单位换算,容易带来几个问题: * 主库存数量口径被扰乱 * 销售、采购、开票数量变得不清晰 * 不同产品的业务规格难以统一表达 * 报价、仓库和客户沟通仍然需要大量备注补充 所以更稳妥的做法,是让主单位继续服务Odoo标准流程,让第二单位作为辅助业务维度独立记录和流转。 第二单位适合解决什么问题 ------------ 第二单位适合那些“主数量能表达业务流转,但不能完整表达业务规格”的场景。 典型价值包括: * 让销售订单可以同时表达购买数量和规格数量 * 让采购订单记录供应商交付的辅助规格 * 让库存调拨同时保留计划数量和实际辅助数量 * 让报表可以统计长度、面积、内装数等业务维度 * 减少备注、Excel 和人工沟通带来的信息丢失 它的核心价值不是“多一个字段”,而是让业务数据从非结构化备注,变成可以校验、计算、流转和统计的结构化信息。 第二单位的实现方式 --------- 我们的第二单位解决方案,是基于Odoo标准单位体系之上的业务增强方案。 它不替代Odoo原生计量单位,也不改变Odoo标准销售、采购、库存、开票数量链路,而是在主数量之外,增加一个可配置、可校验、可计算、可流转的辅助数量维度。 可以简单理解为: 主数量:系统标准业务数量 例如 10 件、5 卷、3 箱 第二数量:每个主数量对应的辅助业务数量 例如每件 2.5 米、每卷 80 米、每箱 24 个 第二数量合计:主数量 × 标准化后的第二数量 例如 10 件 × 每件 2.5 米 = 25 米 这套方案适合那些主数量可以支撑Odoo标准流程,但业务现场还需要额外记录规格、长度、面积、内装数或加工量的企业。 ### 核心功能 #### 1\. 产品级第二单位配置 方案支持在产品上启用第二数量,并配置对应规则,包括: * 是否启用第二数量 * 第二单位,例如米、平方米、个、包等 * 每个主数量单位允许的最小第二数量 * 每个主数量单位允许的最大第二数量 * 第二数量步长 * 第二数量舍入方式 通过产品级配置,企业可以把原本依赖人工经验的规格要求,沉淀为系统规则。 例如某产品每件长度必须按 0.5 米递增,系统可以根据配置自动进行标准化处理,避免业务人员随意输入导致后续统计口径混乱。 ![alt text](https://xp.odoohub.com.cn/sale/images/SEC_UNIT_1.png) #### 2\. 销售订单中的第二数量 在销售订单行中,用户可以录入第二数量。例如: ![alt text](https://xp.odoohub.com.cn/sale/images/SEC_UNIT_2.png) 销售数量 = 10 卷 每件第二数量 = 10 米 第二数量合计 = 100 米 销售数量仍然是Odoo标准的10卷,第二数量用于辅助说明规格、报价参考、客户确认或报表分析。 这样既保留了Odoo标准销售流程,又让销售单据能够更准确地表达客户真正关心的业务信息。 #### 3\. 采购订单中的第二数量 在采购订单行中,也可以使用第二数量。例如: 采购数量 = 6 卷 每卷第二数量 = 80 米 第二数量合计 = 480 米 ![alt text](https://xp.odoohub.com.cn/sale/images/SEC_UNIT_3.png) 采购人员可以按供应商交付方式录入主数量,同时记录每个主数量对应的辅助数量。这对于布匹、卷材、板材、包装材料等行业非常实用。 如果业务需要,采购中的第二数量还可以继续带入后续收货流程,减少采购和仓库之间的信息断点。 #### 4\. 库存调拨中的第二数量 库存模块支持在计划调拨和实际作业层面记录第二数量。 例如: 计划出库 = 10 箱 每箱第二数量 = 24 个 计划第二数量合计 = 240 个 实际完成 = 8 箱 每箱第二数量 = 24 个 实际第二数量合计 = 192 个 ![alt text](https://xp.odoohub.com.cn/sale/images/SEC_UNIT_4.png) 这样仓库不仅可以按主数量完成出入库,也可以保留业务现场关心的辅助规格信息。 对于需要核对长度、面积、内装数、包装规格的企业来说,这能显著减少线下记录和人工沟通。 #### 5\. 在手库存和报表中的第二数量 在库存模块中,系统可以在在手库存和报表中显示第二数量。例如: 在手库存 = 100 卷 每卷第二数量 = 80 米 在手第二数量合计 = 8000 米 ![alt text](https://xp.odoohub.com.cn/sale/images/SEC_UNIT_5.png) 用户可以在库存报表、销售报表、采购报表中查看第二数量,支持按业务规格进行统计和分析。 #### 6\. 库存盘点支持第二单位 在库存盘点过程中,系统也支持记录和校验第二数量。例如: 盘点数量 = 50 卷 每卷第二数量 = 80 米 盘点第二数量合计 = 4000 米 ![alt text](https://xp.odoohub.com.cn/sale/images/SEC_UNIT_6.png) 这样,盘点人员可以同时核对主数量和辅助规格,确保库存数据的完整性和准确性。 业务价值 ---- 第二单位方案解决的不是一个字段问题,而是业务数据结构化的问题。它带来的价值包括: * 让产品规格不再只依赖备注说明 * 让销售、采购、库存单据能表达更多业务信息 * 减少人工换算和重复沟通 * 支持上下限、步长、舍入等规则校验 * 为后续报价、报表、行业扩展留下统一基础 * 在不影响Odoo标准流程的前提下提升业务适配度 对于很多企业来说,真正难的不是“有没有系统”,而是系统能不能表达业务现场里的那些细节。第二单位方案,就是让Odoo更贴近这些细节的一步。 总结 -- 青岛欧姆网络科技的第二单位解决方案,是面向多行业场景沉淀出的Odoo通用增强能力。 它让企业在保留Odoo标准主数量体系的同时,能够灵活记录长度、面积、内装数、包装规格、加工量等辅助业务数量。既保持标准流程稳定,又让业务单据表达更完整。 后续如果企业需要按第二数量计价、按第二数量开票、接入生产流程、扩展报表或对接外部系统,也可以在通用版基础上继续演进。 到这里,第三部分销售管理已经从销售总览、产品、报价、订单、开票、价格、税率、库存交付、退货售后,一直讲到租赁、消费税和第二单位这些扩展场景。下一部分会进入采购管理,继续看企业如何从销售需求、库存补货和供应商协同中完成采购流程。 青岛欧姆网络科技,您身边的Odoo专家。 results matching "" =================== No results matching "" ====================== --- # 第九章 退货、退款与售后处理 · odoo实施参考手册-青岛欧姆网络科技 [第九章 退货、退款与售后处理](https://xp.odoohub.com.cn/) ============================================= 第九章 退货、退款与售后处理 ============== 销售流程不只包含报价、发货和收款,也要处理客户退货、换货、退款、折让和售后争议。Odoo原生把这些动作分散在销售、库存和会计模块里:销售订单记录原始交易,库存退货处理实物流向,会计贷项通知单处理金额冲减。 如果企业没有提前设计退货退款流程,员工很容易直接删除订单、手工改数量、线下退款,最后导致销售、库存和财务三套数据对不上。本章我们就来看一下Odoo中退货退款应该如何理解,以及自主实施时应该先建立哪些规则。 先区分退货和退款 -------- 退货和退款不是同一件事。 | 动作 | 处理对象 | 所属模块 | | --- | --- | --- | | 退货 | 商品实物从客户回到仓库 | 库存 | | 退款 | 已开票金额冲减或退还客户 | 会计 | | 换货 | 退回旧货,再发新货 | 库存+销售 | | 折让 | 不退货,只减少客户应收 | 会计 | 实际业务中,它们可能同时发生,也可能只发生其中一部分。 例如客户退回一件商品并退款,就是退货+退款。客户接受商品但要求降价,就是折让,不一定发生退货。 常见售后场景 ------ | 场景 | 推荐处理思路 | | --- | --- | | 未发货订单取消 | 取消销售订单和相关发货单 | | 已发货未开票退货 | 通过库存退货处理实物,再调整订单后续开票 | | 已开票已发货退货 | 库存退货+会计贷项通知单 | | 商品不退只退款 | 创建贷项通知单或折让 | | 换货 | 原商品退货,新商品重新发货 | | 客户拒收 | 根据物流状态处理退回入库和订单取消 | 不要把所有售后问题都用“删除订单”解决。已经确认、发货、开票的订单都代表业务事实,应该通过反向业务单据处理。 售后流程建议先建立一套简单分类: | 分类 | 示例 | 主要关注点 | | --- | --- | --- | | 客户原因退货 | 买错、重复下单、不想要 | 是否允许退货、运费谁承担 | | 商品质量问题 | 破损、故障、规格不符 | 是否质检、是否换货或退款 | | 发错货 | 发错产品、数量错误 | 仓库责任、补发或换回 | | 价格争议 | 折扣漏给、价格谈错 | 是否贷项通知单或补差 | | 物流异常 | 拒收、丢件、超期 | 物流责任和库存状态 | 分类不是为了增加流程负担,而是为了后续能分析:退货到底是产品问题、仓库问题、物流问题,还是销售承诺问题。 销售订单取消 ------ 如果订单尚未发货、尚未开票,取消相对简单。取消销售订单时,系统会尝试取消相关交付。 销售订单上可以看到取消按钮。取消前要先看智能按钮中是否已经有交付、发票或其他下游单据。 ![取消销售订单](https://xp.odoohub.com.cn/sale/images/28.jpg) 但如果已经发货或已经开票,取消就不再只是销售动作: * 已发货,需要考虑库存退货; * 已开票,需要考虑贷项通知单; * 已收款,需要考虑退款或留作客户余额; * 已触发采购或生产,需要处理下游单据。 所以销售人员取消订单前,应先看智能按钮:有没有交付、发票、采购、生产或项目记录。 库存退货 ---- 库存退货通常从原交付单上发起。这样系统能知道退的是哪一次交付、哪些产品、多少数量。 销售订单行中的已交付数量会受退货影响。退货后,系统需要通过库存反向流程更新真实履约情况,而不是直接删除原订单。 ![已交付数量](https://xp.odoohub.com.cn/sale/images/35.png) 退货会影响: * 客户位置库存减少; * 仓库库存增加; * 产品可用数量变化; * 批次/序列号追踪; * 库存估值和成本。 如果企业启用了批次或序列号,退货时必须确认退回的批次或序列号是否正确。否则售后、质检和库存账会很难追溯。 退回来的商品不一定都应该直接回到可售库存。企业可以根据业务设计不同处理方式: | 退回状态 | 建议 | | --- | --- | | 完好可售 | 入回正常库存 | | 需要检测 | 入待检库位 | | 可维修 | 转维修或售后库位 | | 不可销售 | 转报废或残次库位 | 第一期如果流程简单,可以先退回主仓库;如果售后量大,建议后续在库存模块设计待检和报废流程。 退款和贷项通知单 -------- 在Odoo会计中,退款通常通过贷项通知单处理。 如果订单已经开票,退款就应该进入财务流程。销售人员可以从订单或发票追踪相关单据,但不建议绕过会计直接改金额。 ![销售订单发票入口](https://xp.odoohub.com.cn/sale/images/30.png) 贷项通知单可以用于: * 冲减已开客户发票; * 处理退货退款; * 处理折让; * 修正错误开票; * 抵减客户未来应收。 如果订单还没有开票,通常不需要先做贷项通知单。如果已经开票,就不能只改销售订单数量,应该在会计中用正式的冲减凭证处理。 退款金额也要分情况: * 全额退款; * 部分退款; * 只退商品金额,不退运费; * 退差价; * 折让但不退货; * 退款到原支付方式; * 留作客户余额下次抵扣。 这些规则最好由财务和客服一起确认。销售只负责发起售后,不应单独决定财务冲减方式。 换货流程 ---- 换货可以理解成两个动作: 退回原商品 -> 发出新商品 实施时要看业务规则: * 新商品是否同价; * 是否需要补差价; * 是否需要重新开票; * 原商品是否进入可售库存、维修库存或报废; * 是否需要质检。 简单换货可以用退货+重新发货处理。复杂售后则可能需要售后工单、维修、质检或帮助台模块参与。 售后记录放在哪里 -------- 售后沟通建议不要只放微信群。至少要在相关单据消息区留下关键记录。 例如: * 客户什么时候提出退货; * 退货原因是什么; * 谁批准退款; * 退货物流单号是什么; * 仓库是否收到货; * 财务是否开具贷项通知单; * 是否重新发货。 如果企业售后量较大,可以进一步使用Helpdesk、维修、质量等模块,但销售订单和发票仍然是售后追溯的重要入口。 一个实用做法是:销售订单记录原始交易,发货单记录实物退回,发票或贷项通知单记录金额冲减,消息区记录沟通和审批。这样以后老板、财务、客服、仓库看到的是同一套业务事实。 原生方案和定制边界 --------- Odoo原生可以支撑大多数基础退货退款流程:销售订单、库存退货、贷项通知单、重新发货、消息记录。 以下情况可能需要流程设计或定制增强: * 售后审批层级复杂; * 退货原因需要严格统计; * 需要客户门户提交退换货申请; * 需要对接电商平台售后; * 需要自动生成维修单或质检单; * 需要复杂退款规则、手续费或部分退款; * 需要售后绩效和质量分析报表。 实施建议仍然是先把原生反向流程跑通,再决定是否引入帮助台、维修、质检或电商售后接口。 实施建议 ---- 退货退款流程上线前,企业至少要明确: | 问题 | 建议 | | --- | --- | | 谁能批准退货 | 销售主管、客服主管或财务 | | 退货入哪个库位 | 正常库存、待检库存、报废库存 | | 什么情况下退款 | 已收款、已开票、未发货的规则不同 | | 是否统计退货原因 | 建议至少记录原因,方便后续改进 | | 售后沟通在哪里留痕 | 优先回到销售订单、发票或售后工单 | 本章我们把退货、退款、换货、贷项通知单和售后记录的关系讲清楚了。下一章会进入租赁业务,看看当产品不是一次性销售,而是按时间出租和归还时,Odoo如何围绕销售订单扩展出租流程。 results matching "" =================== No results matching "" ====================== --- # 第七章 税率与财政结构 · odoo实施参考手册-青岛欧姆网络科技 [第七章 税率与财政结构](https://xp.odoohub.com.cn/) ========================================== 第七章 税率与财政结构 =========== 销售订单上的税率会影响报价金额、客户发票、财务报表和合规申报。Odoo原生通过税率、财政结构和产品/客户默认税率来处理销售税务。对客户来说,税率看起来只是订单行上的一个字段;对实施顾问来说,它背后连接的是国家地区、会计科目、发票和客户类型。 本章我们先讲销售中最常用的税率和财政结构。消费税这类特定行业税种会在后面的行业扩展章节单独说明。 销售税从哪里来 ------- 销售订单行上的税率通常来自产品资料。 常见来源: | 来源 | 作用 | | --- | --- | | 产品销售税 | 产品默认销售税率 | | 客户财政结构 | 根据客户地区或税务身份映射税率 | | 公司本地化包 | 创建数据库时根据国家地区预置税率 | | 手工调整 | 特殊业务下人工修改订单行税率 | 实施时不要让销售员随意改税率。税率应由财务确认,销售只是使用。 税率配置 ---- 税率通常在 **会计 -> 配置 -> 税** 中维护。 下图是一张税率配置示例。税率不只是一个百分比,还会涉及税的计算方式、适用范围、会计影响和显示方式。 ![税率配置](https://xp.odoohub.com.cn/sale/images/82.png) 税率会影响: * 销售订单税额; * 客户发票税额; * 会计分录; * 税务报表; * 含税/不含税显示。 如果公司安装了本地化会计包,系统会自动创建一批常用税率。不要轻易删除原生税率,必要时可以归档或新增。 产品税率 ---- 产品上通常有销售税和采购税。 | 字段 | 用途 | | --- | --- | | 销售税 | 销售订单和客户发票使用 | | 采购税 | 采购订单和供应商账单使用 | 如果产品税率设置错误,销售报价和发票都会错。产品上线前,财务应参与确认关键产品税率。 销售税和采购税不要混用。销售税用于客户报价和客户发票,采购税用于供应商账单。很多客户导入产品时只关注销售价格,忽略税率,后面开票时才发现所有税额都需要返工。 产品税率可以先按产品类别统一整理,例如: * 标准税率商品; * 免税商品; * 出口商品; * 服务类产品; * 特殊税率产品。 产品数量多时,不建议逐个手工检查。可以先导出产品,批量核对税率,再导入修正。 财政结构 ---- 财政结构用于根据客户、国家地区或税务身份自动替换税率和科目。 下图是财政结构示例。财政结构可以根据客户或业务场景,把订单上的默认税率映射成另一套税率。 ![财政结构](https://xp.odoohub.com.cn/sale/images/81.png) 例如: * 国内客户使用本地标准税率; * 出口客户使用0税率; * 欧盟客户根据VAT规则处理; * 免税客户映射到免税税率; * 不同国家客户使用不同会计科目。 财政结构可以在客户资料上设置,也可以根据规则自动匹配。 当销售订单选择了财政结构后,订单行税率会根据映射规则替换。 销售订单上的税率显示在订单行中。销售人员通常不需要理解每个税的会计分录,但必须知道税率从产品和财政结构中带出,不能随意手工改。 ![销售订单税率](https://xp.odoohub.com.cn/sale/images/17.png) 财政结构适合解决什么 ---------- 财政结构适合解决“同一个产品卖给不同客户,税务处理不同”的问题。 | 场景 | 示例 | | --- | --- | | 出口销售 | 本地13%税率映射为出口0税率 | | 跨地区销售 | 根据客户国家切换税率 | | 免税客户 | 标准税率映射为免税 | | 特殊行业 | 某些产品或客户使用特殊税率 | | 科目映射 | 收入或税额进入不同会计科目 | 不要为每个税务场景复制一套产品。优先用财政结构映射税率。 举例来说,同一个产品在国内销售时可能使用标准税率,出口销售时可能使用0税率。产品本身不应该复制成“国内版产品”和“出口版产品”,而是通过客户财政结构或订单财政结构把税率映射过去。 财政结构还可以和客户资料结合使用。对经常出口的客户,可以在客户资料上设置默认财政结构;对偶发业务,可以在订单上手动选择财政结构。 含税价和不含税价 -------- 销售报价中要明确价格是含税还是不含税。 | 场景 | 常见做法 | | --- | --- | | B2B销售 | 不含税单价+税额 | | 零售 | 含税价 | | 跨境 | 可能显示不含税或0税率 | | 门店/POS | 常见含税价 | 含税价会影响客户看到的价格,也会影响价格表设计。销售和财务必须统一口径。 一个常见误区是:销售说“这个产品100元”,财务理解为不含税100元,客户理解为含税100元。系统不会替团队做业务解释,实施前必须统一对外报价口径。 如果使用多币种和价格表,还要进一步确认:价格表里的金额是含税还是不含税,销售订单PDF是否清楚显示税额,客户发票是否与报价一致。 税率和发票 ----- 销售订单上的税率会带入客户发票。发票确认后会生成会计影响。 如果发票已经确认,税率错误就不能只改销售订单。通常需要根据财务规范处理更正、贷项通知单或重新开票。 所以在销售订单确认和开票前,应尽量确保: * 客户税务资料正确; * 产品税率正确; * 财政结构正确; * 价格含税/不含税口径正确。 如果税率错误已经进入正式发票,通常不能简单删除或修改。财务需要根据当地合规要求决定是否红冲、重开、作废或开具贷项通知单。因此,销售订单阶段的税率检查非常重要。 实施建议 ---- 销售税务实施建议: | 阶段 | 建议 | | --- | --- | | 第一阶段 | 使用本地化包预置税率,不随意删除 | | 第二阶段 | 让财务确认产品销售税和采购税 | | 第三阶段 | 为出口、免税、跨地区客户设计财政结构 | | 第四阶段 | 测试报价单、发票、税额和报表是否一致 | | 第五阶段 | 特殊税种如消费税、环保税、酒税等单独评估 | 本章讲清楚了销售税率、产品税、财政结构和含税价的关系。下一章会继续看销售与库存交付,解释销售订单确认后如何影响库存、发货和可开票数量。 results matching "" =================== No results matching "" ====================== --- # 第一章 采购管理 · odoo实施参考手册-青岛欧姆网络科技 [第一章 采购管理](https://xp.odoohub.com.cn/) ======================================= 第一章 采购管理 ======== * [询价单和采购订单](https://xp.odoohub.com.cn/purchase/PO.html#%E8%AF%A2%E4%BB%B7%E5%8D%95%E5%92%8C%E9%87%87%E8%B4%AD%E8%AE%A2%E5%8D%95) * [期望到货日期](https://xp.odoohub.com.cn/purchase/PO.html#%E6%9C%9F%E6%9C%9B%E5%88%B0%E8%B4%A7%E6%97%A5%E6%9C%9F) * [交货提前期](https://xp.odoohub.com.cn/purchase/PO.html#%E4%BA%A4%E8%B4%A7%E6%8F%90%E5%89%8D%E6%9C%9F) * [采购审批](https://xp.odoohub.com.cn/purchase/PO.html) * [高级开票](https://xp.odoohub.com.cn/purchase/PO.html#%E9%AB%98%E7%BA%A7%E5%BC%80%E7%A5%A8%E5%8A%9F%E8%83%BD) * [到货及时率](https://xp.odoohub.com.cn/purchase/PO.html#%E5%88%B0%E8%B4%A7%E5%8F%8A%E6%97%B6%E7%8E%87) 采购分为**询价单**和**采购订单**,本质上是一个模型,询价单(RFQ)是草稿状态的采购订单(PO)。本章将介绍采购单的基础知识和概念。 询价单和采购订单 -------- 询价单是草稿状态的采购订单,一个典型的询价单界面如下: ![4](https://xp.odoohub.com.cn/purchase/images/4.png) 我们在创建的一个询价单的时候需要知道供应商信息、采购日期和具体采购明细等关键信息。当我们信息填写完成后,点击**确认订单**按钮就可以把草稿状态的询价单(RFQ)转换成采购订单(PO)。 采购订单确认后,根据订单明细里的产品的属性是否是可库存产品会决定是否自动生成入库单。如果采购明细中包含**可库存产品**,那么系统将会自动生成入库单。 > 入库可以根据需求分为一步入库、两步入库和三步入库,具体参考仓库一章。 如果产品是可库存产品,那么我们在确认订单后,系统会自动生成入库单。一个典型的入库单如下图: ![5](https://xp.odoohub.com.cn/purchase/images/5.png) 仓库管理人员验证入库即可,然后财务人员基于采购的**开票策略**进行开票,这样一个采购的基本流程就结束了。 ### 期望到货日期 企业在采购原材料的过程中,有时候需要制定采购计划,以便能够满足销售或生产等需求部门的需要。我们在创建询价单的时候可以选择我们期望的**到货日期**。 ![6](https://xp.odoohub.com.cn/purchase/images/6.png) 默认情况下,询价单的期望到货日期跟明细行中的期望日期是一致的。如果明细行中多个产品的期望日期不同,那么询价单将以**明细行中最早到货**的日期作为整单的期望日期。如果手动修改询价单的期望日期,那么已经存在的明细行日期将自动同步询价单中的日期。 ### 交货提前期 同时,我们可以在供应商资料中预先设置**前置时间**(单位天)。 ![7](https://xp.odoohub.com.cn/purchase/images/7.png) 例如,我们在13寸MAC Pro电脑的采购选项卡中将供应商海森堡信息技术的前置时间设置为2天,那么当我们在询价单中选择海森堡信息技术作为供应商,期望的到货日期时2024/07/20,当我们确认订单时,系统将会把期望的到货日期修改为2024/07/22,同时入库单的预计日期也是2024/07/22。 ![8](https://xp.odoohub.com.cn/purchase/images/8.png) ### 采购审批 Odoo原生支持简单的采购审批功能,首先要在采购-设置中开启采购金额审批功能: ![11](https://xp.odoohub.com.cn/purchase/images/po_approval.png) 勾选了开启采购金额之后,我们在最小审批金额设置里填写我们希望开启审批的金额下限。 ![12](https://xp.odoohub.com.cn/purchase/images/12.png) 假设我们这里设置的审批金额是5000,那么当采购金额大于5000的时候,系统将提示必须经过经理审批才可以进行确认订单操作。 ![13](https://xp.odoohub.com.cn/purchase/images/13.png) 然后采购经理审批之后才会变成确认的采购订单: ![14](https://xp.odoohub.com.cn/purchase/images/14.png) odoo原生并不支持复杂的OA流程,如果企业内部使用的IM是企业微信,那么可以使用我们的[企业微信](https://xp.odoohub.com.cn/chapter10/WeWorkPlus.html#%E5%AE%A1%E6%89%B9) 插件进行复杂的审批流程设置。 重订货规则 ----- 重订货规则是odoo根据系统中的需求来创建采购订单的**订货规则**。下面是一个订货规则的例子: ![9](https://xp.odoohub.com.cn/purchase/images/9.png) 高级开票功能 ------ 原生功能中,如果我们想要开票,直接点击**创建账单**按钮即可完成开票动作。 ![开票](https://xp.odoohub.com.cn/purchase/images/bill.png) 开票的结果: ![bill](https://xp.odoohub.com.cn/purchase/images/bill2.png) 虽然能够完成基本功能,但是遗憾的是原生的模块并未提供像销售模块那种可以开具预付款功能的开票向导功能。因此,我们在解决方案中添加到了对采购模块的支持。下面我们就看一下如何在采购模块像销售模块一样使用开票向导完成开票。 首先,我们需要安装[采购仓库模块](https://xp.odoohub.com.cn/purchase/PO.html) : ![purchase](https://xp.odoohub.com.cn/purchase/images/purchase.png) 安装完成后,我们再次到采购订单中创建账单: ![purchas2](https://xp.odoohub.com.cn/purchase/images/purchase2.png) 可以看到采购订单的账单创建向导也已经出现了跟销售订单一样的向导,我们可以开具 * 全额账单 * 根据百分比的预付款账单 * 根据固定金额的预付款账单 开具的账单示例如下: ![purchase3](https://xp.odoohub.com.cn/purchase/images/purchase3.png) 到货及时率 ----- 在供应商资料中,有一个到货及时率(On-time Ratio)来标识此供应商的供货效率。其计算公式是: 过去的N天中,非服务类型产品, 此供应商的供货及时到货的数量 / 总的订货量 * 100% 如果没有数据,那么此值将被负值为-1。 N的默认值是365天。如果想要修改这个N的值,需要到(开发者模式)设置-系统参数中新增一个参数对(purchase\_stock.on\_time\_delivery\_days): ![15](https://xp.odoohub.com.cn/purchase/images/15.png) results matching "" =================== No results matching "" ====================== --- # 第三章 公司和用户 · odoo实施参考手册-青岛欧姆网络科技 [第三章 公司和用户](https://xp.odoohub.com.cn/) ======================================== 第三章 公司与用户 ========= 创建数据库后,第一件事不是马上录订单,而是先设置公司、语言、用户和权限。这些资料会影响报价单、发票、邮件、报表和员工日常操作。 进入设置页面 ------ 在 Odoo 中,公司和用户通常从 **设置** 开始配置。 ![设置页面](https://xp.odoohub.com.cn/basic/images/basic-cn-settings.png) 常用入口: * **一般设置**:语言、公司、文档布局、计量单位、邮件等; * **用户和公司**:管理用户、公司、多公司权限; * **销售、发票等模块设置**:各应用自己的基础配置。 建议先完成公司和用户,再去配置销售、采购、库存和财务。 公司资料 ---- 公司资料会出现在对外文档中,例如报价单、销售订单、发票、交付单、邮件签名。 在 **设置 -> 一般设置 -> 公司** 中,可以点击 **更新信息** 或 **管理公司** 维护公司资料。 建议至少填写: | 字段 | 用途 | | --- | --- | | 公司名称 | 报表抬头、单据主体 | | 地址 | 报价单、发票、送货文件 | | 电话和邮箱 | 客户联系、邮件模板 | | 税务识别码 | 财务和发票相关资料 | | 网站 | 对外文档和客户资料展示 | | 银行账号 | 发票或付款说明中可能使用 | | 公司 Logo | 报价单、发票、邮件模板 | 不要随便把分公司、门店、仓库都建成公司。Odoo 的“公司”通常代表独立核算主体。门店更适合在 POS 或仓库中配置,仓库应该在库存模块中配置。 文档布局 ---- 文档布局决定报价单、发票等 PDF 文件的外观。可以在设置中找到 **文档布局** 或 **设置文档外观**。 建议先选择一个简洁模板,确认: * Logo 是否清晰; * 公司名称和地址是否正确; * 页脚联系方式是否正确; * 报价单和发票打印后是否适合发给客户; * 中英文显示是否正常。 文档布局不要在上线前频繁修改。已经发给客户的报价单和发票,最好保持前后一致。 语言和时区 ----- 国内客户通常需要中文界面。如果有外贸团队,也可以同时启用英文。 语言设置影响: * 用户界面显示; * 系统菜单翻译; * 邮件模板语言; * 客户门户显示; * 部分 PDF 报表内容。 每个用户可以有自己的语言。公司默认语言不等于所有用户语言。给外贸员工配置英文界面,给国内员工配置中文界面,是可以同时存在的。 用户管理 ---- 用户是可以登录 Odoo 的账号。可以从 **设置 -> 用户和公司 -> 用户** 进入。 ![用户列表](https://xp.odoohub.com.cn/basic/images/basic-cn-users.png) 创建用户时,至少要确认: | 字段 | 说明 | | --- | --- | | 姓名 | 员工显示名称 | | 登录名 | 通常使用邮箱,也可以使用 admin 这类账号 | | 邮箱 | 用于通知、重置密码、邮件发送 | | 公司 | 多公司环境下尤其重要 | | 权限 | 决定用户能访问哪些模块 | | 语言 | 决定用户看到中文还是英文 | 不要让所有员工共用管理员账号。管理员账号只用于配置和排错,日常业务应该使用员工自己的账号。 用户类型 ---- Odoo 中常见用户类型有三类: | 类型 | 说明 | 典型用途 | | --- | --- | --- | | 内部用户 | 公司员工,可以访问后台应用 | 销售、采购、仓库、财务 | | 门户用户 | 外部客户或供应商,只能访问门户 | 查看报价、订单、发票、工单 | | 公共用户 | 未登录访客 | 网站访问、商城浏览 | 自主实施时,重点先配置内部用户。门户用户通常由客户邀请、网站注册或业务单据分享产生,不建议一开始手工大量创建。 权限设置原则 ------ Odoo 的权限不是按“职位名称”自动决定的,而是由应用权限和用户组共同决定。 简单理解: * 销售用户可以创建和处理自己的销售业务; * 销售管理员可以看到更多销售配置和报表; * 库存用户可以收货、发货、盘点; * 财务用户可以处理发票、付款和对账; * 系统管理员可以安装应用和修改系统设置。 权限建议按岗位设计,而不是按个人临时配置。 | 岗位 | 建议权限 | | --- | --- | | 销售 | 销售用户,客户资料维护 | | 销售经理 | 销售管理员,销售报表和配置 | | 采购 | 采购用户,供应商和采购订单 | | 仓库 | 库存用户,收货、发货、盘点 | | 财务 | 发票、付款、银行对账 | | 老板 | 关键报表查看,必要审批 | | 管理员 | 系统设置、模块安装、权限维护 | 权限不要一次给太大。给大了容易误删、误改;给小了员工做不了事。正确做法是先给岗位需要的权限,再用测试流程验证。 多公司 --- Odoo 支持多公司,但多公司会影响会计、库存、销售、采购、权限和报表。 适合启用多公司的场景: * 有多个独立法人; * 需要分别出财务报表; * 不同公司之间有内部交易; * 员工需要切换不同公司处理业务。 不建议启用多公司的场景: * 只是多个门店; * 只是多个仓库; * 只是多个部门; * 只是想把客户分类管理。 如果只是门店或仓库,优先使用 POS、仓库、库位、分析账户或标签,不要急着上多公司。 上线前检查 ----- 公司和用户配置完成后,可以用下面清单检查: | 检查项 | 通过标准 | | --- | --- | | 公司资料 | 名称、地址、电话、邮箱、税号正确 | | 文档布局 | 报价单和发票打印样式可接受 | | 语言 | 中文用户能看到中文界面 | | 用户 | 每个岗位都有自己的账号 | | 权限 | 员工能完成自己的流程,不能越权操作 | | 管理员 | 管理员账号只用于配置和维护 | | 多公司 | 已确认是否真的需要启用 | 这些设置完成后,再进入联系人和产品资料配置会更稳。 公司资料会影响哪些地方 ----------- 前面已经知道公司资料要先填完整。这里再往深一层看:公司资料不仅影响界面显示,也会影响报表抬头、邮件模板、发票主体和多公司业务。 公司设置界面示例: ![公司设置入口](https://xp.odoohub.com.cn/basic/images/33.png) 公司基础资料示例: ![公司资料](https://xp.odoohub.com.cn/basic/images/34.png) ### 报表样式 Odoo 原生提供多种文档布局风格,例如 Light、Boxed、Bold、Striped。客户可以根据品牌风格选择。 ![编辑文档布局](https://xp.odoohub.com.cn/basic/images/35.png) 文档布局预览示例: ![文档布局预览](https://xp.odoohub.com.cn/basic/images/36.png) 如果客户对报表字体、字号、页眉页脚有更细要求,原生能力可能不够,需要通过报表模板或扩展模块处理。 ![报表字体设置示例](https://xp.odoohub.com.cn/basic/images/38.png) ### 会计本地化包 公司正式启用财务前,需要确认财务本地化包。 ![财务本地化](https://xp.odoohub.com.cn/basic/images/37.png) 会计包选择要非常谨慎。一旦已经产生正式会计业务,再修改本地化和科目体系会很麻烦,通常需要顾问或财务共同评估。 权限为什么不是简单角色 ----------- 如果只是小团队使用,按岗位分配应用权限通常就够了。但只要客户提出“只能看自己的客户”“不能看到成本价”“门店之间数据隔离”这类要求,就必须理解 Odoo 的权限结构。Odoo 的权限不是一个简单角色字段,而是由用户类型、应用权限、用户组、访问权限和记录规则共同组成。 在开发者模式下,可以看到用户类型和更细的权限信息。 ![用户类型](https://xp.odoohub.com.cn/basic/images/23.png) 管理员可以重置用户密码。 ![重置密码入口](https://xp.odoohub.com.cn/basic/images/24.png) 重置密码弹窗示例: ![重置密码](https://xp.odoohub.com.cn/basic/images/25.png) 应用权限通常会按模块展示,例如销售、采购、库存、会计等。 ![应用权限](https://xp.odoohub.com.cn/basic/images/26.png) 同一个应用下的权限组通常存在继承关系。高权限组往往包含低权限组的能力。 ![权限继承](https://xp.odoohub.com.cn/basic/images/27.png) 如果某些用户组不存在继承关系,界面可能会以多个独立勾选项的方式展示。 ![非继承组](https://xp.odoohub.com.cn/basic/images/28.png) 用户组本身由菜单、视图、访问权限、记录规则等组成。 ![用户组组成](https://xp.odoohub.com.cn/basic/images/29.png) 专业实施时要记住四层权限: | 层级 | 作用 | | --- | --- | | 模型访问权限 | 控制能否创建、读取、写入、删除某类记录 | | 记录规则 | 控制能看到哪些记录,例如只能看自己的客户 | | 菜单和视图权限 | 控制菜单入口和视图是否可见 | | 字段权限 | 控制具体字段是否可见或可编辑,通常需要开发 | 如果客户要求“销售只能看自己的客户”“门店只能看自己的订单”“员工不能看到成本价”,就不是简单勾选用户组能完全解决的事情,需要做权限规则或定制评估。 个性化 Odoo 界面 ----------- 公司、用户和权限稳定后,部分客户会希望继续调整界面细节,例如隐藏 Odoo 品牌、修改浏览器标题、关闭快速创建、隐藏帮助菜单等。这类需求属于界面个性化,不是核心业务流程。 ![个性化设置](https://xp.odoohub.com.cn/basic/images/39.png) 建议第一期先保证业务流程正确,再处理品牌和界面细节。界面个性化可以作为服务商的增值方案,但不应该阻塞上线。 results matching "" =================== No results matching "" ====================== --- # 第九章 报表 · odoo实施参考手册-青岛欧姆网络科技 [第九章 报表](https://xp.odoohub.com.cn/) ===================================== 第九章 报表 ====== Odoo原生提供了两类常用报表能力:一类是打印给客户或内部归档的PDF单据,例如报价单、发票、送货单;另一类是系统里的分析报表,例如销售分析、采购统计、库存分析、账龄报表、透视表和图表。 很多企业刚上Odoo时,会把“报表”理解成“把旧系统或Excel里的每张表都重新做一遍”。这通常不是最佳路线。Odoo更推荐先使用原生报表、筛选、分组、收藏、导出、透视图和图表,把数据口径跑清楚,再判断少数确实有价值的报表是否需要定制。本章我们就来看一下Odoo原生报表应该怎么用,以及为什么优先使用原生方案通常是更稳、更省钱、也更利于后续升级的选择。 先区分两类报表 ------- 在Odoo实施里,“报表”至少包含两种意思。 | 类型 | 示例 | 主要用途 | | --- | --- | --- | | 打印报表 | 报价单、销售订单、发票、送货单、采购订单、标签 | 对外发送、内部归档、随货打印 | | 分析报表 | 销售分析、库存分析、采购分析、应收账龄、利润分析 | 管理决策、日常检查、经营复盘 | 两类报表的处理方式不同。 打印报表更关注版式、Logo、页眉页脚、条款、字段显示和PDF效果。分析报表更关注数据口径、筛选条件、分组维度、时间范围和权限。 如果客户说“我要做一张报表”,实施顾问不要马上进入开发报价。要先问清楚:这是打印给客户看的单据,还是内部经营分析?是每天固定看,还是偶尔查一次?是原生列表能筛出来,还是必须跨模块计算? Odoo原生报表能做什么 ------------ Odoo原生报表能力比很多客户想象得更完整。常见能力包括: | 能力 | 用途 | | --- | --- | | 各模块Reporting菜单 | 查看模块内置统计,例如销售、采购、库存、财务分析 | | 搜索 | 按客户、产品、状态、日期等快速查找记录 | | 筛选 | 只看满足条件的数据,例如本月订单、未付款发票 | | 分组 | 按销售员、客户、产品类别、月份等维度汇总 | | 收藏 | 保存常用筛选条件,下次快速打开 | | 列表视图 | 查看明细数据,可导出Excel或CSV | | 透视视图 | 类似数据透视表,适合多维度汇总 | | 图表视图 | 用柱状图、折线图、饼图快速看趋势 | | PDF打印 | 输出报价单、发票、送货单等标准单据 | | 文档布局 | 管理公司Logo、页眉、页脚、颜色和基础版式 | 自主实施时,建议先把这些原生能力用熟。很多“定制报表需求”,实际上只是没有学会筛选、分组、透视和收藏。 常见打印报表 ------ 不同模块会有自己的打印报表。 | 模块 | 常见报表 | | --- | --- | | 销售 | 报价单、销售订单 | | 采购 | 采购订单、询价单 | | 库存 | 送货单、收货单、拣货单、库存标签 | | 财务 | 客户发票、供应商账单、付款收据、账龄报表 | | POS | 小票、交班报表 | | 生产 | 生产订单、工单、物料清单 | 第一次上线时,不建议一开始就把所有单据都按旧系统重做。更稳的做法是先确认最常用的3到5张单据,例如报价单、发票、送货单、采购订单、收货单。 这些单据先满足“能看懂、字段正确、公司信息正确、客户能接受”,后续再逐步优化版式。 文档布局 ---- 文档布局决定PDF单据的基础外观,例如报价单和发票的Logo、颜色、页眉、页脚。 可以从 **设置 -> 一般设置 -> 公司 -> 文档布局** 设置。 ![文档布局设置](https://xp.odoohub.com.cn/basic/images/basic-cn-report-layout-settings.png) 文档布局通常要确认: * Logo是否清楚; * 公司名称、地址、电话、邮箱是否正确; * 单据颜色是否适合公司品牌; * 页脚信息是否正确; * 中英文显示是否正常; * 报价单、发票、送货单打印后是否可读。 文档布局是全局基础设置,不建议频繁修改。尤其是已经发给客户的报价单、发票,最好保持对外形象稳定。 分析报表在哪里 ------- Odoo官方文档也说明,大多数应用中都可以通过Reporting菜单查看报表,用来分析和可视化业务数据。 常见入口包括: | 模块 | 常见分析内容 | | --- | --- | | 销售 | 销售额、销售员业绩、产品销售、客户销售 | | CRM | 线索数量、商机阶段、赢单率、销售团队表现 | | 采购 | 采购金额、供应商采购、采购交期 | | 库存 | 库存数量、库存价值、出入库、产品移动 | | 财务 | 应收应付、账龄、利润表、资产负债表、现金流 | | POS | 门店销售、收银员、产品销售、付款方式 | | 项目 | 任务状态、工时、负责人、项目进度 | 不同模块的报表名称不完全一样,但使用方式很相似:先进入报表,再通过筛选、分组、图表、透视和导出进行分析。 搜索、筛选、分组 -------- 使用原生报表前,要先熟悉搜索栏。 Odoo搜索栏通常支持三类操作: | 功能 | 用途 | 示例 | | --- | --- | --- | | 搜索 | 输入关键字查找记录 | 搜客户名、产品名、订单号 | | 筛选 | 限定数据范围 | 本月订单、未付款发票、已完成任务 | | 分组 | 按维度汇总显示 | 按销售员、客户、月份、产品类别 | 例如老板问“本月每个销售员的销售额”,不一定要开发报表。可以进入销售分析,筛选本月,按销售员分组,再查看金额汇总。 例如财务问“哪些客户还有未付款发票”,可以进入发票列表,筛选未付款,再按客户分组。 这类分析的关键不是开发,而是知道数据在哪个模型里、用什么条件过滤、按哪个维度分组。 收藏常用查询 ------ 很多客户每天看的报表并不复杂,只是条件固定。 例如: * 本月销售订单; * 我的待跟进商机; * 逾期未付款发票; * 今日待发货订单; * 库存低于安全数量的产品; * 某个销售团队的报价单; * 某个门店的POS销售。 这类场景可以使用收藏保存查询条件。下次打开时,不需要每次重新筛选。 收藏查询的价值很大:它把“顾问教客户怎么点”变成“客户以后自己点一下就能看”。对自主实施客户来说,这是最容易被低估的原生能力。 透视表和图表 ------ 如果列表只是明细,透视表和图表更适合做汇总。 透视表适合回答: * 按月份、销售员、产品类别汇总销售额; * 按供应商和产品统计采购金额; * 按客户和账期查看应收; * 按仓库和产品类别看库存价值; * 按项目和负责人看工时。 图表适合回答: * 销售趋势是上升还是下降; * 哪个产品类别贡献最大; * 哪个销售团队表现更好; * 哪些月份库存变化异常; * 哪些付款方式占比最高。 如果客户习惯Excel数据透视表,可以先把Odoo透视视图理解成“系统内的数据透视表”。很多场景不需要导出到Excel,直接在Odoo里就能看。 导出到Excel -------- Odoo支持从列表导出Excel或CSV。 适合导出的场景: * 临时分析; * 给外部人员查看; * 和旧系统对比; * 财务核对; * 批量检查基础数据; * 上线前做数据清洗。 不建议长期依赖导出做日常管理。如果每天都要导出同一张表,再手工加工成管理报表,通常说明有两种可能: * 原生筛选、分组、收藏、透视表还没有用起来; * 这个报表确实已经变成固定管理需求,需要重新设计成系统内报表或仪表板。 导出是很好的辅助工具,但不应该成为每天管理公司的主流程。 报表口径比样式更重要 ---------- 报表最重要的不是样式,而是口径。 例如“销售额”可能有不同含义: * 报价金额; * 已确认销售订单金额; * 已开票金额; * 已收款金额; * 不含税金额; * 含税金额; * 按订单日期; * 按发票日期; * 按收款日期; * 排除取消订单; * 是否包含运费和折扣。 如果不先定义口径,报表做得再漂亮也会被认为“不准”。 实施时建议把关键指标先说清楚: | 指标 | 需要确认的问题 | | --- | --- | | 销售额 | 看订单、发票还是收款?含税还是不含税? | | 毛利 | 成本从哪里来?标准成本、平均成本还是实际成本? | | 库存价值 | 按哪个成本方法计算?是否启用库存估值? | | 应收账款 | 看发票余额还是客户余额?账龄按什么日期算? | | 采购金额 | 按采购订单还是供应商账单?是否含税? | 老板、销售、财务、仓库对同一个词的理解可能不一样。报表实施的第一步,是统一语言。 原生方案为什么优先 --------- 报表的最佳方案,通常是优先使用Odoo原生能力。 原因很现实: | 原生方案优势 | 说明 | | --- | --- | | 升级风险低 | Odoo原生视图、搜索、报表菜单、QWeb报表更容易跟随版本升级 | | 权限一致 | 原生报表天然遵循Odoo模型权限、记录规则和公司权限 | | 数据实时 | 直接基于业务数据,不需要额外同步 | | 学习成本低 | 用户掌握筛选、分组、收藏后,多模块都能复用 | | 维护成本低 | 不需要额外维护第三方报表引擎或插件 | | 问题更容易排查 | 数据来源、字段、权限都在Odoo体系内 | 市面上有很多报表插件、BI插件、拖拽报表设计器、外部看板工具。它们并不是不能用,但不应该成为第一选择。 常见问题包括: * 需要额外安装插件,增加维护成本; * 插件兼容性依赖特定Odoo版本; * 可能改写原生报表引擎或前端组件; * 升级时需要单独迁移和测试; * 权限、公司、币种、语言、多网站等规则可能和Odoo原生逻辑不一致; * 外部BI需要数据同步,容易出现“系统里一个数,报表里另一个数”; * 插件作者停止维护后,后续升级会被卡住。 所以我们建议:先用原生,原生不够再定制;能用QWeb和原生视图解决,就不要先引入重型报表插件;能用筛选分组解决,就不要马上开发。 什么时候需要定制报表 ---------- 以下情况可以考虑定制: * 客户有固定格式要求; * 政府、海关、平台要求特定格式; * PDF单据必须符合行业版式; * 老板需要跨模块管理驾驶舱; * 原生字段无法满足统计口径; * 需要复杂计算,例如返利、佣金、毛利分摊; * 需要合并多个系统的数据; * 需要按客户、渠道、国家或业务类型输出不同模板。 定制前要先确认: | 问题 | 说明 | | --- | --- | | 谁看 | 老板、财务、销售、仓库还是客户 | | 看什么 | 指标和字段 | | 怎么算 | 统计口径 | | 多久看 | 实时、每日、每月 | | 数据来源 | 销售、库存、财务还是外部系统 | | 输出形式 | PDF、Excel、图表、仪表板 | | 权限边界 | 谁能看,谁不能看 | | 升级影响 | 是否改动原生报表、是否依赖第三方插件 | 没有口径的报表需求,不建议立即开发。先把口径写清楚,再评估原生能力、QWeb定制、服务器动作、视图扩展或外部BI。 打印报表定制的边界 --------- 打印报表通常基于QWeb模板。QWeb是Odoo原生的PDF报表技术路线,适合做报价单、发票、送货单、采购单等文档。 适合轻度调整: * 增加字段; * 调整表头文字; * 修改页脚条款; * 调整Logo和公司信息; * 增加客户参考号、联系人、交付说明。 需要谨慎评估: * 完全重做版式; * 一个客户一套报表; * 多语言、多币种、多公司复杂模板; * 大量条件判断和复杂计算; * PDF合并、加密、预览、盖章、云打印等扩展。 轻度调整可以比较稳。重度改造要考虑后续升级和维护,不要为了把旧系统一模一样搬过来,把原生升级路径堵死。 按客户使用不同报表样式 ----------- 标准Odoo通常按公司配置文档布局。第一期这样做最稳。但在一些项目中,客户会希望同一个公司下,对不同客户打印不同的报表样式、公司标语、页眉页脚或特殊条款。 这类需求通常属于报表增强或定制范围。 在欧姆网络基础解决方案中,可以通过自定义报表配置实现更细的报表样式控制。这不是替代Odoo原生报表,而是在原生报表机制上做增强。 首先,可以在用户设置中开启自定义报表配置权限。 ![开启自定义报表配置](https://xp.odoohub.com.cn/basic/images/report1.png) 开启后,可以在技术设置中创建自定义报表配置。 ![自定义报表配置](https://xp.odoohub.com.cn/basic/images/report2.png) 然后在客户资料中指定该客户使用的报表配置。 ![客户报表配置](https://xp.odoohub.com.cn/basic/images/report3.png) 打印该客户单据时,就可以使用指定样式。 ![自定义报表效果](https://xp.odoohub.com.cn/basic/images/report4.png) 这种方案适合: * 一个公司服务多个品牌客户; * 不同客户要求不同页脚或条款; * 外贸客户需要不同语言和风格; * 集团公司需要统一系统但差异化对外文件; * 代理商、渠道客户要求专用单据格式。 实施建议仍然是:先用原生报表跑通流程,再把确实有价值的客户差异报表做成配置或定制,不要一开始为所有客户都做单独报表。 实施建议 ---- 报表实施可以按下面顺序推进: | 阶段 | 建议 | | --- | --- | | 第一阶段 | 使用原生PDF单据和文档布局,确认报价、发票、送货单等关键单据可用 | | 第二阶段 | 教会用户搜索、筛选、分组、收藏和导出 | | 第三阶段 | 使用各模块Reporting菜单、透视表和图表回答日常经营问题 | | 第四阶段 | 和老板、销售、财务确认关键指标口径 | | 第五阶段 | 只对原生无法满足且价值明确的报表做定制或增强 | 对自主实施客户来说,报表不要一开始追求“大屏”“驾驶舱”“拖拽设计器”。先让每个岗位能从Odoo中看到自己每天需要的数据,再让管理层确认几个核心指标,最后再谈复杂报表。 本章我们把Odoo原生报表、PDF文档、搜索筛选、分组收藏、透视图、图表、导出、报表口径和定制边界串了一遍。到这里,第二部分的基础数据、邮箱、消息和报表已经基本铺好;下一部分会进入销售管理,开始看客户从报价到订单的完整业务流程。 results matching "" =================== No results matching "" ====================== --- # 第二章 销售产品与变体 · odoo实施参考手册-青岛欧姆网络科技 [第二章 销售产品与变体](https://xp.odoohub.com.cn/) ========================================== 第二章 销售产品与变体 =========== * [产品变体的概念](https://xp.odoohub.com.cn/sale/README2.html#%E4%BA%A7%E5%93%81%E5%8F%98%E4%BD%93%E7%9A%84%E6%A6%82%E5%BF%B5) * [变体属性](https://xp.odoohub.com.cn/sale/README2.html#%E5%8F%98%E4%BD%93%E5%B1%9E%E6%80%A7) * [变体属性的类型](https://xp.odoohub.com.cn/sale/README2.html#%E5%8F%98%E4%BD%93%E5%B1%9E%E6%80%A7%E7%9A%84%E7%B1%BB%E5%9E%8B) * [自定义变体属性值](https://xp.odoohub.com.cn/sale/README2.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8F%98%E4%BD%93%E5%B1%9E%E6%80%A7%E5%80%BC) * [变体的创建模式](https://xp.odoohub.com.cn/sale/README2.html#%E5%8F%98%E4%BD%93%E7%9A%84%E5%88%9B%E5%BB%BA%E6%A8%A1%E5%BC%8F) * [产品变体的配置模式](https://xp.odoohub.com.cn/sale/README2.html#%E4%BA%A7%E5%93%81%E5%8F%98%E4%BD%93%E7%9A%84%E9%85%8D%E7%BD%AE%E6%A8%A1%E5%BC%8F) * [通用属性](https://xp.odoohub.com.cn/sale/README2.html#%E9%80%9A%E7%94%A8%E5%B1%9E%E6%80%A7) * [产品类型](https://xp.odoohub.com.cn/sale/README2.html#%E4%BA%A7%E5%93%81%E7%B1%BB%E5%9E%8B) * [产品分类](https://xp.odoohub.com.cn/sale/README2.html#%E4%BA%A7%E5%93%81%E5%88%86%E7%B1%BB) * [内部参考](https://xp.odoohub.com.cn/sale/README2.html#%E5%86%85%E9%83%A8%E5%8F%82%E8%80%83) * [编码](https://xp.odoohub.com.cn/sale/README2.html#%E7%BC%96%E7%A0%81) * [产品图片](https://xp.odoohub.com.cn/sale/README2.html#%E4%BA%A7%E5%93%81%E5%9B%BE%E7%89%87) * [产品价格](https://xp.odoohub.com.cn/sale/README2.html#%E4%BA%A7%E5%93%81%E4%BB%B7%E6%A0%BC) Odoo销售订单上的每一行都离不开产品。产品决定了它是否可以销售、是否需要库存、使用什么价格、税率和开票策略;如果产品有颜色、尺码、容量、规格等差异,还会涉及产品变体。 本章重点从销售角度理解产品:哪些字段会影响报价和销售订单,什么时候需要产品变体,什么时候只需要普通产品,如何避免因为产品资料设计不清导致后续价格、库存和开票混乱。 产品变体的概念 ------- Odoo默认是没有启用变体的,只有在设置-销售-产品中勾选了使用变体,才会显示变体的相关菜单和设置。 ![1](https://xp.odoohub.com.cn/sale/images/67.png) 启用变体之后,可以在菜单中看到两个菜单,一个叫**产品模版**,一个叫**产品变体**。从技术角度讲,对应于两个不同的技术模型。产品模板对应的是product.template,产品变体对应的是product.product。 两者在界面上基本相同,修改产品模板和变体的共同拥有的属性,修改一方,另一方也会同时修改。只有一些特殊的属性,仅变体拥有的属性,不会在产品模板上反应出来。 ### 变体属性 **变体属性**用来描述一个产品可配置的变体属性信息,例如iPhone可能有颜色、内存大小、版本等属性,对应的属性值可能是白色、128G、iPhone15等。 ![68](https://xp.odoohub.com.cn/sale/images/68.png) #### 变体属性的类型 原生支持的变体属性类型有以下几种: * Radio: 单选框 ![69](https://xp.odoohub.com.cn/sale/images/69.png) * Pills:药丸式 ![70](https://xp.odoohub.com.cn/sale/images/70.png) * Select: 下拉框 ![71](https://xp.odoohub.com.cn/sale/images/71.png) * Color: 颜色 ![72](https://xp.odoohub.com.cn/sale/images/72.png) #### 自定义变体属性值 还有一种变体使用方式,是允许用户自定义变体属性值。属性值中有一个“是否自定义”字段,勾选后,用户在下单时可以输入自定义内容。 例如系统中iPhone颜色只有黑色和白色,如果还希望销售在下单时输入特殊颜色,可以增加一个“自定义”属性值,并勾选“是否自定义”。 ![74](https://xp.odoohub.com.cn/sale/images/74.png) 然后我们在下单的时候就可以看到多出一个自定义的选项值: ![75](https://xp.odoohub.com.cn/sale/images/75.png) 用户可以根据自己的需求填写自己的属性值,然后创建订单。 ![76](https://xp.odoohub.com.cn/sale/images/76.png) 需要注意的是,虽然我们自定义了变体的值,但是系统中并没有真正创建这个属性值的变体,而仅仅是将自定义属性作为订单的备注写到了订单明细中,变体依旧使用的是“自定义”的这个产品变体。 如果想要真正在系统中创建这个变体,一种方式是手动创建,另一种方式是使用我们销售解决方案中的自动创建功能,在设置-欧姆-销售特性中启用销售扩展: ![77](https://xp.odoohub.com.cn/sale/images/77.png) 然后我们到用户的设置中,选中“根据自定义属性创建变体”权限: ![78](https://xp.odoohub.com.cn/sale/images/78.png) 然后我们在变体的属性值列表中会看到新增的一列: ![79](https://xp.odoohub.com.cn/sale/images/79.png) 选中"创建变体"选项即可在确认订单时自动创建自定义属性的变体。 ![80](https://xp.odoohub.com.cn/sale/images/80.png) 可以看到当我们确认了订单,系统自动帮我们创建了紫色的iphone。 #### 变体的创建模式 * Instantly: 立即创建,产品保存的时候立刻创建变体 * Dynamically: 动态创建变体,产品创建时不立即创建变体而是在订单中实际用到时才会创建变体 * Never: 此选项不创建变体 变体的创建模式在产品中使用之后就将不可再编辑。 ### 产品变体的配置模式 变体在订单中的配置模式支持两种: * Product Configurator: 产品配置器,即我们前面看到那种形式的配置向导。 * Order Grid Entry: 网格形式的配置器,即可以在一个向导中同时配置多个属性的变体和数量。 ![73](https://xp.odoohub.com.cn/sale/images/73.png) 通用属性 ---- 产品管理界面中包含若干会影响销售流程的设置,我们先看通用设置。 ### 产品类型 产品模板可以设置产品是否可销售、是否可采购,也可以设置产品类型、售价、成本、税率等信息。其中最需要先理解的是产品类型。 Odoo中的产品类型可以分为两种**商品**和**服务**: * 商品:包括可库存的产品和不计库存的产品 * 服务:不存在库存中的产品 其中商品可以设置为是否跟踪库存。如果商品需要库存管理,还可以继续设置追踪方式: * 根据批次: * 根据序列号: * 根据数量: 在17.0及之前的版本中,产品类型分为三种: * 可消耗产品:可以无限使用,不必统计其消耗量的产品,例如,沙子和水等。 * 服务产品: 没有实体的产品,例如,咨询服务。 * 可库存产品: 具有实体的产品,可以控制其出入库。 ### 产品分类 产品分类,此产品归属的分类,产品分类上可以设置父级分类,下架逻辑,库存方法和财务科目等高级属性。 强制下架策略:如果在分类上设置了下架策略,那么改分类下的产品的下架策略将忽略掉库位上的下架策略。默认情况下,可选的下架策略有两种,FIFO和LIFO。详细策略介绍,请参考库存管理-库位-上架策略一节。 ### 内部参考 内部参考(default\_code),就是我们通常说的SKU,Odoo默认没有添加唯一性标识,我们可以通过技术性手段添加唯一性标识\*。在内部参考的下面是条码,即产品的统一商品码,这个同样也没有设置唯一性标识。 销售价格,产品的销售价格。默认只有一个销售价格,如果需要更多的价格,可以使用价格表的功能(参考价格表一章)。 销售税种,销售此产品时默认的销售税,更多关于税种的设置,请参阅财务-税种一章。 ### 编码 > 18.0新增 除了内部参考,Odoo还使用了另外一个字段编码(code)来表示SKU,不过与内部参考不同的是,编码是个计算字段,也就是不支持用户手动更新,它的取值来源于产品信息中的供应商列表。 简单理解:如果当前合作伙伴是供应商,编码会取该供应商产品列表中的供应商产品编码;否则使用内部编码。 ### 产品图片 产品的图片默认可以上传一张。 ### 产品价格 * 销售价格(list price): 产品的标准售价 > 18.0及之前版本的售价精度由系统设置中的Product Price控制,默认保留2位小数。2026.02之后,产品标准售价可以支持更高精度,但最小精度仍默认为2位。 实施建议 ---- 销售产品设计要服务后续流程。第一期不要急着把所有历史产品和所有规格一次性导入系统,建议先整理仍在销售、仍有库存、仍需要开票的有效产品。 产品变体也不要滥用。颜色、尺码、容量这类标准组合适合变体;每个客户都不同、每张订单都不同的定制规格,更适合用备注、配置器、第二单位或定制方案处理。 本章讲清楚了销售产品、产品模板、产品变体和常见字段。下一章会进入报价单与客户确认,看看这些产品如何被放进报价单,并通过模板、有效期、在线签名和在线支付形成正式销售机会。 results matching "" =================== No results matching "" ====================== --- # 第四章 销售订单流程 · odoo实施参考手册-青岛欧姆网络科技 [第四章 销售订单流程](https://xp.odoohub.com.cn/) ========================================= 第四章 销售订单流程 ========== 客户接受报价后,报价单会确认成销售订单。销售订单是Odoo销售流程的核心节点:它会根据产品和配置触发发货、开票、采购、生产、项目任务或租赁流程。 很多企业的问题不是不会创建订单,而是不清楚确认订单以后系统会自动做什么。本章我们就从一张标准销售订单出发,讲清楚确认、交付、开票、付款、取消、删除、锁定和状态变化这些日常操作。 标准销售流程 ------ 标准流程可以概括为: 创建报价 -> 发送报价 -> 客户确认 -> 销售订单 -> 发货/交付 -> 开票 -> 收款 -> 完成 不同产品会让流程发生变化: | 产品类型 | 确认订单后常见动作 | | --- | --- | | 实物产品 | 生成发货单,走库存交付 | | 服务产品 | 通常不生成库存移动,可能关联项目或工时 | | 租赁产品 | 进入出租和归还流程 | | 按订单采购产品 | 可能触发采购需求 | | 按订单生产产品 | 可能触发生产订单 | 所以确认订单前,要先确认产品类型、路线、开票策略和库存设置是否正确。 创建报价和默认信息 --------- 创建销售订单前,通常先创建报价单。 报价单阶段,系统顶部通常显示“发送邮件”和“确认”按钮,表示这张单据还没有变成正式订单。 ![报价单等待确认](https://xp.odoohub.com.cn/sale/images/17.png) 报价单上常见字段包括: * 客户; * 开票地址; * 送货地址; * 报价日期; * 价格表; * 付款条件; * 销售员; * 销售团队; * 订单行; * 条款和备注。 默认销售员一般来自当前用户、客户资料或CRM商机。实施时要统一规则,否则后续销售业绩统计会不准。 确认订单 ---- 点击确认后,报价单变成销售订单。 确认后,状态条会进入销售订单阶段,系统也会出现交付等智能按钮。下图中可以看到订单已经确认,并生成了一个交付单。 ![确认后的销售订单](https://xp.odoohub.com.cn/sale/images/18.png) 确认订单可能触发: * 生成发货单; * 更新已订购数量; * 生成采购需求或生产需求; * 允许创建发票; * 通知相关人员; * 客户门户显示订单状态。 确认订单代表商业承诺成立。不要把确认当成“保存”。如果客户只是询价,还没有确认购买,应停留在报价单阶段。 发货和交付 ----- 销售订单确认后,如果包含需要库存管理的产品,系统通常会生成发货单。 发货状态常见含义: | 状态 | 含义 | | --- | --- | | 等待 | 库存不足或等待其他作业 | | 就绪 | 库存满足,可以发货 | | 已完成 | 仓库已经验证出库 | | 已取消 | 发货单取消 | 销售订单上的已交付数量会根据发货结果更新。这个数量会影响按交付数量开票的产品。 销售订单行中可以看到已交付数量和已开票数量。销售人员判断订单是否已经履约时,不要只看订单状态,也要看这两个数量。 ![销售订单已交付数量](https://xp.odoohub.com.cn/sale/images/35.png) 如果订单包含多件产品,还要看交付策略:是尽快发可用产品,还是等所有产品齐备后一起发。 创建发票 ---- 销售订单确认后,可以根据开票策略创建发票。 点击创建发票后,系统会弹出向导,选择常规发票、预付款百分比或预付款固定金额。 ![创建发票向导](https://xp.odoohub.com.cn/sale/images/19.png) 发票相关状态包括: | 状态 | 含义 | | --- | --- | | 没有要开票的 | 当前没有可开票数量或订单还未到开票条件 | | 等待开票 | 存在可开票金额或数量 | | 已全部开票 | 订单已经完成开票 | | 额外销售 | 已交付数量超过已开票或订购逻辑,需要进一步处理 | 开票策略和预付款已经在下一章详细展开。这里先记住:销售订单不是正式发票,发票确认后才进入会计应收。 登记付款 ---- 发票确认后,财务可以登记付款。 销售订单 -> 客户发票 -> 登记付款 -> 银行对账 在正式项目中,付款状态还会受会计设置、银行对账、支付方式和收款流程影响。销售人员可以看到发票和付款结果,但不建议绕过财务流程直接改状态。 发票确认后可以登记付款。付款登记完成后,财务还需要结合银行流水对账,才能形成更完整的资金闭环。 ![登记付款](https://xp.odoohub.com.cn/sale/images/21.png) 取消订单 ---- 订单取消要看当前进度。 | 当前状态 | 建议处理 | | --- | --- | | 未发货、未开票 | 可以取消销售订单和相关发货单 | | 已发货、未开票 | 需要考虑库存退货 | | 已开票、未收款 | 需要考虑贷项通知单 | | 已开票、已收款 | 需要考虑退款和财务处理 | | 已触发采购/生产 | 需要同步处理下游单据 | 不要随意删除已经确认或已经履约的订单。业务已经发生后,应通过取消、退货、退款等反向流程留下记录。 如果订单已经发货,再取消销售订单就不只是销售动作,还要考虑库存是否需要退货、财务是否需要退款。 ![取消销售订单](https://xp.odoohub.com.cn/sale/images/28.jpg) 锁定和解锁 ----- Odoo支持将确认后的销售订单锁定。锁定后,订单不再随意编辑。 适合锁定的场景: * 订单已经发货; * 订单已经开票; * 财务希望历史订单稳定; * 管理层希望避免销售事后修改价格和数量。 需要修改时,可以由有权限人员解锁。是否允许普通销售解锁,要根据企业管理要求决定。 客户信用额度 ------ Odoo原生支持客户信用额度提醒。当客户未付款余额超过信用额度时,销售订单可能出现提示。 这类提示的价值是让销售在接单前看到风险。 要注意:原生额度控制在一些场景下偏提醒性质,是否强制阻止下单,要结合版本、配置和企业管理要求确认。如果企业需要严格信用控制,可能需要财务规则或定制增强。 可以在销售或会计设置中启用信用额度提醒,并在客户资料上维护信用额度。 ![客户信用额度设置](https://xp.odoohub.com.cn/sale/images/83.png) 当订单金额超过信用额度时,销售订单会给出风险提示,帮助销售提前识别收款风险。 ![超信用额度提示](https://xp.odoohub.com.cn/sale/images/85.png) 订单删除的边界 ------- 草稿报价可以删除。但已确认、已发货、已开票的订单,不建议删除。 删除会带来风险: * 历史销售记录丢失; * 库存交付难以追溯; * 财务应收对不上; * 客户沟通记录丢失; * 报表统计被破坏。 实施时要培训用户:取消和删除不是一回事。已经发生的业务,应保留历史并走反向流程。 常见问题 ---- | 问题 | 常见原因 | 处理方向 | | --- | --- | --- | | 确认订单后没有发货单 | 产品是服务,或未启用库存/路线 | 检查产品类型和库存配置 | | 不能开票 | 产品按交付数量开票但未交付 | 检查开票策略和已交付数量 | | 发货单不就绪 | 库存不足或等待补货 | 查看预测库存和补货规则 | | 客户收到错误价格 | 价格表、折扣或税率错误 | 回到价格和税率配置 | | 已完成订单还被修改 | 未启用锁定或权限太宽 | 设计锁定和权限规则 | 实施建议 ---- 销售订单流程建议先用一个简单产品完整跑通: 报价 -> 发送 -> 确认 -> 发货 -> 开票 -> 收款 -> 退货/退款演练 不要只测试“创建订单成功”。真正上线要看销售、仓库、财务、客户门户之间是否能连起来。 本章讲清楚了销售订单确认后的主要状态和动作。下一章会继续深入开票策略、预付款和形式发票,解决“什么时候开票、开多少、怎么收预付款”的问题。 results matching "" =================== No results matching "" ====================== --- # 第三章 基础数据准备 · odoo实施参考手册-青岛欧姆网络科技 [第三章 基础数据准备](https://xp.odoohub.com.cn/) ========================================= 第三章 基础数据准备 ========== 基础数据是 Odoo 实施中最容易被低估的一步。很多客户以为“把 Excel 导进去”就是数据准备,实际不是。真正的数据准备,是把旧系统、Excel 和员工脑子里的业务规则,整理成 Odoo 能稳定使用的数据。 这一章不追求一次性把所有资料都搬进系统,而是先帮客户准备第一期上线必须用到的数据。 为什么先做基础数据 --------- Odoo 的销售、采购、库存、财务都依赖基础数据。 如果产品资料错了,销售报价会错,库存数量会错,成本也会错。如果客户资料重复,后面的应收账款、对账、发票都会分散在多个客户下面。数据不干净,系统再强也很难用。 所以自主实施时,建议先花时间整理数据,再开始大量录业务单据。 基础数据总览 ------ 第一期至少要准备这些资料: | 数据类型 | 用在哪里 | 最低要求 | | --- | --- | --- | | 公司资料 | 报价单、发票、邮件、报表 | 公司名称、地址、电话、邮箱、税号、银行账号 | | 用户资料 | 登录系统、权限控制、审批和消息 | 姓名、邮箱、岗位、需要使用的模块 | | 客户资料 | 报价、销售订单、发票、收款 | 客户名称、联系人、电话、邮箱、账期、发票地址、送货地址 | | 供应商资料 | 采购订单、供应商账单、付款 | 供应商名称、联系人、电话、邮箱、付款条件 | | 产品资料 | 销售、采购、库存、生产、POS | 产品名称、内部编码、单位、售价、成本、类别、条码 | | 仓库资料 | 收货、发货、调拨、盘点 | 仓库名称、库位、期初库存、批次或序列号规则 | | 财务资料 | 开票、付款、对账、报表 | 税率、银行账号、应收期初、应付期初、银行余额 | 不要一开始就追求字段很全。第一期最重要的是:能下单、能收发货、能开票、能对账。 公司资料 ---- 公司资料会出现在很多地方,例如报价单、发票、邮件签名和客户门户。 在 Odoo 中,可以先从 **Settings** 设置公司和系统信息。 ![设置页面](https://xp.odoohub.com.cn/implementation/images/implementation-settings.png) 建议准备: | 字段 | 说明 | | --- | --- | | 公司名称 | 对外显示的正式名称 | | 地址 | 报价单、发票和送货文件常用 | | 电话和邮箱 | 客户联系和邮件模板会用到 | | 税号 | 财务和发票相关资料 | | 银行账号 | 报价、发票或付款说明中可能会显示 | | 默认币种 | 决定报价、采购和会计金额的默认币种 | | 时区和语言 | 影响日期、时间和用户界面 | 如果企业有多家公司,不建议第一天就全部配置复杂的多公司流程。先确认是否真的需要多公司记账、跨公司采购、跨公司库存,再决定是否启用。 用户和权限资料 ------- 不要让所有员工共用管理员账号。管理员账号只负责配置和维护,日常业务应该用员工自己的账号。 用户资料可以从 **Settings -> Users & Companies -> Users** 进入。 ![用户列表](https://xp.odoohub.com.cn/implementation/images/implementation-users.png) 建议先按岗位准备用户,而不是按个人临时决定权限。 | 岗位 | 常用权限范围 | | --- | --- | | 销售 | 客户、报价、销售订单、销售报表 | | 采购 | 供应商、询价单、采购订单、采购报表 | | 仓库 | 收货、发货、调拨、盘点 | | 财务 | 发票、付款、银行对账、财务报表 | | 门店 | POS 收银、退货、交班 | | 老板 | 报表查看、审批、关键业务查看 | | 管理员 | 应用安装、系统设置、用户权限 | 权限的原则是“够用就好”。权限太小,员工做不了事;权限太大,容易误改价格、库存和会计数据。 客户和供应商资料 -------- Odoo 中的客户、供应商、联系人,本质上都属于联系人资料。一个公司既可以是客户,也可以是供应商。 在 Sales 中,可以进入客户列表查看和维护客户。 ![客户列表](https://xp.odoohub.com.cn/implementation/images/implementation-customers.png) 客户和供应商不要只导入名称。至少要整理: | 字段 | 为什么重要 | | --- | --- | | 公司名称 | 报价、订单、发票的主体 | | 联系人 | 销售跟进、收发邮件、送货联系 | | 电话和邮箱 | 通知、报价发送、对账沟通 | | 发票地址 | 客户发票和账务资料 | | 送货地址 | 仓库发货和物流资料 | | 付款条件 | 影响账期和应收应付 | | 销售员或采购负责人 | 方便后续过滤和统计 | 导入前要先去重。常见重复情况: * 同一个客户有公司简称和全称两个版本; * 同一个供应商被不同部门分别建了一次; * 联系人被当成公司导入; * 发票地址和送货地址混在同一条资料里; * 客户电话、邮箱为空,后续无法发送报价或对账邮件。 如果客户有多个送货地址,建议在 Odoo 中维护成同一公司下面的不同地址,而不是创建多个重复客户。 产品资料 ---- 产品是销售、采购、库存、生产和 POS 的核心数据。产品资料错了,后面所有业务都会跟着错。 可以从 Sales 的 Products 菜单创建产品。 ![产品表单](https://xp.odoohub.com.cn/implementation/images/implementation-product-form.png) 产品至少要确认这些字段: | 字段 | 说明 | | --- | --- | | 产品名称 | 对内和对外显示的名称 | | 内部编码 | 企业内部识别产品的编码 | | 条码 | POS、仓库扫码和快速查找常用 | | 产品类型 | Goods、Service 或 Combo | | 可销售 | 是否出现在销售订单中 | | 可采购 | 是否出现在采购订单中 | | 销售价格 | 报价和销售订单默认价格 | | 成本 | 库存估值、毛利和成本分析会用到 | | 税率 | 销售税和采购税 | | 产品类别 | 报表、会计科目和库存估值常用 | 产品类型要特别注意。 | 类型 | 适用场景 | 常见误区 | | --- | --- | --- | | Goods | 有库存、需要采购或发货的商品 | 把实物商品建成服务,导致库存不变化 | | Service | 咨询、安装、运费、人工服务 | 把服务建成商品,导致仓库出现无意义的发货 | | Combo | 组合销售场景 | 没确认业务场景就滥用组合 | 如果产品有颜色、尺码、规格等变化,可以用变体。但第一期不要为了“看起来完整”建立过多变体。变体太多会增加维护成本。 仓库和库存资料 ------- 有库存管理的企业,必须准备期初库存。期初库存不是简单写一个总数,而是要能说明“哪个产品、在哪个仓库、哪个库位、有多少”。 至少准备: | 字段 | 示例 | | --- | --- | | 产品 | A001 手机壳 | | 仓库 | 青岛仓 | | 库位 | Stock 或具体货架 | | 数量 | 100 | | 单位 | 件 | | 批次或序列号 | 有追踪要求时必须准备 | | 成本 | 需要库存估值时必须确认 | 如果企业暂时不管理库位,可以先只用一个主库位。不要为了追求精细化,一开始就建很多货架、区域和虚拟库位。 财务基础资料 ------ 财务资料一定要让财务人员参与确认。不要只由业务部门或实施人员代填。 第一期至少确认: | 数据 | 用途 | | --- | --- | | 税率 | 销售开票、采购账单、税额计算 | | 银行账号 | 收款、付款、银行对账 | | 付款条件 | 应收应付到期日 | | 期初应收 | 上线前客户还欠公司的钱 | | 期初应付 | 上线前公司还欠供应商的钱 | | 银行期初余额 | 对账和现金流报表 | 注意:Odoo 中的 Invoice 是会计上的客户发票或供应商账单,不等于中国税控系统里的增值税发票。国内企业如果需要开具数电票、金税盘或第三方开票接口,需要单独评估。 推荐导入顺序 ------ 数据导入不要随便排顺序。建议按下面顺序做: 1. 公司资料; 2. 用户和权限; 3. 客户、供应商、联系人; 4. 产品类别; 5. 产品资料; 6. 仓库和库位; 7. 价格表和供应商价格; 8. 期初库存; 9. 期初应收和期初应付; 10. 未完成销售订单和采购订单。 先导主数据,再导业务余额。不要先导订单,再发现客户、产品和税率都不对。 数据清洗检查表 ------- 导入前可以用这张表检查。 | 检查项 | 通过标准 | | --- | --- | | 客户去重 | 同一客户只有一个主档案 | | 供应商去重 | 同一供应商没有重复资料 | | 产品编码 | 每个关键产品都有唯一编码 | | 单位统一 | 同类产品使用一致单位 | | 价格确认 | 售价、成本、税率已抽查 | | 地址拆分 | 发票地址和送货地址没有混乱 | | 库存数量 | 期初库存已经盘点确认 | | 财务余额 | 应收、应付、银行余额由财务确认 | 如果这张表没有通过,不建议急着导入正式库。 不建议第一期导入的数据 ----------- 第一期不要把所有历史资料都搬进 Odoo。 暂时不建议导入: * 多年以前已经停用的客户; * 已经不销售、不采购的老产品; * 没有后续业务价值的历史报价单; * 已经结清的历史发票和付款明细; * 旧系统里没人维护的自定义字段; * 无法解释来源的库存数量; * 重复、缺字段、没有负责人确认的数据。 历史数据不是越多越好。第一期更重要的是让未来业务在 Odoo 中准确发生。 基础数据验收标准 -------- 基础数据准备完成后,应该能达到这些标准: | 项目 | 验收方式 | | --- | --- | | 客户 | 随机抽查 10 个客户,名称、地址、联系人正确 | | 供应商 | 随机抽查 10 个供应商,付款条件和联系方式正确 | | 产品 | 随机抽查 20 个产品,编码、类型、价格、税率正确 | | 库存 | 随机抽查 10 个产品,系统数量和盘点数量一致 | | 用户 | 每个岗位能登录自己的账号 | | 权限 | 员工只能操作自己岗位需要的功能 | | 财务 | 税率、银行账号、期初余额由财务签字确认 | 基础数据验收通过后,再进入下一章的测试库演练。 results matching "" =================== No results matching "" ====================== --- # 第四章 测试库演练方法 · odoo实施参考手册-青岛欧姆网络科技 [第四章 测试库演练方法](https://xp.odoohub.com.cn/) ========================================== 第四章 测试库演练方法 =========== 测试库不是用来“看看界面”的,而是用来模拟真实业务。只有真实岗位、真实数据、真实异常都跑过,才能判断 Odoo 是否可以上线。 这一章给出一套适合小白客户的测试方法。照着做,可以把“我感觉差不多了”变成“这些流程已经确认通过”。 什么是有效测试 ------- 有效测试不是管理员随便点几下。有效测试至少要满足四个条件: * 使用接近真实业务的数据; * 使用真实岗位账号,而不是只用管理员; * 跑完整流程,而不是只创建一张单; * 记录问题、负责人和处理结果。 如果只由实施人员或老板用管理员账号测试,很多权限问题、交接问题和异常流程都不会暴露。 测试前准备 ----- 测试前先准备一组最小数据。 | 数据 | 建议数量 | 用途 | | --- | --- | --- | | 客户 | 2 到 3 个 | 测试报价、销售订单、收款、对账 | | 供应商 | 2 到 3 个 | 测试采购订单、收货、供应商账单 | | 产品 | 5 到 10 个 | 覆盖商品、服务、不同税率或不同单位 | | 仓库 | 1 到 2 个 | 测试收货、发货、调拨、盘点 | | 用户 | 每个岗位 1 个 | 测试权限和岗位流程 | | 银行流水 | 3 到 5 条 | 测试收款、付款和银行对账 | 产品可以先从 Sales 的 Products 菜单创建。不要一开始就导入几千个产品来测试,那样问题会被数据量淹没。 ![产品表单](https://xp.odoohub.com.cn/implementation/images/implementation-product-form.png) 测试角色 ---- 建议至少准备这些测试角色: | 角色 | 负责测试 | | --- | --- | | 销售 | 客户、报价、销售订单、销售发票申请 | | 采购 | 供应商、询价单、采购订单 | | 仓库 | 收货、发货、调拨、盘点 | | 财务 | 客户发票、供应商账单、付款、银行对账 | | 老板 | 报表、审批、关键业务查看 | | 管理员 | 系统设置、权限调整、问题排查 | 每个角色都应该用自己的账号登录测试。这样才能知道权限是否够用。 流程一:销售到收款 --------- 这是大多数企业最先要跑通的流程。 客户 -> 报价单 -> 销售订单 -> 发货 -> 客户发票 -> 收款 -> 对账 在 Sales 中新建报价单时,至少要测试客户、产品、数量、价格、税率和付款条件。 ![新建报价单](https://xp.odoohub.com.cn/implementation/images/implementation-quotation-form.png) 测试步骤: 1. 销售创建客户; 2. 销售创建报价单; 3. 销售添加产品、数量、单价和税率; 4. 销售发送或打印报价单; 5. 客户确认后,将报价单确认成销售订单; 6. 仓库处理发货; 7. 财务创建客户发票; 8. 财务登记客户付款; 9. 财务检查应收账款和对账状态。 验收标准: | 检查项 | 通过标准 | | --- | --- | | 报价 | 客户、产品、价格、税率正确 | | 订单 | 报价确认后状态变化正确 | | 发货 | 库存数量按发货减少 | | 开票 | 发票金额和订单金额一致 | | 收款 | 客户应收减少 | | 报表 | 销售额和应收账款能查到 | 流程二:采购到付款 --------- 采购流程用于验证供应商、采购价格、收货和供应商账单。 供应商 -> 询价单 -> 采购订单 -> 收货 -> 供应商账单 -> 付款 -> 对账 测试步骤: 1. 采购创建供应商; 2. 采购创建询价单; 3. 采购添加产品、数量和采购价格; 4. 确认采购订单; 5. 仓库收货; 6. 财务创建供应商账单; 7. 财务登记供应商付款; 8. 财务检查应付账款。 验收标准: | 检查项 | 通过标准 | | --- | --- | | 采购单 | 供应商、产品、数量、价格正确 | | 收货 | 库存数量按收货增加 | | 账单 | 账单金额能和采购订单匹配 | | 付款 | 供应商应付减少 | | 报表 | 应付账款和采购统计能查到 | 流程三:库存盘点和调拨 ----------- 只要企业管理实物库存,就必须测试库存流程。 测试步骤: 1. 查询某个产品当前库存; 2. 做一次库存调整; 3. 做一次内部调拨; 4. 做一次销售发货; 5. 做一次采购收货; 6. 检查库存数量变化是否符合预期。 验收标准: | 检查项 | 通过标准 | | --- | --- | | 现有库存 | 系统数量能解释来源 | | 盘点 | 调整后数量正确 | | 调拨 | 源库位减少,目标库位增加 | | 收货 | 采购收货后库存增加 | | 发货 | 销售发货后库存减少 | 如果企业有批次或序列号管理,必须额外测试批次追踪和序列号唯一性。 流程四:财务对账 -------- 财务测试不能只看发票是否能创建,还要测试付款和银行对账。 测试步骤: 1. 创建一张客户发票; 2. 登记一笔客户付款; 3. 导入或手工创建一条银行流水; 4. 将银行流水和付款或发票匹配; 5. 检查应收账款是否关闭; 6. 查看账龄报表。 验收标准: | 检查项 | 通过标准 | | --- | --- | | 发票 | 金额、税率、客户正确 | | 付款 | 付款金额和日期正确 | | 银行流水 | 流水能进入银行日记账 | | 对账 | 银行流水能匹配到发票或付款 | | 账龄 | 已收款发票不再显示为未收 | 国内客户要特别注意:Odoo 的客户发票是会计应收单据,不等于中国税控发票。测试时要先确认企业是否需要单独对接开票平台。 异常流程测试 ------ 只测试顺利流程是不够的。真实业务一定会出错。 建议至少测试这些异常: | 异常场景 | 要验证什么 | | --- | --- | | 报价单取消 | 取消后是否还能误发货或误开票 | | 销售部分发货 | 未发数量是否保留 | | 客户退货 | 库存是否增加,应收是否正确处理 | | 客户部分付款 | 应收余额是否正确 | | 采购部分收货 | 未收数量是否保留 | | 供应商账单金额不一致 | 财务是否能发现差异 | | 员工权限不足 | 系统是否阻止越权操作 | | 产品价格错误 | 修改后新旧订单是否按预期处理 | 异常测试是最能发现问题的地方。不要怕测试库弄乱,测试库就是用来犯错的。 测试问题记录表 ------- 每次测试都要记录问题。不要只在微信群里说一句“这里不对”,很快就会忘。 建议使用下面格式: | 编号 | 模块 | 角色 | 问题描述 | 期望结果 | 实际结果 | 处理方案 | 负责人 | 状态 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | T001 | 销售 | 销售 | 报价单税率不对 | 默认 13% | 显示 15% | 调整产品税率 | 财务 | 待处理 | | T002 | 库存 | 仓库 | 发货后库存没减少 | 库存减少 | 未变化 | 检查产品类型 | 实施顾问 | 已解决 | 状态建议只用四种: * 待确认; * 待处理; * 已解决; * 暂不处理。 “暂不处理”也要写原因。比如这个问题属于二期优化,或原生 Odoo 暂不支持,需要后续定制。 测试通过标准 ------ 测试通过不是没有任何问题,而是关键流程可用,剩余问题有明确处理方案。 可以用下面标准判断: | 项目 | 通过标准 | | --- | --- | | 主流程 | 销售、采购、库存、财务至少一条完整链路跑通 | | 异常流程 | 取消、退货、部分收货、部分付款已测试 | | 权限 | 每个岗位能完成自己的工作,不能做不该做的事 | | 数据 | 客户、产品、库存和财务数据抽查正确 | | 报表 | 老板和财务能看懂关键报表 | | 问题 | 所有上线前必须解决的问题已经关闭 | | 切换 | 已确定正式上线日期和旧系统停止录入规则 | 如果这些标准没有达到,不建议直接上线。 试运行和正式上线的区别 ----------- 测试通过后,可以进入试运行。试运行和正式上线不是一回事。 | 阶段 | 目的 | 数据要求 | | --- | --- | --- | | 测试库演练 | 找问题、练流程 | 可以使用测试数据 | | 试运行 | 用真实业务验证系统 | 使用接近真实的业务数据 | | 正式上线 | 系统成为唯一业务来源 | 使用正式数据,旧系统停止新增 | 试运行期间可以保留旧系统查询,但不要长期双系统录入。同一笔业务同时录入两个系统,后面一定会对不上。 小白客户常见坑 ------- * 只测试创建单据,不测试后续发货、开票、付款; * 只测试正常流程,不测试取消、退货、部分付款; * 只用管理员账号测试,没有用真实岗位账号; * 问题只在聊天软件里说,没有形成问题清单; * 测试数据太随意,和真实业务差异太大; * 一边测试一边频繁改需求,导致永远无法验收; * 老板没有参与报表验收,上线后才发现口径不对。 测试的目标不是证明系统完美,而是提前发现哪些地方需要配置、培训或二期优化。只要问题被看见,项目就已经向前走了一大步。 results matching "" =================== No results matching "" ====================== --- # 第二章 数据库管理 · odoo实施参考手册-青岛欧姆网络科技 [第二章 数据库管理](https://xp.odoohub.com.cn/) ======================================== 第二章 数据库管理 ========= 数据库是 Odoo 系统的核心。客户、产品、订单、库存、发票、附件和系统配置,最终都保存在数据库和文件存储中。 对自主实施客户来说,不一定要会写数据库命令,但必须理解测试库、正式库、备份和恢复。否则一旦误操作,就很难挽回。 什么是 Odoo 数据库 ------------ 可以把一个 Odoo 数据库理解成一套独立账套或独立业务环境。 一个数据库里通常包含: * 公司资料; * 用户和权限; * 客户、供应商、产品; * 销售、采购、库存、财务单据; * 邮件、附件、图片; * 模块安装状态和系统配置。 不同数据库之间数据互不相通。测试库里的订单不会自动进入正式库,正式库里的客户也不会自动出现在测试库。 测试库和正式库 ------- 实施 Odoo 时,至少应该区分测试库和正式库。 | 数据库 | 用途 | 注意事项 | | --- | --- | --- | | 测试库 | 试流程、试配置、试导入、培训员工 | 可以反复清理和重来 | | 正式库 | 录入真实业务数据 | 不要随意删除、导入和测试 | | 备份库 | 临时恢复备份检查数据 | 不要让员工误当正式库使用 | 测试库可以大胆试错,正式库要谨慎操作。不要在正式库里测试删除、批量导入、模块卸载和权限实验。 数据库管理入口 ------- 自部署 Odoo 通常可以通过下面地址进入数据库管理页面: http://你的域名/web/database/manager 数据库管理页面通常支持: * 创建数据库; * 备份数据库; * 还原数据库; * 复制数据库; * 删除数据库。 如果线上环境访问这个地址返回 404 或无法进入,可能是管理员关闭了数据库管理入口。这在生产环境中是常见的安全做法。 数据库管理界面怎么看 ---------- 看到数据库管理入口后,先不要急着点按钮。这个页面上的每个操作都会影响整套系统数据。下面是一组传统自部署 Odoo 的数据库管理截图。不同版本和不同部署方式界面会有差异,但核心动作基本一致。 第一次访问新安装的 Odoo 时,系统可能会引导创建数据库。 ![创建数据库](https://xp.odoohub.com.cn/basic/images/3.jpg) 数据库管理页面通常可以看到备份、复制、删除等操作。 ![数据库管理](https://xp.odoohub.com.cn/basic/images/4.jpg) 备份时常见格式包括 zip 和 dump。zip 通常包含附件,dump 更偏数据库本体。 ![数据库备份格式](https://xp.odoohub.com.cn/basic/images/5.jpg) 如果使用第三方自动备份模块,通常会有备份配置菜单。 ![自动备份模块](https://xp.odoohub.com.cn/basic/images/6.jpg) 备份配置中一般需要设置数据库地址、数据库名、端口、备份格式、备份目录和自动清理规则。 ![备份配置](https://xp.odoohub.com.cn/basic/images/7.jpg) 自动备份最终还要依赖定时任务执行,所以配置后要检查定时任务是否正常启用。 ![备份定时任务](https://xp.odoohub.com.cn/basic/images/8.jpg) 这些截图适合自部署或社区版运维场景。Odoo Online 和 Odoo.sh 的备份方式不同,应以对应平台能力为准。 主控密码 ---- 数据库管理页面通常需要主控密码。主控密码不是 Odoo 用户密码,它用于创建、备份、还原、复制和删除数据库。 主控密码非常敏感。 建议: * 只由系统管理员或项目负责人保管; * 不要发在微信群、邮件和公开文档里; * 离职交接时必须更新; * 不要和 admin 用户密码相同; * 正式环境不要让普通员工知道。 如果主控密码泄露,别人可能可以下载数据库备份或删除数据库,风险非常高。 创建数据库 ----- 创建数据库一般用于: * 新项目初始化; * 建立测试环境; * 演示不同业务方案; * 培训员工。 创建时通常要填写: | 字段 | 说明 | | --- | --- | | 数据库名称 | 建议使用英文、数字、下划线 | | 邮箱或登录名 | 默认管理员账号 | | 管理员密码 | 登录 Odoo 的 admin 密码 | | 语言 | 国内客户通常选择中文 | | 国家/地区 | 影响本地化、税率和会计设置 | | 演示数据 | 测试学习可以启用,正式库不要启用 | 正式库不建议加载演示数据。演示数据适合学习和测试,不适合真实上线。 备份数据库 ----- 备份是生产环境的生命线。 常见备份格式: | 格式 | 说明 | 适用场景 | | --- | --- | --- | | zip | 包含数据库和附件文件 | 最完整,适合中小数据库 | | dump | 主要是数据库内容,不一定包含附件 | 适合技术人员处理大数据库 | Odoo 的附件、图片、PDF、邮件附件等通常保存在 filestore 中。只备份数据库、不备份附件,恢复后可能出现图片和附件丢失。 自主实施客户至少要做到: * 正式上线前备份一次; * 每天自动备份; * 重要批量导入前备份; * 大版本升级前备份; * 定期下载备份到服务器以外的位置。 还原数据库 ----- 还原数据库是把备份恢复成一个可访问的 Odoo 数据库。 常见用途: * 误删数据后恢复; * 把正式库复制成测试库; * 迁移服务器; * 升级前建立验证环境; * 排查历史问题。 还原时要特别注意数据库名称。不要把备份误恢复到正式库名称上,否则可能覆盖正式数据。 建议规则: 正式库:company_prod 测试库:company_test 备份恢复库:company_restore_20260704 名字清楚,可以减少误操作。 复制数据库 ----- 复制数据库常用于把正式库复制成测试库。 适合场景: * 用真实数据验证新流程; * 测试新模块; * 测试批量导入; * 培训员工; * 升级前预演。 复制后要注意: * 测试库最好关闭自动邮件发送,避免误发给客户; * 测试库名称要明显; * 测试库不要接入真实支付、真实物流或真实短信; * 测试库里的订单不要当正式业务处理。 很多事故不是系统问题,而是员工进错数据库。 删除数据库 ----- 删除数据库是高风险操作。 删除前必须确认: * 已经有可用备份; * 删除的是测试库,不是正式库; * 数据库名称确认无误; * 没有员工正在使用; * 项目负责人已经同意。 如果不确定,宁可先停用或改名,也不要直接删除。 自动备份 ---- 正式环境不要依赖人工手动备份。人工备份一定会忘。 推荐备份策略: | 项目 | 建议 | | --- | --- | | 频率 | 每天至少一次 | | 保留 | 至少保留最近 7 到 30 天 | | 位置 | 服务器本地 + 异地备份 | | 内容 | 数据库 + filestore + 配置文件 + 自定义模块 | | 验证 | 定期做恢复演练 | 备份不是“有文件就行”,还要确认真的能恢复。 Odoo Online、Odoo.sh 和自部署的区别 --------------------------- 不同部署方式,数据库管理方式不同。 | 部署方式 | 数据库管理方式 | | --- | --- | | Odoo Online | 由 Odoo 官方托管,数据库管理入口受限制 | | Odoo.sh | 通过 Odoo.sh 平台管理备份、分支和环境 | | 自部署 | 由企业或服务商负责备份、恢复和服务器维护 | 如果客户使用 Odoo.sh 或 Odoo Online,不要照搬自部署的数据库管理入口。应按对应平台的备份和恢复方式操作。 上线前数据库检查 -------- 正式上线前,建议确认: | 检查项 | 通过标准 | | --- | --- | | 测试库 | 已完成流程测试和员工培训 | | 正式库 | 没有演示数据和测试单据 | | 备份 | 已完成一次完整备份 | | 恢复 | 至少验证过备份可以恢复 | | 邮件 | 测试库不会误发真实客户 | | 权限 | 普通员工不能访问数据库管理入口 | | 命名 | 测试库和正式库名称清楚 | | 切换 | 已确定旧系统停止录入时间 | 数据库管理看起来是技术问题,但它直接决定项目是否安全。不会备份的系统,不建议正式上线。 Odoo体验库 ------- 为了简化客户的试用难度,优化客户的试用体验,我们特地提供了[Odoo SaaS](https://odoo.qingsolution.com/) 体验环境,可以先为客户开通一个独立的 Odoo体验库。客户拿到访问地址后,就可以直接进入系统,测试销售、采购、库存、财务、POS、网站等模块。 这种方式适合: * 第一次接触 Odoo,想先看看系统长什么样; * 还没有确定是否正式实施,只想低成本试用; * 想让销售、仓库、财务先参与流程演练; * 想用真实业务场景测试原生 Odoo 能做到什么; * 想先整理客户、产品、库存等基础数据; * 想比较社区版、企业版、自部署和定制开发的差异。 SaaS 体验库的价值不是替代实施,而是降低试错成本。客户可以先通过体验库回答几个关键问题: | 问题 | 体验库能帮助确认什么 | | --- | --- | | Odoo 是否适合我的业务 | 主流程是否能跑通 | | 我需要哪些模块 | 哪些模块第一期必须启用,哪些可以放到二期 | | 需要多少定制 | 原生功能和业务差距在哪里 | | 员工能否接受 | 销售、仓库、财务是否能学会操作 | | 数据准备难不难 | 客户、产品、库存、财务数据缺什么 | 体验库通常不建议直接当正式生产库长期使用。等流程确认、模块范围确认、数据清洗完成后,再决定正式环境采用哪种部署方式:继续使用托管方案、迁移到自部署、使用 Odoo.sh,或者进入更完整的企业级实施。 从数据安全角度看,体验库也应该和正式库分开。体验阶段可以大胆测试、删除、导入、重来;正式库则要按生产标准管理权限、备份、邮件、支付、物流和财务数据。 results matching "" =================== No results matching "" ====================== --- # 第八章 消息与讨论 · odoo实施参考手册-青岛欧姆网络科技 [第八章 消息与讨论](https://xp.odoohub.com.cn/) ======================================== 第八章 消息与讨论 ========= Odoo原生把沟通能力放进了业务单据里。销售报价、客户发票、项目任务、采购订单、联系人资料,很多页面右侧都有消息区,也就是常说的Chatter。它可以发送消息、记录内部备注、安排活动、管理附件、追踪关注者,并保留单据从创建到完成过程中的关键记录。 对企业来说,消息区不是一个“聊天框”,而是业务留痕和协同管理的入口。它能减少微信群、个人邮箱、口头交接带来的信息丢失,也能帮助新同事快速理解一张单据发生过什么。本章我们就来看一下Odoo消息区怎么用,哪些内容会通知客户,哪些内容只适合内部记录,以及国内项目中如何结合企业微信、飞书等消息渠道做延伸。 消息区在哪里 ------ 在报价单、销售订单、客户、发票、项目任务等表单右侧,通常可以看到消息区。 ![报价单消息区](https://xp.odoohub.com.cn/basic/images/basic-cn-chatter-quotation.png) 常见按钮和区域包括: | 功能 | 用途 | | --- | --- | | 发送消息 | 给客户、关注者或指定收件人发送正式消息 | | 备注 | 记录内部说明,通常不发送给客户 | | 活动 | 安排电话、邮件、会议、待办等跟进事项 | | 附件 | 上传、查看和管理当前单据附件 | | 关注者 | 控制谁关注这张单据,谁可能收到通知 | | 历史记录 | 查看单据变更、沟通、附件和活动记录 | 不同模块的消息区样式可能略有差异,但基本逻辑一致。只要一张单据带有消息区,就可以围绕这张单据沉淀沟通记录。 消息区解决什么问题 --------- 没有消息区时,企业内部沟通常见状态是这样的: 客户需求在微信里 报价附件在邮箱里 合同版本在某个人电脑里 催款记录在财务Excel里 售后问题在群聊里 老板问进展时,大家再临时翻记录 Odoo消息区的价值,是把这些分散信息尽量拉回到业务对象上。 例如一张销售订单,可以同时记录: * 报价什么时候发给客户; * 客户是否回复过邮件; * 销售是否电话跟进; * 内部是否备注了特殊交付要求; * 财务是否上传过付款凭证; * 仓库是否看到过发货注意事项; * 哪些员工关注了这张订单; * 客户是否通过门户查看了单据。 从管理角度看,消息区让单据不再只是“字段和状态”,而是有了上下文。 发送消息和备注的区别 ---------- 这是最容易混淆、也最需要培训员工的地方。 | 类型 | 是否可能对外 | 典型用途 | | --- | --- | --- | | 发送消息 | 可能发送给客户、关注者或指定收件人 | 给客户解释报价、发送订单更新、回复客户问题 | | 备注 | 通常仅内部可见 | 内部交接、风险提示、电话记录、处理说明 | 简单判断: * 想让客户看到,用 **发送消息**; * 只想内部留痕,用 **备注**; * 不确定客户能不能看到时,先不要写敏感内容。 例如: | 场景 | 推荐方式 | | --- | --- | | “报价单已更新,请确认附件。” | 发送消息 | | “客户口头要求本周五前发货,仓库请注意。” | 备注 | | “这个客户付款慢,下次要先收款。” | 备注,且注意权限和措辞 | | “发票已开具,请查收。” | 发送消息 | 实施时要把这个区别讲清楚。很多客户第一次用Odoo消息区,最担心的就是“我写的内部话会不会被客户看到”。这个问题不靠猜,要结合邮件配置、关注者、消息类型和收件人一起测试。 邮件和消息区的关系 --------- 上一章讲过邮箱配置,本章要把邮件和消息区连起来看。 如果邮件配置正确,通过单据发送的邮件会记录在消息区。客户回复邮件后,也有机会回到同一张单据上。 销售订单消息区 -> 发送报价邮件 -> 客户邮箱 客户回复邮件 -> 收件服务器/catch-all -> Odoo邮件路由 -> 销售订单消息区 这套链路依赖: * 发件服务器能正常发送; * 收件服务器、catch-all或邮件网关能接收回复; * 回复地址没有被邮箱服务商拦截; * 邮件头信息能匹配到原始单据; * 关注者和收件人设置合理。 邮件配置不完整时,消息区仍然可以记录内部备注、活动和附件,但客户回复不一定能自动回到Odoo。自主实施时,可以先把内部协同用起来,再逐步完善客户回复自动归档。 发送消息时要看收件人 ---------- Odoo在多个业务对象中使用邮件撰写向导发送消息。 ![邮件撰写向导](https://xp.odoohub.com.cn/basic/images/44.png) 向导通常包含: * 收件人; * 邮件主题; * 邮件正文; * 邮件模板; * 附件; * 发送按钮。 邮件撰写背后有不同模式,例如评论模式和群发模式。评论模式会把消息贴到当前文档消息区,并可能通知关注者;群发模式更偏批量发送,不一定使用完全相同的消息子类型。 ![邮件撰写模式](https://xp.odoohub.com.cn/basic/images/45.png) 如果客户问“为什么这个人也收到了邮件”,通常要检查三件事: * 邮件向导里的收件人; * 当前单据的关注者; * 消息子类型和通知偏好。 所以员工发消息前,不要只看正文,还要看收件人和附件。尤其是报价、发票、合同、售后争议这类邮件,更要确认发给了正确对象。 关注者 --- 关注者是会关注当前单据消息的人。不同情况下,系统可能会自动添加创建人、负责人、客户、销售员或相关用户。 关注者适合: * 销售关注自己的报价和客户; * 财务关注客户发票和催收记录; * 项目成员关注任务进展; * 采购关注供应商订单; * 客户通过门户接收订单和发票更新。 但关注者不是越多越好。关注者过多,会带来两个问题: | 问题 | 影响 | | --- | --- | | 通知太多 | 员工逐渐忽略Odoo提醒 | | 边界不清 | 不该收到消息的人也收到业务信息 | 实施时建议建立简单规则:谁负责这张单,谁关注;谁需要协作,谁关注;只是偶尔查看的人,不一定要关注。 活动是什么 ----- 活动是Odoo中的待办提醒。它不是普通备注,而是带负责人、截止日期和活动类型的跟进事项。 Odoo官方文档中也强调,活动可以在带有chatter的记录上创建,也可以从看板、列表、活动视图中安排。 常见活动类型: * 打电话; * 发送邮件; * 安排会议; * 上传文件; * 跟进报价; * 催收付款; * 审核资料; * 处理售后问题。 例如销售创建报价后,可以给自己安排一个3天后的跟进电话。到期后,系统会提醒销售处理。 活动的价值是把“记得跟进一下”变成系统可追踪的任务。管理者也可以从活动视图或模块统计里看到哪些事项逾期、哪些机会需要跟进、哪些发票需要催收。 活动适合怎么用 ------- 活动不要滥用。它适合有明确负责人和截止时间的事项。 | 场景 | 是否适合活动 | 说明 | | --- | --- | --- | | 三天后联系客户确认报价 | 适合 | 有负责人、有日期、有动作 | | 财务下周催收一张逾期发票 | 适合 | 可以形成催收节奏 | | 项目经理明天审核需求文档 | 适合 | 明确任务和截止时间 | | 随手写一条客户背景 | 不适合 | 更适合备注 | | 上传合同附件 | 不适合 | 更适合附件和备注 | 上线初期可以先从销售跟进、财务催收、项目任务三类活动开始,不要一开始就给所有动作都建活动,否则员工会觉得系统“到处催人”。 附件 -- 消息区也可以管理附件。 常见附件包括: * 客户合同; * 报价PDF; * 发票PDF; * 付款凭证; * 送货签收单; * 客户图片; * 项目文件; * 售后照片。 附件上传后,通常会挂在对应单据上。这样以后查看订单、发票、任务时,就能看到相关文件。 附件管理建议: * 文件尽量上传到正确单据,不要都堆在客户档案里; * 文件名要能看懂,例如`2026-06-报价确认.pdf`; * 合同、发票、签收单等关键附件要上传到业务单据; * 不要上传大量无关文件,否则后面很难查找; * 涉及隐私或敏感文件时,要注意用户权限。 附件是业务证据的一部分,不只是“传个文件”。 消息记录的价值 ------- 消息区最大的价值是留痕。 它可以回答这些问题: * 这张报价是什么时候发给客户的; * 客户是否回复过; * 谁修改过单据; * 内部谁备注了风险; * 哪些附件和这张单有关; * 哪个员工应该继续跟进; * 客户是否收到门户链接; * 财务是否已经催收; * 售后问题处理到了哪一步。 对于销售、项目、售后、财务催收,这些记录很有价值。尤其是人员交接时,新接手的人不需要到处问“这个客户之前怎么沟通的”,先看单据消息区就能掌握很多上下文。 消息子类型 ----- 当团队开始大量使用消息区后,经常会遇到一个问题:为什么有些消息会通知客户,有些只在内部显示?这背后和Odoo的邮件线程、关注者、消息子类型有关。 从技术上看,很多Odoo单据之所以有消息区,是因为模型继承了邮件线程能力。表单右侧会出现发送消息、备注、活动、附件、关注者等功能。 ![消息区示例](https://xp.odoohub.com.cn/basic/images/41.png) Odoo会通过消息子类型区分不同类型的消息和通知。 ![消息子类型列表](https://xp.odoohub.com.cn/basic/images/42.png) 消息子类型配置示例: ![消息子类型详情](https://xp.odoohub.com.cn/basic/images/43.png) 常见字段含义: | 字段 | 说明 | | --- | --- | | 消息类型 | 子类型名称 | | 序列 | 显示顺序 | | 模型 | 该子类型适用的模型,空值表示更通用 | | 默认 | 关注时是否默认订阅 | | 仅内部 | 是否只对内部用户可见 | | 隐藏 | 是否在关注者设置中隐藏 | | 父级 | 订阅父类型时是否联动订阅子类型 | 一般客户不需要直接修改消息子类型。顾问和开发人员需要理解它们,因为很多通知问题最终会落到“谁是关注者、订阅了什么子类型、这条消息是不是内部消息”上。 通知偏好 ---- Odoo用户可以有自己的通知偏好。不同版本和配置下,通知可能表现为: * Odoo右上角通知; * 讨论应用中的消息; * 邮件通知; * 活动提醒; * 移动端通知。 这也是为什么同一条消息,有的人收到邮件,有的人只在系统里看到提醒。 实施时可以给客户讲一个简单原则: 消息发给谁,由收件人、关注者、子类型决定; 消息通过什么渠道提醒,由用户通知偏好和系统配置决定。 不要把所有通知都理解成“邮件”。Odoo本身是一个协同系统,邮件只是其中一个通知渠道。 讨论应用和消息区的区别 ----------- Odoo还有一个“讨论”应用,用来查看聊天、频道和系统通知。 消息区和讨论应用的关系可以这样理解: | 功能 | 适合内容 | | --- | --- | | 单据消息区 | 围绕某张报价、发票、任务、客户的业务沟通 | | 讨论应用 | 团队频道、个人聊天、跨模块通知 | 如果是和某张订单有关的内容,最好写在订单消息区。如果只是团队内部日常讨论,可以放在讨论频道里。 这样做的好处是:以后找业务证据时,不需要从海量聊天里翻,而是直接打开对应单据。 国内企业微信和飞书通知 ----------- 国内客户经常习惯在企业微信、飞书、钉钉等工具里接收提醒。Odoo原生的协同中心仍然是消息区、活动和讨论应用,但在实施项目中,可以把关键通知推送到企业常用办公工具里。 青岛欧姆网络科技已经有企业微信和飞书相关方案,可用于员工同步、OAuth登录、消息推送、机器人通知等场景。本文不展开具体配置,只提醒客户:如果企业希望员工在企业微信或飞书里接收Odoo关键消息,可以在原生消息机制稳定后,再评估这类集成方案。 这种集成适合: * 员工日常不常打开Odoo,但会看企业微信或飞书; * 希望审批、待办、异常提醒及时触达; * 多系统通知希望统一到企业办公工具; * 管理层希望关键业务提醒更及时。 不过消息推送不是替代Odoo消息区。更好的方式是:Odoo负责业务记录和权限边界,企业微信/飞书负责及时提醒。 常见使用建议 ------ 消息区上线后,建议给团队定几条简单规则: * 客户能看到的内容要谨慎写; * 内部讨论用备注,不要误发给客户; * 重要电话沟通后写一条备注; * 报价发出后安排跟进活动; * 财务催款时记录沟通过程; * 上传附件时命名清楚; * 不要给所有人都加关注者; * 离职交接前检查关键客户和未完成单据的消息记录。 这些规则不复杂,但很有用。消息区用得好,系统会越来越像企业的“业务记忆”;用不好,就会变成另一个没人认真看的消息堆。 常见问题 ---- | 问题 | 常见原因 | 处理方向 | | --- | --- | --- | | 客户没收到邮件 | 邮箱配置、垃圾箱、模板或收件人错误 | 回到邮箱配置和邮件记录检查 | | 员工收到太多提醒 | 关注者过多、子类型订阅太多 | 清理关注者和通知偏好 | | 内部备注发给客户 | 使用了发送消息,或模板/收件人配置不当 | 培训员工区分发送消息和备注 | | 找不到附件 | 上传到错误单据或命名混乱 | 统一附件命名和上传位置 | | 活动没人处理 | 没有负责人、没有截止日期或缺少管理节奏 | 明确活动类型和负责人 | | 客户回复没有进单据 | 收件服务器、catch-all或邮件路由未配置好 | 回到邮箱配置章节排查 | | 讨论太分散 | 微信、邮箱、Odoo多处沟通 | 关键业务信息回到对应单据 | 排查时不要只问“是不是系统坏了”,要先看消息是怎么产生的、发给了谁、通过什么渠道通知、是否有邮件服务器参与。 实施建议 ---- 消息与讨论不需要等到所有模块上线后才使用。建议从最容易产生价值的场景开始: | 阶段 | 建议 | | --- | --- | | 第一阶段 | 销售报价、客户发票、项目任务先使用消息区和备注 | | 第二阶段 | 销售跟进、财务催收、项目协作开始使用活动 | | 第三阶段 | 规范关注者、附件命名和客户可见内容 | | 第四阶段 | 根据员工使用习惯,评估企业微信、飞书等提醒集成 | 对小白客户来说,先记住三个动作就够了:对外沟通用发送消息,内部留痕用备注,需要未来处理的事情用活动。等团队习惯把关键沟通放回Odoo,企业的销售、财务、项目和售后记录就会自然变得清晰。 本章我们把Odoo消息区、发送消息、内部备注、活动、关注者、附件、消息子类型和国内消息集成方案串了一遍。下一章会进入“报表”,继续看Odoo如何把日常业务数据变成可查看、可筛选、可导出的管理信息。 results matching "" =================== No results matching "" ====================== --- # 第十一章 消费税 · odoo实施参考手册-青岛欧姆网络科技 [第十一章 消费税](https://xp.odoohub.com.cn/) ======================================= 第十一章 消费税 ======== * [消费税计算逻辑](https://xp.odoohub.com.cn/sale/EXCISE_DUTY.html#%E6%B6%88%E8%B4%B9%E7%A8%8E%E7%9A%84%E8%AE%A1%E7%AE%97%E9%80%BB%E8%BE%91) * [在Odoo中的实现](https://xp.odoohub.com.cn/sale/EXCISE_DUTY.html#%E5%9C%A8Odoo%E4%B8%AD%E7%9A%84%E5%AE%9E%E7%8E%B0) * [定义消费税](https://xp.odoohub.com.cn/sale/EXCISE_DUTY.html#%E5%AE%9A%E4%B9%89%E6%B6%88%E8%B4%B9%E7%A8%8E) * [创建产品](https://xp.odoohub.com.cn/sale/EXCISE_DUTY.html#%E5%88%9B%E5%BB%BA%E4%BA%A7%E5%93%81) * [消费税计算](https://xp.odoohub.com.cn/sale/EXCISE_DUTY.html#%E6%B6%88%E8%B4%B9%E7%A8%8E%E8%AE%A1%E7%AE%97) 首先我们来明确**消费税**的定义, 消费税(Excise Duty)是对特定消费品(如烟草、酒类、燃油、奢侈品)在生产或进口环节征收的间接税。 在其他国家(如美国、澳大利亚、欧盟),消费税常被称为: | 英文名称 | 中文含义 | 说明 | | --- | --- | --- | | **Excise Duty** | 消费税 | 最常见的官方称呼 | | **Excise Tax** | 特定商品税 | 美国常用 | | **Sin Tax** | “罪恶税” | 政策或媒体中非正式称呼,意指抑制不良消费(烟、酒、赌博) | 消费税的计算逻辑 -------- 消费税通常是以产品的某种计量标准进行收取,比如对于酒类,通常的征收方式是根据酒精的含量。对于烟草,则是按支数或重量进行征收。具体的标准取决于当地税务部门的具体规定。 和普通增值税不同,消费税经常不是简单按销售金额乘以百分比。它可能按毫升、升、支、公斤、酒精度、尼古丁含量、排量等业务指标计算。因此,消费税实施前一定要先把计税口径问清楚。 常见消费税设计问题: | 问题 | 示例 | | --- | --- | | 计税基础 | 按金额、数量、容量、重量还是浓度 | | 税率分档 | 低浓度和高浓度是否不同税率 | | 是否叠加VAT | 消费税是否进入VAT计税基数 | | 产品字段 | 是否需要记录容量、浓度、等级 | | 报表口径 | 是否需要单独统计消费税金额 | 下面我们以意大利目前对烟油按含量(nicotine mg/ml)计价的做法,给出清晰的计算说明与几个常见示例: > 关键税率(意大利、2025 起) > 含 ≤15 mg/ml 的烟油(含无尼古丁产品):€0.15 / ml > 含 >15 mg/ml 的烟油:€0.20 / ml。 计算方法(规则) 1. 按瓶体积(毫升)计税:税额 = 税率(€ / ml) × 瓶体积(ml)。 (税率由该瓶中是否含超过 15 mg/ml 的尼古丁决定。) 2. 若要算每瓶应征消费税,直接用上式即可。 3. 若要计算到零售价上,通常先把消费税加入到价格基数,再按本地规则加上增值税(VAT),例如意大利标准 VAT 常见为 22%(在此示例中我们以 22% 做示范,但实际应按你适用的 VAT 率)。 > 注意:不同产品(如加热烟草、一次性电子烟等)和法规更新会有差异,最好以官方公告或税务顾问为准。 ### 示例1 — 典型 10 ml 瓶(低浓度) * 配置:10 ml, 6 mg/ml(≤15 mg/ml) * 税率:€0.15 / ml(适用低浓度档) 计算: * 消费税 = €0.15 × 10 = €1.50 / 瓶 * 若假设不含税出厂价(净价)为 €4.00,再加上消费税与 VAT(22%): * 含税前价格 = €4.00 + €1.50 = €5.50 * VAT = 22% × €5.50 = €1.21 * 最终含税零售价 ≈ €6.71(不含零售商加价) ### 示例 B — 10 ml 瓶(高浓度) * 配置:10 ml, 20 mg/ml(>15 mg/ml) * 税率:€0.20 / ml(高浓度档) 计算: * 消费税 = €0.20 × 10 = €2.00 / 瓶 * 若同样假设不含税出厂价为 €4.00: * 含税前价格 = €4.00 + €2.00 = €6.00 * VAT = 22% × €6.00 = €1.32 * 最终含税零售价 ≈ €7.32 在Odoo中的实现 --------- 现在我们以低浓度的烟油产品Dinner Lady为实际例子来看一下如何在Odoo中进行消费税的计算。 消费税这类场景通常不会只靠标准税率字段解决。它往往需要产品资料中维护额外属性,例如容量、浓度、是否属于特定消费品,然后在税额计算时按业务规则参与运算。 ### 定义消费税 由于消费税的计量方式与普通的税率不同,因此我们需要在原有税率的基础上标识出这个税率是消费税。 ![1](https://xp.odoohub.com.cn/sale/images/EXCISE1.png) > Is PLI此处用来标识包含烟油 ### 创建产品 接下来我们来创建一个产品Lemon Tart 10 ml ![2](https://xp.odoohub.com.cn/sale/images/EXCISE2.png) 此产品的尼古丁浓度为 6mg/ml, 烟油容量为10ML,产品售价为4€。 ### 消费税计算 我们创建一个销售订单来计算消费税,使用意大利常见的VAT 22%的税率。 ![3](https://xp.odoohub.com.cn/sale/images/EXCISE3.png) 由此可见,Odoo中的计算结果与我们的理论值完全相同。其关键节点就在于消费税的计税数量为烟油含量而非销售订单数量。 实施这类税种时,不建议直接让销售人员手工改税额。更稳的方式是让产品资料、税种配置和计算逻辑共同决定税额,销售只负责选择正确产品和数量。 如果客户所在行业涉及酒类、烟草、燃油、电子烟、奢侈品等特殊税种,应在销售上线前让财务或税务顾问确认规则,再决定是原生税率、财政结构、还是定制税额计算。 本章说明了消费税这类特定行业税种如何在销售流程中扩展标准税率逻辑。下一章会继续看第二单位,解决销售、采购和库存中主数量之外的辅助数量表达问题。 results matching "" =================== No results matching "" ====================== --- # 第六章 导入与导出 · odoo实施参考手册-青岛欧姆网络科技 [第六章 导入与导出](https://xp.odoohub.com.cn/) ======================================== 第六章 导入与导出 ========= Odoo原生支持数据的导入与导出。企业在上线前通常需要把客户、供应商、产品、库存和财务期初数据整理进系统;上线后,也经常需要通过导出数据进行检查、清洗和批量更新。本章我们就来看一下如何使用Odoo原生的导入导出功能,以及导入前后需要注意哪些风险。 导入不是复制粘贴。导入前要先清洗数据、准备字段、在测试库试导入,确认没问题后再进入正式库。 导入导出在哪里 ------- Odoo的导入导出通常出现在列表视图中。以客户列表为例,进入 **销售 -> 订单 -> 客户**,可以看到客户列表。 ![客户列表](https://xp.odoohub.com.cn/basic/images/basic-cn-import-export-customers-list.png) 点击左上角操作菜单,可以看到 **导入记录**、**导出全部** 等功能。 ![导入导出菜单](https://xp.odoohub.com.cn/basic/images/basic-cn-import-export-action-menu.png) 不同模型的菜单略有不同。客户、产品、供应商、销售订单、采购订单、库存调整等列表,大多都可以通过类似方式导入或导出。 什么数据适合导入 -------- 适合导入: * 客户; * 供应商; * 产品; * 产品类别; * 价格表; * 供应商价格; * 期初库存; * 期初应收应付; * 未完成销售订单; * 未完成采购订单。 不建议第一期导入: * 多年前的无效客户; * 已停用产品; * 已结清的历史单据明细; * 无法确认来源的库存; * 重复严重的联系人; * 没有负责人确认的旧系统字段。 第一期导入的目标不是“搬空旧系统”,而是让新系统能从上线日开始稳定运行。 导入前准备 ----- 导入前先做四件事: 1. 确认导入范围; 2. 清洗 Excel; 3. 准备测试导入文件; 4. 在测试库中先试导入。 不要直接在正式库第一次导入。哪怕只是客户和产品,也应该先在测试库试一次。 下载导入模板 ------ 进入导入页面后,Odoo会提示上传 Excel 或 CSV 文件。部分模型会提供导入模板,例如联系人导入模板。 ![导入页面](https://xp.odoohub.com.cn/basic/images/basic-cn-import-page.png) 建议第一次导入前先下载模板。模板的价值是让客户知道Odoo期待哪些字段,以及字段名称应该怎么写。 模板不是强制要求。只要 Excel 字段能正确匹配Odoo字段,也可以使用自己整理的文件。但对小白客户来说,从模板开始最稳。 导入文件字段 ------ 导入文件的列名最好和Odoo字段含义一致。 客户导入常用字段: | 字段 | 示例 | | --- | --- | | 名称 | 青岛欧姆网络科技 | | 公司/个人 | 公司 | | 邮箱 | info@example.com | | 电话 | 0532-xxxxxxx | | 手机 | 13800000000 | | 街道 | 市南区某某路 | | 城市 | 青岛 | | 省份 | 山东 | | 国家 | 中国 | | 税务识别码 | 统一社会信用代码 | | 标签 | VIP, 批发客户 | 产品导入常用字段: | 字段 | 示例 | | --- | --- | | 产品名称 | A001 手机壳 | | 内部参考 | A001 | | 条码 | 697000000001 | | 产品类型 | 实物 | | 可销售 | 是 | | 可采购 | 是 | | 销售价格 | 99 | | 成本 | 45 | | 产品类别 | 成品 | | 销售税 | 13% | | 采购税 | 13% | 导入前先确认字段含义,不要看到名字相似就随便匹配。 上传文件和字段匹配 --------- 上传 Excel 或 CSV 后,Odoo会进入字段匹配页面。 ![导入字段匹配](https://xp.odoohub.com.cn/basic/images/basic-cn-import-field-mapping.png) 左侧是导入文件和格式设置,右侧是字段匹配结果。 需要重点检查: | 区域 | 要检查什么 | | --- | --- | | 文件标题字段 | 第一行是否作为标题 | | 编码 | 中文是否乱码,通常使用 utf-8 | | 分隔符 | CSV 文件常见为逗号 | | 字段 | Excel 列是否匹配到正确Odoo字段 | | 注释 | 是否有错误、警告或无法识别字段 | 上图中,文件里的 `Name`、`Email`、`Phone` 分别匹配到了Odoo的名称、电子邮件、电话字段。这种匹配是正确的。 如果字段没有自动匹配,可以手动选择对应字段。不要为了通过导入,随便把不确定的列匹配到看起来相似的字段。 先测试,再导入 ------- 字段匹配完成后,先点击 **测试**,不要直接点 **导入**。 测试会检查: * 字段是否存在; * 数据格式是否正确; * 关联字段是否能匹配; * 必填字段是否缺失; * 日期、数字、金额是否能解析; * 是否有明显错误。 测试通过后,再点击 **导入**。如果测试不通过,要根据错误提示修改 Excel,再重新上传。 正式库导入前,最好先备份。尤其是客户、产品、库存、财务余额这类核心数据。 产品导入示例 ------ 产品也可以从产品列表进入导入导出。 ![产品列表](https://xp.odoohub.com.cn/basic/images/basic-cn-import-export-products-list.png) 产品导入比客户导入更敏感,因为产品会影响销售、采购、库存、POS、生产和财务。 产品导入前要特别确认: * 产品类型是实物、服务还是组合; * 是否可销售、可采购; * 单位是否正确; * 销售税、采购税是否正确; * 产品类别是否已经创建; * 条码是否唯一; * 内部参考是否唯一; * 成本和售价是否经过确认。 如果产品导错,后续订单、库存和成本都会受影响。 关联字段 ---- 导入时最容易出错的是关联字段。 例如产品导入中的产品类别、税率、单位,客户导入中的国家、省份、标签,都不是普通文本,而是要关联到Odoo已经存在的资料。 建议做法: * 先在Odoo中创建好类别、税率、单位等基础资料; * Excel 中使用和Odoo完全一致的名称; * 不确定时先导出一份Odoo示例数据; * 不要在同一列里混用简称、全称和别名。 如果关联字段匹配失败,导入会失败,或者生成错误的新资料。 外部 ID ----- 外部 ID 是Odoo用来识别导入记录的技术编号。 小白客户可以先这样理解: * 没有外部 ID 时,导入通常会创建新记录; * 有外部 ID 且匹配已有记录时,导入可以更新已有记录; * 外部 ID 适合后续反复更新同一批数据。 如果只是第一次少量导入,可以先不使用外部 ID。但如果要长期通过 Excel 更新产品价格、客户资料,建议让实施人员设计外部 ID 规则。 导出数据 ---- 导出常用于: * 批量检查数据; * 在 Excel 中清洗资料; * 做备份和留档; * 批量修改后再导入更新; * 给其他系统或人员使用。 在列表中选中记录后,可以从操作菜单导出。也可以使用 **导出全部** 导出当前模型数据。 ![选择记录后导出](https://xp.odoohub.com.cn/basic/images/basic-cn-import-export-list-selected.png) 导出时要注意数据权限。普通员工不一定应该导出全部客户、价格、财务数据。 导出后再更新 ------ 常见操作是: 1. 从Odoo导出产品或客户; 2. 在 Excel 中修改价格、电话、标签等字段; 3. 再导入Odoo更新。 这种方式很方便,但也有风险。 注意事项: * 不要删除关键识别字段; * 不要修改外部 ID; * 不要改变产品编码规则; * 不要用空值覆盖已有重要字段; * 导入前先备份; * 先在测试库试导入。 如果要更新价格,建议只保留产品识别字段和价格字段,不要把不相关字段一起导入。 CSV、Excel 和中文乱码 --------------- Odoo支持 Excel 和 CSV。对国内客户来说,优先建议使用 Excel 文件,因为格式更稳定。 如果使用 CSV,要注意: * 编码建议使用 utf-8; * 分隔符通常是逗号; * 中文不要乱码; * 日期格式要统一; * 金额不要混用中文符号; * 数字不要被 Excel 自动改成科学计数法。 如果上传后中文变成乱码,优先检查编码设置。 导入后的抽查 ------ 导入完成后必须抽查。 | 数据 | 抽查内容 | | --- | --- | | 客户 | 名称、邮箱、电话、地址、标签 | | 供应商 | 名称、付款条件、联系方式 | | 产品 | 编码、类型、价格、成本、税率 | | 库存 | 产品、仓库、库位、数量 | | 财务 | 客户、供应商、金额、日期 | 抽查不是看导入成功提示,而是打开实际记录确认业务能用。 常见错误 ---- | 错误 | 后果 | | --- | --- | | 客户重复 | 应收账款和销售历史分散 | | 产品重复 | 库存和销售统计混乱 | | 产品类型错误 | 实物不扣库存,服务要求发货 | | 税率错误 | 发票金额和税额错误 | | 单位错误 | 库存数量和采购数量不一致 | | 编码缺失 | 后续无法准确匹配更新 | | 日期格式错误 | 单据日期导入异常 | | 空值覆盖 | 原有资料被清空 | | 关联字段匹配失败 | 类别、税率、国家等无法正确关联 | | 直接正式库导入 | 错误数据进入生产环境,回滚困难 | 导入失败不可怕,可怕的是导入成功但数据是错的。 导入验收标准 ------ | 检查项 | 通过标准 | | --- | --- | | 数量 | 导入数量和 Excel 数量一致 | | 字段 | 关键字段进入正确位置 | | 关联 | 类别、税率、单位、国家等匹配正确 | | 去重 | 没有明显重复客户或产品 | | 抽查 | 随机记录打开后内容正确 | | 业务测试 | 导入的客户和产品可以创建订单 | | 权限 | 只有合适的用户可以导入和导出敏感数据 | | 备份 | 正式导入前已有备份或可回滚方案 | 导入导出是好工具,但它会放大数据质量。数据越干净,导入越省心;数据越乱,导入越容易变成项目事故。 results matching "" =================== No results matching "" ====================== --- # 第二章 库位管理 · odoo实施参考手册-青岛欧姆网络科技 [](https://xp.odoohub.com.cn/stock/LOCATION.html#) [](https://xp.odoohub.com.cn/stock/LOCATION.html#) FacebookGoogle+TwitterWeiboInstapaper [](https://xp.odoohub.com.cn/stock/LOCATION.html#) [](https://xp.odoohub.com.cn/stock/LOCATION.html#) [](https://xp.odoohub.com.cn/stock/LOCATION.html#) AA SerifSans WhiteSepiaNight [第二章 库位管理](https://xp.odoohub.com.cn/) ======================================= 第二章 库位管理 ======== * [库位类型](https://xp.odoohub.com.cn/stock/LOCATION.html#%E5%BA%93%E4%BD%8D%E7%B1%BB%E5%9E%8B) * [下架策略](https://xp.odoohub.com.cn/stock/LOCATION.html#%E4%B8%8B%E6%9E%B6%E7%AD%96%E7%95%A5) * [上架策略](https://xp.odoohub.com.cn/stock/LOCATION.html#%E4%B8%8A%E6%9E%B6%E7%AD%96%E7%95%A5) * [上架策略与调拨单的优先级](https://xp.odoohub.com.cn/stock/LOCATION.html#%E4%B8%8A%E6%9E%B6%E7%AD%96%E7%95%A5%E4%B8%8E%E8%B0%83%E6%8B%A8%E5%8D%95%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7) 默认情况下,系统并没有开启多库位管理,开启的方法在菜单设置-库存-仓库-存储位置,开启多库位管理: ![15](https://xp.odoohub.com.cn/stock/images/15.jpg) 开启之后,我们就可以在仓库-设置-库位中看到库位管理功能了。 库位类型 ---- odoo中的库位类型有以下几种: * 供应商:供应商库位,一个虚拟库位,代表供应商库位。 * 客户:客户库位,一个虚拟库位,代表客户的存储库位。 * 盘点库位:盘点库位,虚拟库位,代表盘点业务的源或者目的库位。 * 生产:生产库位,虚拟库位,消耗原材料,产生成品的库位。 * 视图:逻辑库位,本身不能存储库存,主要用于逻辑上的库位层级关系。 * 中转库位:多公司下多库位调拨的中转库位。 另外两个选项,可以标记此库位为一个报废库位还是一个退库库位。只有被标记为退库之后,才可以在退回向导中选择。 下架策略 ---- odoo中可以在库位上设置下架策略,但是此功能默认是没有开启的。需要给当前用户管理**推拉物流路线权限**后,可以看到: ![34](https://xp.odoohub.com.cn/stock/images/34.png) 给用户开启了此权限后,用户在仓库的管理页面就可以看到下面的配置信息: ![16](https://xp.odoohub.com.cn/stock/images/16.jpg) 我们之前说过,在产品分类中也有一个下架策略,产品分类中的下架策略的优先级是要高于此处的下架策略的。我们可以看个例子,我们先采购一批Play Car玩具,批次号为A00001,然后我们在此产品分类上设置LIFO,在stock库位上设置FIFO。然后,我们再采购一批同样的玩具,批次号为A00002,此时我们的库存: ![17](https://xp.odoohub.com.cn/stock/images/17.jpg) 此时,我们做一个销售单,按照我们的逻辑,由于产品分类设置了LIFO,那么优先出库的应该是A00002批次的产品。 ![18](https://xp.odoohub.com.cn/stock/images/18.jpg) 由上图可以看出,优先查找的库位确实是A00002批次的库存。 关于下架策略,官方还提供了另外一种下架方式,根据产品的保质期进行选择。开启的方式为先启用库存-追溯性-序列号,然后选择设置过期日期: ![19](https://xp.odoohub.com.cn/stock/images/19.jpg) 启用之后,我们可以看到下架策略处多出了一个FEFO,即先到期先出库。 ![20](https://xp.odoohub.com.cn/stock/images/20.jpg) results matching "" =================== No results matching "" ====================== --- # 第五部分 仓库管理 · odoo实施参考手册-青岛欧姆网络科技 [](https://xp.odoohub.com.cn/sections/SECTION4.html#) [](https://xp.odoohub.com.cn/sections/SECTION4.html#) FacebookGoogle+TwitterWeiboInstapaper [](https://xp.odoohub.com.cn/sections/SECTION4.html#) [](https://xp.odoohub.com.cn/sections/SECTION4.html#) [](https://xp.odoohub.com.cn/sections/SECTION4.html#) AA SerifSans WhiteSepiaNight [第五部分 仓库管理](https://xp.odoohub.com.cn/) ======================================== results matching "" =================== No results matching "" ====================== --- # 第九章 上架规则 · odoo实施参考手册-青岛欧姆网络科技 [](https://xp.odoohub.com.cn/stock/PUTAWAY.html#) [](https://xp.odoohub.com.cn/stock/PUTAWAY.html#) FacebookGoogle+TwitterWeiboInstapaper [](https://xp.odoohub.com.cn/stock/PUTAWAY.html#) [](https://xp.odoohub.com.cn/stock/PUTAWAY.html#) [](https://xp.odoohub.com.cn/stock/PUTAWAY.html#) AA SerifSans WhiteSepiaNight [第九章 上架规则](https://xp.odoohub.com.cn/) ======================================= 第九章 上架规则 ======== * [上架规则与调拨单的优先级](https://xp.odoohub.com.cn/stock/PUTAWAY.html#%E4%B8%8A%E6%9E%B6%E8%A7%84%E5%88%99%E4%B8%8E%E8%B0%83%E6%8B%A8%E5%8D%95%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7) * [子库位策略](https://xp.odoohub.com.cn/stock/PUTAWAY.html#%E5%AD%90%E5%BA%93%E4%BD%8D%E7%AD%96%E7%95%A5) 与下架策略相对应的功能是上架规则,对于指定到达的产品,设置默认的入库库位。在仓库-设置-仓库管理-上架规则中进行管理: > 上架规则的前提是要开启多库位管理 ![putaway](https://xp.odoohub.com.cn/stock/images/putway3.png) ![putway4](https://xp.odoohub.com.cn/stock/images/putway4.png) 上架规则需要设置以下几项: * 产品:上架规则应用于哪个产品 * 产品到达:产品抵达的指定库位,只能是父级库位 * 产品类型:上架规则作用于哪个产品类型 * 存储到:需要存储的目的库位 * 子库位\*:存储到子库位的策略 * 存储类别:基于产品或数量的存储规则(参考存储类别一章) * 公司:多公司条件下指定的公司 > 子库位为18.0新增字段 也就是说,假如我们这里有一个产品P,和两个库位 WH/L1和WH/L2,如果我们希望在采购单确认的时候把入库单上架到L2库位,那么我就这样设置: 产品:P, 产品到达:WH, 存储到: WH/L2。 上架规则与调拨单的优先级 ------------ 读者在使用odoo的过程中可能会碰到比较迷惑的一种操作,假设我们这里有一张调拨单WH/INT/0002,我们设置的其源库位是BMW Location,目的库位是Audi Location,我们希望的操作是将一辆错误放到BMW库位的A4L调拨回Audi库位,但是实际操作过程中却出现了下面诡异的行为: ![putway](https://xp.odoohub.com.cn/stock/images/putway.png) 这显然与我们直观的逻辑不符,我们明明指明了目的库位是Audi Location,但是在检查库存的时候生成的目的库位居然依旧是BMW Location。那么这究竟是Odoo背后的逻辑错误,还是我们误操作了什么呢? 经过我们对源代码的研究,发现了其逻辑设计的思路,其背后的在作祟的就是上架规则。odoo的**上架规则优先级要高于调拨单的目的库位设置**,因为我们设置了A4L的在WH仓库的上架规则,因此,这里份简单上设置的目的库位就无效了。 ![putway2](https://xp.odoohub.com.cn/stock/images/putway2.png) 子库位策略 ----- 子库位策略有以下三种: * 无:不使用子库位策略。 * 上次使用:使用最近使用过库位作为目标库位。 * 最近位置:使用存储类别绑定的库位中距离最近的库位。 results matching "" =================== No results matching "" ====================== --- # 第三章 调拨类型 · odoo实施参考手册-青岛欧姆网络科技 [](https://xp.odoohub.com.cn/stock/README3.html#) [](https://xp.odoohub.com.cn/stock/README3.html#) FacebookGoogle+TwitterWeiboInstapaper [](https://xp.odoohub.com.cn/stock/README3.html#) [](https://xp.odoohub.com.cn/stock/README3.html#) [](https://xp.odoohub.com.cn/stock/README3.html#) AA SerifSans WhiteSepiaNight [第三章 调拨类型](https://xp.odoohub.com.cn/) ======================================= 第三章 调拨类型 ======== **调拨类型**是odoo中对调拨单的分类依据,我们可以根据用途的不同把调拨单分成不同类型的调拨,对某一类的调拨进行集中管理。 * [基本属性](https://xp.odoohub.com.cn/stock/README3.html#%E5%9F%BA%E6%9C%AC%E5%B1%9E%E6%80%A7) * [操作类型](https://xp.odoohub.com.cn/stock/README3.html#%E6%93%8D%E4%BD%9C%E7%B1%BB%E5%9E%8B) * [首选序列](https://xp.odoohub.com.cn/stock/README3.html#%E9%A6%96%E9%80%89%E5%BA%8F%E5%88%97) * [序列前缀](https://xp.odoohub.com.cn/stock/README3.html#%E5%BA%8F%E5%88%97%E5%89%8D%E7%BC%80) * [退货类型](https://xp.odoohub.com.cn/stock/README3.html#%E9%80%80%E8%B4%A7%E7%B1%BB%E5%9E%8B) * [欠单操作](https://xp.odoohub.com.cn/stock/README3.html#%E6%AC%A0%E5%8D%95%E6%93%8D%E4%BD%9C) * [自动合并](https://xp.odoohub.com.cn/stock/README3.html#%E8%87%AA%E5%8A%A8%E5%90%88%E5%B9%B6) * [停止自动合并](https://xp.odoohub.com.cn/stock/README3.html#%E5%81%9C%E6%AD%A2%E8%87%AA%E5%8A%A8%E5%90%88%E5%B9%B6) * [入库单批次号逻辑](https://xp.odoohub.com.cn/stock/README3.html#%E5%85%A5%E5%BA%93%E5%8D%95%E6%89%B9%E6%AC%A1%E5%8F%B7%E9%80%BB%E8%BE%91) * [库存移动](https://xp.odoohub.com.cn/stock/README3.html#%E5%BA%93%E5%AD%98%E7%A7%BB%E5%8A%A8) * [库存移动明细](https://xp.odoohub.com.cn/stock/README3.html#%E5%BA%93%E5%AD%98%E7%A7%BB%E5%8A%A8%E6%98%8E%E7%BB%86) * [负库存](https://xp.odoohub.com.cn/stock/README3.html#%E8%B4%9F%E5%BA%93%E5%AD%98) 下面是一个调拨类型的例子: ![10](https://xp.odoohub.com.cn/stock/images/10.png) 基本属性 ---- 我们先来看几个调拨类型的基本属性 ### 操作类型 默认情况下, Odoo可以把操作类型分为以下三种: * 收货:从客户或供应商等三方库位入库的操作 * 交货: 从内部库位出库给客户或供应商 * 内部调拨:内部库位之间的相互调拨 如果安装了更多功能,也有可能会有其他类型的出现,比如生产、维修等等。 ### 首选序列 每个调拨类型可以指定一个[序列](https://xp.odoohub.com.cn/stock/README3.html) ,用来指定该调拨类型下的调拨单的单号的生成规则。 ### 序列前缀 序列前缀用来指定生成调拨单的单号前缀 ### 退货类型 退货类型用来指定该调拨类型的逆向操作类型,比如,入库类型的反向操作是出库,同样的,出库的反向操作是入库。 ### 欠单操作 指定发生欠单时的默认动作, 支持三种类型: * 询问: 弹窗询问是否生成欠单 * 总是:不询问直接生成欠单 * 从不:不询问直接忽略欠货数量 自动合并 ---- Odoo在新生成调拨的时候,会检查当前是否存在还没完成的相似的调拨。所谓相似,是指满足以下条件的调拨单: * 具有相同的源库位和目的库位 * 属于同一种调拨类型 * 隶属于同一个需求组 * 没有被打印过 * 状态是草稿/确认/等待/部分可用/就绪状态中的一种 如果调拨单还指定了联系人且源库位或目的库位是中转库, 那么还需要满足具有相同的联系人这个条件。 相似的调拨单将不会新增,而是将调拨明细添加到既有的调拨单中。 ### 停止自动合并 但是在实际应用中,某些情况下,我们希望不自动合并而是每次都强制创建一个新的调拨单出来。这个时候可以安装我们的[仓库解决方案模块](https://odoohub.com.cn/) ,安装之后,在调拨类型中会多出一个控制是否合并到现在调拨单中的字段: ![11](https://xp.odoohub.com.cn/stock/images/11.png) 当我们勾选了这个总是新建的选项之后,系统将不会再将相似的调拨进行合并,而是每次都新建一个调拨单出来。 入库单批次号逻辑 -------- 入库类型上面有两个选项 * 创建新的批次 * 使用已有批次 这两个选择会在调拨单上显示不同的字段,创建新的批次会显示一个字符串的文本,以供用户输入新的批次号,使用已有批次则会显示一个多对一的字段,让用户即可以创建新的批次,也可以选择既有的批次。 批次显示文本批次号的逻辑是: * 启用了批次跟踪且调拨单类型启用了创建新批次,且调拨单状态尚未完成 其他时候均使用多对一的批次号 库存移动 ---- ### 销售策略对出库单的影响 我们在销售单一节中曾经提到过出库策略设置,之前仅仅说明了会对订单交付时间的影响。实际上,订单策略的选择还会对出库单的状态造成影响。下面我们就详细分析其内部的逻辑。 销售单中的两个选择**尽快**和**当全部产品就绪时**对应技术上的两个值:direct和one,这两个值不是随便设置的,这两个值与库存移动(stock.move)中的移动类型(move\_type)的选项相对应。 出库单的状态与明细中的库存移动(stock.move)有着十分紧密的联系,具体地来说,当出库单需要确定状态时,会先将明细中的库存移动按照**状态**和**数量**进行排序,具体的状态优先级如下: * confirmed: 确认 * partially\_available:部分就绪 * waiting:等待其他操作 * assigned:就绪 排序以后,根据第一行的库存移动进行判断: 1. 如果第一行移动的移动类型是**当全部产品就绪**,系统会把第一行作为**最重要的移动**,并进行如下的逻辑判断: 1. 如果最重要的移动状态是确认且数量有效,则整个出库单的状态为确认,如果数量无效,则出库单状态为就绪。 2. 如果最重要的移动状态是部分就绪,则整个出库单为确认状态,并不会显示部分就绪状态。 3. 如果最重要的移动状态是等待其他操作或者就绪,整个出库单状态为等待其他操作或者就绪。 2. 如果第一行的库存移动状态非就绪且其他库存移动中有处于就绪或部分就绪的状态时,整个出库单的状态是部分就绪。 3. 如果不属于上述两种情况,则取**最后一行**作为**最不重要的库存移动**,并进行如下判断: 1. 如果最不重要库存移动状态是确认且库存移动数量为0,则整单状态为就绪。 2. 否则以最不重要的库存移动状态作为整单状态。 库存移动明细 ------ 每个库存移动实际上都有一个库存移动明细表与之对应,某些调拨类型默认情况下不显示移动明细,想要手动开启,可以到设置-调拨类型-显示明细操作,开启明细显示: ![35](https://xp.odoohub.com.cn/stock/images/35.png) > 注意: 此字段在后续版本中即将被删除 开启之后,我们在调拨单中就可以看到调拨的明细选项卡: ![36](https://xp.odoohub.com.cn/stock/images/36.png) 负库存 --- odoo是支持负库存的,如果强制把一个SKU从一个库位移到另外一个库位,即使源库位库存不足或不存在指定批次/序列号的库存,依旧可以成功,其结果是源库位会多出一个数量为负的库存,已匹配凭空产生的库存。这种操作就是负库存。 如果不想系统产生负库存,可以安装OCA开发的[禁止负库存模块](https://apps.odoo.com/apps/modules/13.0/stock_no_negative/) 。 results matching "" =================== No results matching "" ====================== --- # 第八章 条码规则 · odoo实施参考手册-青岛欧姆网络科技 [](https://xp.odoohub.com.cn/stock/Barcode.html#) [](https://xp.odoohub.com.cn/stock/Barcode.html#) FacebookGoogle+TwitterWeiboInstapaper [](https://xp.odoohub.com.cn/stock/Barcode.html#) [](https://xp.odoohub.com.cn/stock/Barcode.html#) [](https://xp.odoohub.com.cn/stock/Barcode.html#) AA SerifSans WhiteSepiaNight [第八章 条码规则](https://xp.odoohub.com.cn/) ======================================= 第八章 条码规则 ======== Odoo支持扫码识别产品、序列号、批次号等应用,对于产品编码、批次和序列号的优先顺序以及解析规则,odoo使用了一个专有对象来用来处理,它就是条码规则。 UPC和EAN ------- 首先我们先来了解一下条码的基础知识,现行的两种流行的编码模式是UPC和EAN。UPC(universal product code)主要应用于美国和加拿大,12位条码。EAN(European Article Number)则应用于全球其他地方,13位条码。13位的EAN称为标准版,EAN13。缩减版的8位EAN,则称为EAN8。 ![18](https://xp.odoohub.com.cn/stock/images/18.png.crdownload) UPC和EAN码可以相互转换,UPC在最前面加0即可变成ean码。 GS1标准 ----- GS1标准为企业创造了一套共通语言,让企业可独有识别、准确撷取及自动分享产品、位置及资产的重要信息。 我们的标准可作为企业于环球贸易的共通语言,提升供应链的透明度。 全球独有标识码,用以识别从制造商到消费者供应链上的贸易项目、物流单位、位置和资产。企业可将GS1标识码应用于不同的产品、文件、位置等事物。 | GS1标识码 | 识别对象 | 例子 | | --- | --- | --- | | GTIN (全球贸易货品编码) | 产品 | 网上销售的衣服、商店售卖的蛋糕 | | GLN (全球位置编码) | 合作伙伴和位置 | 企业、仓库、工厂、商店 | | SSCC (货运容器序号) | 物流单位 | 货盘、集装箱、防滚架、邮包 | | GRAI (全球可回收资产标识码) | 用作运送货品的可回收用具 | 货盘底架、条板箱、集装箱 | | GIAI (全球个体资产标识码) | 高价值仪器及其他资产 | 医疗器材、生产器材 | | GSRN (全球服务关系标识码) | 个人 | 顾客忠诚度计划成员、病人、雇员 | | GDTI (全球文件类别标识码) | 文件 | 税单、货运单、保单、驾驶执照等文件 | | GINC (全球托运标识码) | 货物托运 | 组成一次托运的所有物流单位 | | GSIN (全球货运标识码) | 以同一发货通知或提单之名义运送的物流单位群组 | 海关对进出口货物进行识别 | | GCN (全球优惠券编码) | 优惠券 | 实体现金券、电子或流动优惠券 | | CPID (组件/部件标识码) | 组件及部件 | 须经过最少一轮工序才可成为最终产品的组件或部件,例如洗衣机变频马达和喉管 | 条码规则 ---- 认识了UPC和EAN,我们就可以看一下Odoo的条码规则了,我们来看一个典型的条码规则: ![18](https://xp.odoohub.com.cn/stock/images/18.png) 条码规则有下面的几个属性: * 条码规则: 条码规则的标识名称 * UPC/EAN转换:配置UPC/EAN转换规则 可选项有4个:总是、EAN-13->UPC-A、UPC-A -> EAN-13和从不 * 使用GS1标准: 如果使用GS1标准,该条码规则将只接受GS1-128规则的编码 条码规则决定了条码的组织方式和识别规则,当条码被扫描到时,将使用第一个匹配到的规则。条码规则是由正则表达式组成的,如果正则表达式匹配了条码的前缀,那么该条码规则就被匹配到了。 正则表达式中同时可以指定数值的类型和位置,例如,产品的价格和重量等。数值使用{N}的方式,支持高精度的浮点数(Decimal)则使用{D}的方式。例如{NNNDD}表示3位数字和2位小数。 ### 规则定义 当我们打开要给条码规则的条目,我们可以看到如下的界面: ![19](https://xp.odoohub.com.cn/stock/images/19.png) * 规则名称: 该规则使用的名称 * 序号:该规则的序号,该序号将决定匹配的顺序 * 类型:规则支持的类型,odoo中支持条码扫码的场景类型 * 编码:编码规则 * 编码模式: 正则表达式的匹配模式 results matching "" =================== No results matching "" ====================== --- # 第六章 订货规则 · odoo实施参考手册-青岛欧姆网络科技 [](https://xp.odoohub.com.cn/stock/README6.html#) [](https://xp.odoohub.com.cn/stock/README6.html#) FacebookGoogle+TwitterWeiboInstapaper [](https://xp.odoohub.com.cn/stock/README6.html#) [](https://xp.odoohub.com.cn/stock/README6.html#) [](https://xp.odoohub.com.cn/stock/README6.html#) AA SerifSans WhiteSepiaNight [第六章 订货规则](https://xp.odoohub.com.cn/) ======================================= 第六章 重订货规则 ========= Odoo支持根据系统运行情况自动生成采购单进行补货,这里运行的机制是补货规则,我们可以根据不同的产品对于不同的库位和库存水平指定多样化的补货规则,以满足我们库存管理的需要。 * [基本概念](https://xp.odoohub.com.cn/stock/README6.html#%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5) * [补货逻辑](https://xp.odoohub.com.cn/stock/README6.html#%E8%A1%A5%E8%B4%A7%E9%80%BB%E8%BE%91) * [在途数量](https://xp.odoohub.com.cn/stock/README6.html#%E5%9C%A8%E9%80%94%E6%95%B0%E9%87%8F) 基本概念 ---- 重订货规则(Reordering Rules)是Odoo提供给我们用来自动补货的逻辑规格则工具,它的基本属性有: * 产品: 该订货规则适用的产品 * 库位:该订货规则生效的库位 * 在手数量:当前该产品的在手数量 * 预测数量:当前该产品的预测数量 * 路线: 使用该规则时首选的路线 * 最小数量: 订货下限数量 * 最大数量: 订货上限数量 * 待订购:当前等待订货数量 * 单位: 计量单位 补货逻辑 ---- 举个例子,假设我们这里有一个猪肉需要采购,我们在系统中做了如下的一个重订货规则: ![12](https://xp.odoohub.com.cn/stock/images/12.png) 我们设置猪肉的最低采购量是10kg,最高采购量是100kg,当前在手库存是0,那么当我们点击立即补货的按钮的时候,系统会自动帮我们建立一个100kg的采购单。 ![13](https://xp.odoohub.com.cn/stock/images/13.png) 假如这个时候我们使用了50kg猪肉去生产肉包,那么当我们的猪肉库存消耗到100kg以内(例如55kg)的时候, 系统将自动帮我们新建一个新的采购单: ![14](https://xp.odoohub.com.cn/stock/images/14.png) 新建采购单的数量是100kg. 如果我们将猪肉消耗到了10kg以下,会是什么效果呢? ![15](https://xp.odoohub.com.cn/stock/images/15.png) 由此我们可以看出,系统补货总会以补货规则的上限来作为采购订单的采购数量。 在途数量 ---- 现在考虑另外一种情况,就是当我们进行补货的时候,猪肉的库存已经不足,且系统中有其他的业务正在等待猪肉的入库(销售/生产/调拨)。此时,系统补货会依据当前缺货数量和补货上限的总数作为补货数量。 例如,我们在内部做了一个调拨,从Stock库调拨100kg的猪肉去Demo库。因为我们当前只有5kg的猪肉可用,因此调拨不能完成。 ![16](https://xp.odoohub.com.cn/stock/images/16.png) 此时我们发现系统给我们自动生成的采购数量是195kg ![17](https://xp.odoohub.com.cn/stock/images/17.png) 此补货的逻辑是: 采购数量 = 在途数量(缺货/在途入) + 订货规则上限数量 - 在手数量 也就是 100kg + 100kg - 5kg = 195kg。 results matching "" =================== No results matching "" ====================== --- # 第三十七章 小程序商城专业版 · odoo实施参考手册-青岛欧姆网络科技 [第三十七章 小程序商城专业版](https://xp.odoohub.com.cn/) ============================================= 小程序商城专业版 ======== 在很多企业的数字化项目里,小程序商城的第一阶段,通常目标很明确: **商品能展示,客户能下单,订单能进 Odoo,支付和地址流程能跑通。** 这一步很重要,因为它解决的是“线上交易入口”的问题。 但商城真正上线以后,企业很快会进入第二个阶段: * 如何让客户愿意复购? * 如何给不同客户不同权益? * 如何做优惠券、积分、会员价、自动促销? * 如何让小程序不只是一个“下单工具”,而是企业经营客户、沉淀数据、提升转化的运营入口? 这就是 Odoo 小程序商城专业版要解决的问题。 专业版并不是重新做一套独立的营销系统,而是在基础版商城能力之上,继续复用 Odoo的价目表、Discount and Loyalty、销售订单、客户和支付体系,让小程序成为面向客户的运营入口,让 Odoo 继续作为规则源和业务中台。 简单来说:基础版解决“能买”,专业版解决“怎么买得更灵活、怎么运营得更精细”。 一、为什么需要专业版:商城不只是交易,更是客户运营 ------------------------- 基础版商城可以完成商品、分类、购物车、订单、地址、支付、个人中心等核心流程。对于很多企业来说,这已经能支撑小程序商城上线。 但当企业开始真正运营商城,就会遇到更细的问题。 比如: * 新客户能不能领取新人券? * 老客户能不能享受会员价? * 下单后能不能返积分? * 积分能不能在下一单抵扣? * 特定客户或客户标签能不能看到专属优惠券? * 自动满减和优惠券能不能统一由后台规则控制? * 客户取消订单或退款后,积分、卡券、钱包余额能不能正确处理? 这些问题如果都在小程序前端单独写一套规则,短期看似快,长期就容易出现价格不一致、退款不好回滚、财务不好对账、活动不好升级的问题。 专业版的核心设计原则是:**充分利用Odoo原生的营销规则和订单计算,小程序负责渠道展示和用户体验**。 也就是说,优惠券、积分、会员价、促销规则尽量使用Odoo原生或Odoo后台增强能力来管理;小程序端只负责把这些能力以更适合微信用户的方式展示出来,让客户能看懂、能领取、能使用。 这样做的好处很直接:前端体验轻,后台规则稳,订单数据和财务口径也更容易统一。同时,如果客户有门店管理需求,那么这套方案可以做到POS门店、Web网站商城和小程序三端统一,不论客户从哪里注册,到哪里使用,都能获取一致的完美体验。 ![alt text](https://xp.odoohub.com.cn/chapter10/image-1.png) 二、专业版能力:围绕优惠、积分、会员和卡券构建运营闭环 --------------------------- ### 1\. 后端报价单预览:让价格计算回到Odoo 专业版中,一个非常关键的变化是:结算和优惠计算不再依赖前端自己算。基础浏览和加购可以保持小程序本地购物车体验,但一旦进入结算、优惠券选择、积分抵扣等环节,就由 Odoo 后端生成或更新草稿报价单,统一计算价目表、优惠券、自动促销、积分、卡券和应付金额。 典型链路是: 小程序购物车 -> 进入订单确认 -> Odoo 后端报价单预览 -> 返回商品小计、优惠明细、积分明细、应付金额 -> 用户确认提交 -> 同一张报价单转为正式订单并支付 这一步看似技术性很强,真正的业务价值在于:价格和优惠结果以后端为准。 客户看到的结算金额、后台销售订单上的优惠行、支付金额和后续对账口径,可以尽量保持一致。对于运营活动较多的商城,这一点非常关键。 ### 2\. 优惠券:支持公开领取、定向领取和后台发放 专业版支持将Odoo的Discount and Loyalty活动开放到小程序渠道。优惠券不只是“发一张券”这么简单。不同企业常见的发放方式会不一样: * 公开领取:所有符合条件的登录客户都可以看到并领取 * 定向领取:只有指定客户或指定客户标签命中的用户可以看到并领取 * 后台发放:运营人员在 Odoo 后台发放给指定客户,小程序只展示客户已经拥有的券 这让企业可以更灵活地做客户运营。 ![alt text](https://xp.odoohub.com.cn/chapter10/a38c74e159ca0ce70caf0fa6fcd6b0e4.jpg) 例如,新客户可以领取新人券;老客户可以看到专属复购券;重点客户可以由后台手动发放专属优惠;非目标客户即使知道券码,也会在后端校验时被拦截。 专业版强调一点:优惠券资格不能只靠前端隐藏。 领取、应用、订单预览、正式下单等环节都应由后端重复校验,确保活动规则可靠执行。 ### 3\. 自动促销:活动由Odoo统一应用 除了客户主动选择优惠券,专业版还支持自动促销。 ![alt text](https://xp.odoohub.com.cn/chapter10/4e3d80753a35b0ec0cbb4d5f3b78b023.jpg) 例如满减、满折、指定商品活动、自动折扣等,都可以基于 Odoo 的营销规则进行配置。客户进入结算时,系统根据订单内容自动判断是否满足活动条件,并返回优惠明细。 这里需要区分两个概念: * 优惠券:通常由用户领取或选择使用 * 自动促销:由 Odoo 根据规则自动应用 自动促销不应该简单塞进优惠券选择页里,否则客户会误以为所有活动都需要手动选择。专业版会更清晰地把自动促销作为订单优惠明细展示,让客户知道自己已经享受了什么优惠。 ![alt text](https://xp.odoohub.com.cn/chapter10/image-2.png) 这对运营也很友好:活动规则在 Odoo 后台维护,小程序负责展示结果,不需要每次活动都改前端代码。 ### 4\. 积分体系:下单可累计,也可用于抵扣 专业版积分能力基于Odoo原生 Discount and Loyalty 的积分活动实现,不单独维护一套小程序积分账。 ![alt text](https://xp.odoohub.com.cn/chapter10/b79c5ccbffcb3e37b5712cd634047cfd.jpg) 当前专业版积分场景包括: * 个人中心展示积分余额 * 我的积分页展示积分账户和积分明细 * 订单确认页展示预计返积分 * 订单确认页支持积分抵扣 * 积分不可用时展示中文原因 * 订单取消时依赖 Odoo 逻辑回滚积分历史和卡余额 这里有一个细节很重要:预计返积分不是当前可抵扣积分。 预计返积分是客户完成本单后未来可能获得的积分;而可抵扣积分来自客户当前已有的积分余额,并且要满足 Odoo 后台设置的抵扣规则。 比如客户下单时看到“本单预计获得 50 积分”,这50积分不能立刻在本单抵扣。客户当前能不能抵扣,要看他账户里已有多少积分,以及后台是否配置了对应奖励。 这类边界说清楚了,客户体验才不会变成“我看到了积分,为什么不能马上用”的误会现场。 ### 5\. 会员等级与会员价:从小程序走向全渠道会员中枢 专业版会员体系的设计,不只是服务小程序。 ![alt text](https://xp.odoohub.com.cn/chapter10/22cbbba44988413e96097a0b8544a82a.jpg) 会员等级应成为Odoo客户主数据的一部分,兼容后台销售、网站商城、POS 和小程序商城。这样客户无论在哪个渠道消费,会员身份和会员权益都能统一管理。 专业版会员能力包括: * 会员等级 * 成长值 * 成长值流水 * 会员等级对应客户标签 * 会员等级对应会员价目表 * 会员专属营销活动 * 小程序会员权益页 ![alt text](https://xp.odoohub.com.cn/chapter10/ea2c570daccd2f2268aea15341bff01b.jpg) ![alt text](https://xp.odoohub.com.cn/chapter10/f8f9ea5599dc3fe19bb9cee9dd903604.jpg) 会员价优先通过 Odoo 原生价目表实现。客户达到某个会员等级后,可以同步对应价目表,小程序展示会员价,后台销售也可以复用同一套价格体系。 ![alt text](https://xp.odoohub.com.cn/chapter10/d3de642f900d921d7707ddc66c323ceb.jpg) 这比在小程序里单独写“会员价折扣”更稳,因为价格规则仍然回到Odoo统一管理,避免出现小程序一个价、后台销售一个价、财务对账又一个价。 ### 6\. 礼品卡与电子钱包:为更完整的营销和售后做准备 专业版还规划并接入了礼品卡、电子钱包等余额类卡券能力。 ![alt text](https://xp.odoohub.com.cn/chapter10/205fb874f329e61a9c4eeb96136bd215.jpg) 这类能力不仅是营销问题,也会涉及支付抵扣、退款恢复、财务确认和余额对账。因此它比普通优惠券更复杂,需要更谨慎地接入。 专业版的思路是:礼品卡和电子钱包的使用、抵扣、退款恢复都要有清晰快照和记录,避免客户退款后余额重复恢复,或者订单售后时账务口径不清。 对企业来说,这意味着商城可以逐步支持更丰富的运营玩法,但仍然保持后台可查、规则可控、对账有据。 ![alt text](https://xp.odoohub.com.cn/chapter10/image.png) 三、总结:专业版让小程序商城从交易入口升级为运营入口 -------------------------- Odoo小程序商城专业版的价值,不是简单多几个页面,也不是把优惠券、积分、会员功能堆到前端。 它真正解决的是:企业如何在微信小程序这个轻量入口里,承接更专业的客户运营能力,同时又不脱离 Odoo 后端的订单、客户、价格、营销和财务体系。 基础版让客户可以浏览商品、加入购物车、提交订单、完成支付;专业版则进一步加入优惠券、自动促销、积分抵扣、会员等级、会员价、礼品卡、电子钱包等能力,让商城从“能下单”走向“能运营”。 ![alt text](https://xp.odoohub.com.cn/chapter10/image-3.png) 更重要的是,专业版坚持让 Odoo 作为规则源。营销规则在 Odoo 后台配置,价格和优惠由 Odoo 报价单计算,小程序只做渠道适配和用户体验。这种方式更适合企业长期使用,也更方便后续向企业版扩展物流轨迹、企业 IM、短信通知等能力。 一个真正好用的小程序商城,不只是界面漂亮,更要后端接得住、规则管得住、订单对得上、客户沉淀得下来。 青岛欧姆网络科技长期深耕 Odoo 实施、定制开发和本地化解决方案。我们更关注系统是否真的服务业务,是否能从基础上线走向持续运营,是否能为企业后续扩展留下稳定空间。 results matching "" =================== No results matching "" ====================== --- # 外贸定制化服装 · odoo实施参考手册-青岛欧姆网络科技 [外贸定制化服装](https://xp.odoohub.com.cn/) ====================================== 外贸定制类 ===== 业务背景 ---- 客户业务属于定制化外贸服装,通常由他的客户提出定制化产品需求,然后下单给工厂进行生产,工厂生产完成后发货交付。期间由跟单进行发货时间的安排,尾款的跟进和售后服务等等。本例由Odoo16.0协助完成。 SKU设计 ----- 由于客户的业务特点更偏向于按需生产,实际业务中客户也不对库存进行管控(通常由工厂进行直接发货), 但是需要对物流单号进行跟踪查询,因此这里我们把客户的所有的SKU都设计成了消耗品。 订单处理流程 ------ ### 销售订单 首先,由销售人员在销售模块中进行下单。销售订单分为**大货**和**样品单**两类。 ![1](https://xp.odoohub.com.cn/example/images/1.png) ![2](https://xp.odoohub.com.cn/example/images/2.png) 销售人员可以从订单中很快看出此订单是样品单还是大货单。 确定好产品和数量之后,点击确定为销售订单。同时,将客户的**预计时间**(ETD)和**供应商的预计发货时间**(ETA)填到相应的信息栏中。 ### 生成采购订单 由于客户基本全部采用外协工厂,不直接管控工厂的物料和生产情况。因此这里简单地将工厂用作了供应商。直接把需要生产的订单以采购订单的方式给到工厂。 为了方便客户操作,我们在销售订单中添加了创建采购单的按钮,由销售订单直接创建采购单,并自动关联。 ![3](https://xp.odoohub.com.cn/example/images/3.png) ### 供应商更新订单状态 这里我们给供应商开放了系统用户权限,供应商登录系统后可以看到自己的订单,并根据自己的情况更新订单的价格和状态。 为了方便客户和供应商之间的信息共享,我们开发了**标记**功能,由跟单人员或供应商对订单的状态进行更新,这样方便订单的相关人员共享信息。 ![4](https://xp.odoohub.com.cn/example/images/4.png) 订单的状态可以在设置中进行自定义。 ### 发货 一旦工厂生产完成,跟单人员或供应商就可以将此订单标记为生产完成。然后订单进入QC并发货阶段。 QC使用odoo原生功能,完成QC之后,填写物流商和单号,点击验证完成发货。 ![5](https://xp.odoohub.com.cn/example/images/5.png) ### 物流状态更新 借助DHL、17Track等物流平台的API,我们可以在订单中方便地查询到货物的运输状态。 ![6](https://xp.odoohub.com.cn/example/images/6.png) 并且在货物送达后作出提醒或其他动作。 订单状态实时跟踪 -------- 为了一目了然地了解各个订单的当前状态,我们在订单列表中显示了订单的付款状态、物流状态等信息。 ![7](https://xp.odoohub.com.cn/example/images/7.png) 这样跟单可以迅速跟进订单状态进行下一步的动作处理。 运费计算 ---- 通过各物流商的API接口,我们可以在订单中添加运费。 ![8](https://xp.odoohub.com.cn/example/images/8.png) 也可以根据物流商提供的运费账单进行导入,生成物流商的运费采购订单。 ![9](https://xp.odoohub.com.cn/example/images/9.png) 生成物采购订单与销售订单关联,会在统计中进行统计。 费用统计 ---- 与订单有关产生的费用,我们也跟订单进行了关联。 ![10](https://xp.odoohub.com.cn/example/images/10.png) 利润统计 ---- 这样我们就可以根据各个环节以订单为维度对利润进行统计。 ![11](https://xp.odoohub.com.cn/example/images/11.png) 所有的外币都会自动转化为人民币进行统计。 售后服务 ---- 如果客户订单过程中产生了售后服务的需求,将由售后团队进行跟进和解决。 ![12](https://xp.odoohub.com.cn/example/images/12.png) 结语 -- 借助Odoo提供的标准化流程,以适合现阶段客户的最佳方案,再结合我们强大地开发能力根据客户自己的定制化需求进行改造,成功使客户的原本由Excel驱动的业务流程成功Odoo化,整个公司内部的运作流程也变得清晰和简单,让客户能够把更多的精力放在业务拓展上,实现业绩增长。 results matching "" =================== No results matching "" ====================== --- # 外贸行业方案 · odoo实施参考手册-青岛欧姆网络科技 [外贸行业方案](https://xp.odoohub.com.cn/) ===================================== 外贸行业解决方案 ======== results matching "" =================== No results matching "" ====================== --- # FAQ · odoo实施参考手册-青岛欧姆网络科技 [FAQ](https://xp.odoohub.com.cn/) ================================== FAQ === 1. 销售订单行缺少必要的明细字段 此错误通常由于开票时的客户的会计资料中缺少应收应付科目或者销售明细行中缺少计量单位引起的。 解决方案: * 检查客户资料中的会计选项卡中应收和应付字段是否已经设置,且为当前公司。 * 检查销售订单中的计量单位是否设置。 results matching "" =================== No results matching "" ====================== --- # Odoo Implementation Manual · Odoo Implementation Manual - Qingdao Ohm Network Technology [Odoo Implementation Manual](https://xp.odoohub.com.cn/en/) ============================================================ Odoo Implementation Manual ========================== > 中文版本: [Odoo实施使用参考手册](https://xp.odoohub.com.cn/index.html) This English edition is a practical implementation guide for companies and consultants who want to understand Odoo from real business scenarios, not only from isolated menu operations. The Chinese edition remains the main source of the manual. The English edition will be expanded chapter by chapter, keeping the same implementation-oriented style: explain the business background first, then walk through the Odoo configuration, daily operation flow, screenshots, and practical notes. The English edition is being expanded from the implementation roadmap first, then module chapters and reusable solutions. The current version already includes the self-implementation roadmap and the YunExpress integration guide. Recommended starting points: * [Part 1 Self-Implementation Roadmap](https://xp.odoohub.com.cn/en/sections/SECTION0.html) * [YunExpress Integration](https://xp.odoohub.com.cn/en/chapter10/YUN.html) results matching "" =================== No results matching "" ====================== --- # 第十一章 物流方式 · odoo实施参考手册-青岛欧姆网络科技 [](https://xp.odoohub.com.cn/stock/DELIVERY_METHOD.html#) [](https://xp.odoohub.com.cn/stock/DELIVERY_METHOD.html#) FacebookGoogle+TwitterWeiboInstapaper [](https://xp.odoohub.com.cn/stock/DELIVERY_METHOD.html#) [](https://xp.odoohub.com.cn/stock/DELIVERY_METHOD.html#) [](https://xp.odoohub.com.cn/stock/DELIVERY_METHOD.html#) AA SerifSans WhiteSepiaNight [第十一章 物流方式](https://xp.odoohub.com.cn/) ======================================== 第十一章 物流方式 ========= * [运费对比](https://xp.odoohub.com.cn/stock/DELIVERY_METHOD.html#%E8%BF%90%E8%B4%B9%E5%AF%B9%E6%AF%94) * [开启运费对比功能](https://xp.odoohub.com.cn/stock/DELIVERY_METHOD.html#%E5%BC%80%E5%90%AF%E9%80%81%E8%B4%A7%E8%BF%90%E8%B4%B9%E5%AF%B9%E6%AF%94%E5%8A%9F%E8%83%BD) * [开启对比权限](https://xp.odoohub.com.cn/stock/DELIVERY_METHOD.html#%E5%BC%80%E5%90%AF%E5%AF%B9%E6%AF%94%E6%9D%83%E9%99%90) * [送货单运费对比](https://xp.odoohub.com.cn/stock/DELIVERY_METHOD.html#%E9%80%81%E8%B4%A7%E5%8D%95%E8%BF%90%E8%B4%B9%E5%AF%B9%E6%AF%94) * [销售单运费对比](https://xp.odoohub.com.cn/stock/DELIVERY_METHOD.html#%E9%94%80%E5%94%AE%E5%8D%95%E8%BF%90%E8%B4%B9%E5%AF%B9%E6%AF%94) * [FAQ](https://xp.odoohub.com.cn/stock/DELIVERY_METHOD.html#faq) 运费对比 ---- 前面讲了如何在odoo中使用各种承运商来完成运费查询和发货等操作,一个很自然的场景就出来了,当我们同时启用了多个物流方式的时候,我们自然希望在发货的时候能够选择性价比最高的那个进行发货。因此,我们需要有一个物流方式对比的功能。在我们的[欧姆物流解决方案](https://odoohub.com.cn/) 中,我们实现了这种对比功能,接下来,我们看一下如何使用。 ### 开启送货运费对比功能 首先,我们需要到设置中,开启送货拓展和销售送货拓展(销售单运费对比): ![21](https://xp.odoohub.com.cn/stock/images/21.png) ### 开启对比权限 开启了对比功能后,还需要在用户的技术特性中,开启承运商对比特性。 ![22](https://xp.odoohub.com.cn/stock/images/22.png) ### 送货单运费对比 前面两步完成后,就可以到发货单上使用运费对比功能了。 ![23](https://xp.odoohub.com.cn/stock/images/23.png) 点击运费对比: ![24](https://xp.odoohub.com.cn/stock/images/24.png) 我们在弹出的运费对比页面中,选择发货方、收货方地址,修改相应的货物重量和体积,就可以点击获取费率按钮来获取相应的运费信息。 用户根据列出来的运费对比,选择自己想要使用的承运方即可。选择完的承运方会自动带入到交货单中。 ### 销售单运费对比 如果用户还希望在销售单上进行运费对比,那么可以在勾选**销售运费拓展**的前提下,在销售单上点击添加物流按钮: ![26](https://xp.odoohub.com.cn/stock/images/26.png) ![27](https://xp.odoohub.com.cn/stock/images/28.png) 可以看到,销售单的对比功能和发货单几乎一样。同样的,用户在选了自己想要的发货方式后,会自动填充到销售订单中。 FAQ --- 1. 运费获取到的结果是-1 运费获取过程中发生了异常会返回-1,具体原因需要查看后台日志。可能的原因:填写的重量不能为0或小于1,某些承运商要求重量必须大于1kg 2. 验证错误,提示销售明细行缺少描述字段。 模块自带的产品Delivery Comparison Product不要归档或删除。 results matching "" =================== No results matching "" ====================== --- # 第十章 存储类别 · odoo实施参考手册-青岛欧姆网络科技 [](https://xp.odoohub.com.cn/stock/STORAEGE.html#) [](https://xp.odoohub.com.cn/stock/STORAEGE.html#) FacebookGoogle+TwitterWeiboInstapaper [](https://xp.odoohub.com.cn/stock/STORAEGE.html#) [](https://xp.odoohub.com.cn/stock/STORAEGE.html#) [](https://xp.odoohub.com.cn/stock/STORAEGE.html#) AA SerifSans WhiteSepiaNight [第十章 存储类别](https://xp.odoohub.com.cn/) ======================================= 第十章 存储类别 ======== * [存储类别](https://xp.odoohub.com.cn/stock/STORAEGE.html#%E5%AD%98%E5%82%A8%E7%B1%BB%E5%88%AB) * [上架规则](https://xp.odoohub.com.cn/stock/STORAEGE.html#%E7%BB%91%E5%AE%9A%E4%B8%8A%E6%9E%B6%E8%A7%84%E5%88%99) * [存储类别的使用规则](https://xp.odoohub.com.cn/stock/STORAEGE.html#%E5%AD%98%E5%82%A8%E7%B1%BB%E5%88%AB%E7%9A%84%E4%BD%BF%E7%94%A8%E8%A7%84%E5%88%99) * [超库存分配](https://xp.odoohub.com.cn/stock/STORAEGE.html#%E8%B6%85%E5%BA%93%E5%AD%98%E5%88%86%E9%85%8D) 在开始本文之前,请读者思考如下一个问题,假设当前仓库有库位A/B/C/D,它们拥有共同的上级库位S,每个库位能够存储产品P的最大数量是100,现在有一个采购单共采购了200个P,我们该如何在odoo中进行设置,以满足库位最大存储容量的要求呢? **存储类别**(storage.category)就是用来解决此类问题的,下面我们来了解一下存储类别的使用方式。 存储类别 ---- 要使用存储类别功能,首先我们要在系统中开启存储类别选项,在设置-库存-仓库-存储类别中选中存储类别选项。 ![21](https://xp.odoohub.com.cn/stock/images/21.png) 开启此选项之后,我们就可以到仓库-设置-存储类别中使用存储类别功能了,下面是一个存储类别的截图示例: ![22](https://xp.odoohub.com.cn/stock/images/22.png) * 存储类别:存储类别的名称 * 最大重量:该存储类别能够接收的最大重量 * 允许新产品:接收产品的策略(当库位为空、允许相同产品和允许混合产品) 针对同一个库位,不同产品可能能够存储的数量是不同的,因此,我们需要在下面的能力列表中指定产品的能够接收的产品数量。 * 产品: 能力指定的产品 * 数量: 能力的数量 * 计量单位: 能力的计量单位 然后我们在库位上绑定此存储类别: ![24](https://xp.odoohub.com.cn/stock/images/24.png) 存储类别不能单独使用,创建好了存储类别之后,我们要绑定上架规则才可以使用。 绑定上架规则 ------ 我们以产品雪碧为例,创建要一个上架规则: ![23](https://xp.odoohub.com.cn/stock/images/23.png) 该上架规则的意思是,如果产品到达Stock库位,那么将它上架到雪碧库位(虚拟库位),因为雪碧库位下拥有4个库位ABCD,因此这4个库位都可以进行存放。 这样,当产品抵达Stock库位后,系统将根据绑定的上架规则和库存类别,将符合规则的产品调拨到存储类别指定的库位的子库位中。 举例来说,在做好了前面所述的存储规则之后,我们再创建一个100个雪碧的采购单入库。 ![25](https://xp.odoohub.com.cn/stock/images/25.png) 确定之后,我们可以看到系统自动帮我们将库存放到了雪碧库位下的A库位中。 ![26](https://xp.odoohub.com.cn/stock/images/26.png) 如果这时候我们再次下单,将会发现系统会自动帮我们放到第二个库位B库位中: ![27](https://xp.odoohub.com.cn/stock/images/27.png) 这是因为虽然我们的第一单还没有入库,但是已经预留了A库位。第二单入库的时候发现已经有调拨使用了A库位,因此系统自动帮我们顺延到了B库位。 存储类别的使用规则 --------- 前面介绍了存储类别的基本用法,那么现在来思考一个问题,如果4个库位都已经满了,那么系统将把第5单采购存储到哪里呢? 答案是存到Stock库位。 ![30](https://xp.odoohub.com.cn/stock/images/30.png) 这里就牵扯到了上架策略的使用规则问题,我们在前面的测试中可以看出,存储类别的库位使用规律是依次是使用。当存储类别找不到合适的库位时,使用调拨类型默认的目的库位。 超库存分配 ----- 现在我们来考虑最开始提出的问题,当我们入库数量是200时,想要系统自动分配给下面的子库位该如何处理呢? 因为超过存储分类指定的库存量时,系统会使用默认的库位,因此达不到我们想要实现的效果。为了解决此问题,我们在库存解决方案中添加自动分配的选项,当用户选中了此选项时,系统将根据存储类别中的数量自动将200的入库明细分成2个100的明细,并调拨到指定的目的库位。 首先,我们在设置中打开**存储类别拆分**功能: ![33](https://xp.odoohub.com.cn/stock/images/33.png) 然后我们再去采购一个200件的产品: ![31](https://xp.odoohub.com.cn/stock/images/31.png) 当我们确认采购订单后,就可以发现,系统自动帮我们将200个产品按照每个库位放100个的规则拆分好了。 ![32](https://xp.odoohub.com.cn/stock/images/32.png) results matching "" =================== No results matching "" ====================== --- # 第一章 实施前准备 · odoo实施参考手册-青岛欧姆网络科技 [第一章 实施前准备](https://xp.odoohub.com.cn/) ======================================== 第一章 实施前准备 ========= 很多公司在实施 Odoo 时,会直接从“我要装哪些模块”开始讨论。这个思路并不坏,但还不够。真正影响项目成败的,往往不是某个按钮在哪里,而是上线前有没有把业务边界、数据和人员准备好。 本章先不讲复杂配置,只讲自主实施前必须想清楚的几件事。 先理解测试库的作用 --------- 测试库不是给技术人员看的,而是给业务人员试错用的。所有流程都应该先在测试库里跑通,再考虑正式上线。 下面是一套刚进入 Odoo 后的应用首页。客户在测试库中看到的第一个画面通常类似这样: ![Odoo应用首页](https://xp.odoohub.com.cn/implementation/images/implementation-apps-home.png) 在这个页面里可以看到已经安装的应用。比如 Sales、Invoicing、Apps、Settings 等。自主实施时,不要急着把所有应用都打开,应该先围绕企业的主业务流程选择最少的一组模块。 第一步:写清楚上线目标 ----------- 上线目标要尽量具体,不要写成“实现数字化管理”这种很大的话。小公司第一次上线,目标可以简单一点。 比较好的目标写法: * 销售订单、发货和开票都在 Odoo 中完成; * 仓库可以看到实时库存和待发货订单; * 采购订单和供应商账单可以关联起来; * 财务可以每周做一次银行对账; * 老板可以看到销售额、应收账款和库存金额。 不建议第一期目标: * 所有流程一次性全部自动化; * 所有 Excel 都立刻取消; * 所有报表都完全按旧系统重做; * 一上来就要求大量定制页面。 第一期的重点不是完美,而是把主流程跑通。 第二步:确认业务主线 ---------- 不同企业的主线不一样。自主实施前,先判断自己属于哪一种。 | 企业类型 | 第一条主线 | 优先模块 | | --- | --- | --- | | 贸易批发 | 报价 -> 销售订单 -> 采购 -> 入库 -> 发货 -> 开票 | 销售、采购、库存、财务 | | 零售门店 | 产品 -> POS收银 -> 库存扣减 -> 收款 | POS、库存、财务 | | 生产制造 | 销售预测/订单 -> 物料清单 -> 生产 -> 入库 -> 发货 | 销售、库存、生产、采购 | | 服务公司 | 客户 -> 报价 -> 项目/任务 -> 工时/费用 -> 开票 | CRM、销售、项目、工时、财务 | | 跨境电商 | 平台订单 -> 库存 -> 发货 -> 收款 -> 对账 | 销售、库存、物流接口、财务 | 如果一家公司同时有多个业务模式,也不要一开始全部上线。先选择收入占比最高、流程最稳定的一条线。 第三步:准备基础数据 ---------- Odoo 上线前最容易被低估的是基础数据。系统本身可以配置得很快,但脏数据会让后面的每一步都很痛苦。 至少要准备这些表: * 公司资料:公司名称、地址、税号、电话、邮箱、银行账号; * 用户资料:每个用户的姓名、邮箱、岗位、需要使用的模块; * 客户资料:客户名称、联系人、电话、邮箱、发票地址、送货地址; * 供应商资料:供应商名称、联系人、付款方式、采购币种; * 产品资料:产品名称、内部编码、条码、单位、销售价格、成本、产品类别; * 库存资料:仓库、库位、当前库存数量、批次/序列号; * 财务资料:期初应收、期初应付、银行余额、税率、会计科目。 不要把旧系统里的所有字段都搬进 Odoo。先保留业务必须字段,其他字段等主流程稳定后再补。 第四步:先安装最少模块 ----------- 在 Odoo 中安装模块的位置是 **Apps**。 ![应用安装页面](https://xp.odoohub.com.cn/implementation/images/implementation-apps.png) 在测试库中可以看到很多应用,例如 CRM、Website、Inventory、Purchase、Point of Sale、Manufacturing、Employees 等。小白客户最容易在这里“看到什么都想装”,这反而会让系统变复杂。 建议第一期只安装必要模块: * 有销售流程:安装 Sales; * 有采购流程:安装 Purchase; * 有库存管理:安装 Inventory; * 有收款开票:安装 Invoicing 或 Accounting; * 有门店收银:安装 Point of Sale; * 有生产加工:安装 Manufacturing。 暂时不建议第一期就安装太多营销、人事、网站、自动化模块,除非它们就是当前业务主线的一部分。 第五步:设置公司、用户和语言 -------------- 基础设置通常从 **Settings** 开始。 ![设置页面](https://xp.odoohub.com.cn/implementation/images/implementation-settings.png) 这里需要先处理几件事: * 公司信息是否正确; * 文档版式是否已经配置; * 系统语言是否符合使用习惯; * 用户是否已经邀请; * 权限是否按岗位分配; * 计量单位、币种、税率是否符合实际业务。 不要让所有员工都使用管理员账号。管理员账号只用于配置和维护,日常业务应该用普通用户账号测试。 第六步:确定权限角色 ---------- 权限不要按个人随意设置,而要按岗位设计。 常见角色可以这样拆: * 老板:看报表和审批,不一定需要日常录单; * 销售:客户、报价、销售订单; * 采购:供应商、询价单、采购订单; * 仓库:收货、发货、调拨、盘点; * 财务:发票、付款、对账、报表; * 门店员工:POS收银、退货、交班; * 管理员:系统配置、应用安装、用户权限。 权限设置的原则是:够用就好。权限太大,容易误删或误改;权限太小,业务跑不起来。 第七步:准备测试用例 ---------- 测试用例不需要写得很复杂,但必须覆盖真实业务。 建议每个模块至少准备 3 类测试: * 正常流程:比如创建报价、确认订单、发货、开票、收款; * 异常流程:比如取消订单、部分发货、退货、退款; * 权限流程:普通员工能不能做,不能做的地方是否被限制。 如果测试库里所有流程都只由管理员操作,那不算真正测试。 上线前检查清单 ------- 正式上线前,至少确认以下事项: * 公司信息、税率、币种、银行账号已经设置; * 客户、供应商、产品资料已经导入并抽查; * 期初库存和期初财务余额已经确认; * 关键用户已经登录测试并完成自己的流程; * 销售、采购、库存、财务至少跑通一条完整链路; * 重要报表能看懂,数据口径已确认; * 管理员账号、备份方式、邮件发送已经确认; * 老系统停止录入和 Odoo 开始录入的时间点已经确定。 常见坑 --- * 一开始就追求“和旧系统一模一样”,导致大量不必要定制; * 基础数据没有清洗,产品、客户、供应商重复严重; * 财务没有参与前期设计,后面对账和报表口径不一致; * 只测试了管理员账号,没有测试真实员工权限; * 没有在测试库里做退货、退款、取消、部分收货等异常流程; * 上线前没有明确哪一天开始用 Odoo 做正式数据。 什么时候需要找顾问 --------- 如果只是标准销售、采购、库存、财务流程,客户可以跟着本手册自己先做测试。但遇到下面情况,建议找顾问或开发人员一起评估: * 多公司、多仓库、多币种同时上线; * 需要和电商平台、物流、支付、外部财务系统对接; * 要迁移大量历史数据; * 需要复杂审批、价格计算、佣金、返利; * 原生报表无法满足老板或财务的管理口径; * 员工权限要求非常细,比如字段级限制、门店级限制。 Odoo 很灵活,但灵活不代表所有事情都应该第一天就定制。自主实施的第一原则是:先让原生流程跑起来,再决定哪里值得优化。 results matching "" =================== No results matching "" ====================== --- # 第一部分 自主实施路线图 · odoo实施参考手册-青岛欧姆网络科技 [第一部分 自主实施路线图](https://xp.odoohub.com.cn/) =========================================== 第一部分 自主实施路线图 ============ 很多企业第一次接触 Odoo 时,最容易犯的错误不是不会点按钮,而是不知道应该先做什么、后做什么。 Odoo 的模块很多,销售、采购、仓库、财务、网站、POS、生产、人事都可以装。但企业实施系统不是“把模块都装上”这么简单,而是要先把业务主线跑通,再逐步补充自动化、报表和行业扩展。 本部分的目标,是帮助没有实施经验的读者建立一个基本判断: * 上线前要准备哪些资料; * 哪些模块应该先做,哪些可以放到二期; * 测试库应该怎么演练; * 什么需求应该优先使用原生功能; * 什么需求才值得定制开发; * 上线前怎么判断“可以用了”。 如果您是第一次自己实施 Odoo,建议先读完本部分,再根据自己的业务进入销售、采购、仓库、财务等模块章节。 results matching "" =================== No results matching "" ====================== --- # 第十二章 成本核算 · odoo实施参考手册-青岛欧姆网络科技 [第十二章 成本核算](https://xp.odoohub.com.cn/) ======================================== 第八章 成本核算 ======== odoo支持多种成本核算方式和估值方法,最常见的有标准价格、先进先出和平均价格三种。本章将详细介绍如何设置产品的成本核算方法,以及这些核算方式之间的不同。 设置成本核算方式 -------- > 在12.0版本或更早的版本中,成本的核算方式是可以在产品设置中直接进行设置的,如果产品中没有设置再去产品分类中进行查找设置。但是从13.0版本开始,官方取消了产品设置中的选项,统一调整到了产品分类中进行设置,产品设置中仅仅是做了产品分类的映射。 成本核算方式的设置,在产品分类中: ![](https://xp.odoohub.com.cn/stock/images/1.jpg) 成本核算的方式支持三种: * 标准价格:使用产品设置中定义的成本价核算 * 平均价格:使用加权平均价来核算 * 先进先出:使用先进先出方法进行核算 库存价值核算支持两种: * 人工核算:由人工进行手动核算 * 自动核算:在库存发生变化时由系统自动核算 下面我们来详细看一下这三种方式的具体含义。 标准价格 ---- 我们新建一个BMW的320Li的车型,将其成本设置为20万人民币,并将整个BMW车系设置为标准价格核算: ![](https://xp.odoohub.com.cn/stock/images/3.jpg) ![](https://xp.odoohub.com.cn/stock/images/2.jpg) 然后我们做一张采购单,以25万/台的价格购入10辆,放入我们的库存,因为我们这里使用的是标准价格法,因此采购完成后320Li的成本价格并没有发生变化,依旧是20万/台。此时,当我们查看库存估值时,可以看到320Li库存10辆,价值为200万。 ![](https://xp.odoohub.com.cn/stock/images/4.jpg) 从这里可以看出来,使用标准价格法,在库存估值时并不会考虑到采购价格的变化,而是采用标准的价格估算库存价值。 平均价格 ---- 接下来,我们看一下平均价格是怎样核算的。我们以Audi A4L为例,我们将其成本设置为0,然后第一次以21万/台的价格采购10台。采购入库以后,我们可以看到此时的成本价格为21万: ![](https://xp.odoohub.com.cn/stock/images/6.jpg) ![](https://xp.odoohub.com.cn/stock/images/5.jpg) 然后我们进行第二次采购,假设此时一汽大众公司使用了促销手段,每辆汽车降价2万,我们以19万/台的价格购入20辆。那么我们的平均成本应该为 (库存总价值210万 + 购入总价值380万) / (库存数量10 + 购入数量20) = 19.66万。 ![](https://xp.odoohub.com.cn/stock/images/7.jpg) 此刻的库存价值: ![](https://xp.odoohub.com.cn/stock/images/8.jpg) 由此我们可以看出来,平均价格法在每次采购入库后,平均价格都会发生改变。计算公式为 新平均价 = (当前库存总值 + 入库总值) / (当前库存总数 + 入库总数量) 由于使用平均价格,销售一辆汽车同时就会使库存减少与平均价格相同的库存价值,因此,销售不会影响平均价格法下的成本价格。 ### 平均价格的内部逻辑 在12.0中,Stock Move对象中有两个字段用来存储库存的数量和金额,他们是remaining\_qty和remaining\_value。但是到13.0这两个字段被移除了。13.0开始引入了一个新的对象stock.valuation.layer。 FIFO ---- 最后,我们看一下先进先出法下的库存核算。我们以奔驰CLA 260L为例,同样的我们不预先设置其成本。然后以25万/台的价格购入10辆,此时其库存价值为250万: ![](https://xp.odoohub.com.cn/stock/images/9.jpg) ![](https://xp.odoohub.com.cn/stock/images/10.jpg) 然后,我们第二次以23万/台的价格购入20辆,根据FIFO的原则,我们入库以后的库存估值应该为 250+460 = 710万: ![](https://xp.odoohub.com.cn/stock/images/11.jpg) ![](https://xp.odoohub.com.cn/stock/images/12.jpg) 然后我们以360000的价格销售一辆CLA 260: ![](https://xp.odoohub.com.cn/stock/images/13.jpg) 根据FIFO的原则,我们出库的是最早入库的一批,也就是出库的是成本为25万的CLA,因此销售完成后,我们的库存价值应该为 710 - 25 = 685万: ![](https://xp.odoohub.com.cn/stock/images/14.jpg) 采用FIFO的成本核算方法,出入库并不会修改产品的成本价格。库存的核算也是根据出入库的先后顺序进行累计核算的。 results matching "" =================== No results matching "" ====================== --- # 第三章 管理工单 · odoo实施参考手册-青岛欧姆网络科技 [第三章 管理工单](https://xp.odoohub.com.cn/) ======================================= 第三章 管理工单 ======== > 工单模块是企业版包含的模块,使用社区版的同学可以略过本章。 管理欠单 ---- 某些情况下,我们的生产可能并不是一次完成的,如果部分产品先生产出来了,那么如何进行下一步的流转呢?这就要提到odoo中的**欠单**概念,欠单指的是不能一次完成而生成的后续的单据。欠单的概念,不止存在于生产模块中,我们之前在库存调拨的章节也见过它的倩影,假如我们需要购买100个苹果,但是供应商送货时先送了50个,那么我们就需要在生成的入库单中先把这50个进行入库,此时odoo会询问你,是否将后续的数量生成一个欠单,以供供应商二此送货时使用。生产的工单中也是如此,可能我们这次需要生成100台笔记本电脑,但是第一个工序组装时先组装了20台出来,那么后续的80台就会自动生成一个欠单。 这里需要注意的一点时,报工的过程可以在生产单的工单明细页面中完成,也可以在报工界面完成,两者的区别是工单明细中的开始、阻塞不会影响到后续的工单进程,但是报工界面的记录生产按钮会自动触发欠单的开始。 results matching "" =================== No results matching "" ====================== --- # 第一章 基本概念 · odoo实施参考手册-青岛欧姆网络科技 [第一章 基本概念](https://xp.odoohub.com.cn/) ======================================= 第一章 基本概念 ======== 本章我们将介绍Odoo仓库管理的基本概念和逻辑。 仓库 -- **仓库**是仓库管理的最顶层概念。每个仓库下会有多个库位。 库位 -- **库位**是仓库下的存储单位,Odoo中的库位根据使用类型不同可以分为内部库位和虚拟库位两类,内部库位用来存储货物,虚拟库位用来处理逻辑上的概念,比如客户库位、供应商库位等。 调拨 -- Odoo中的库存管理逻辑是是通过源库位和目的库位间的**调拨**完成的,即任何一个产品的出库和入库都会记录下源库位和目的库位。一个调拨单包含多个**库存移动**,而一个库存移动又包含多个**库存移动明细**。 调拨类型 ---- 根据不同的类型,odoo把调拨进行了分类,原生支持的分类包括入库、内部调拨和出库,生产等。我们也可以根据自己的需求自定义自己的调拨类型。 库存移动 ---- 一个产品从A库位转移到B库位,称为一个库存移动(move),一个库存移动包含了产品信息、数量、日期和完成数量等必要信息。 库存移动明细 ------ 当产品需要批次信息或序列号时,一个库存记录就不足以记录完整的信息了,库存移动明细就是用来记录更位详细的库存移动信息的对象。 results matching "" =================== No results matching "" ====================== --- # 第五章 工作中心 · odoo实施参考手册-青岛欧姆网络科技 [第五章 工作中心](https://xp.odoohub.com.cn/) ======================================= 第五章 质量检测 ======== 生产过程中,我可以对工单进行质量检测。 开启质量检测 ------ 首先,我们要在MRP设置中打开质检设置: ![](https://xp.odoohub.com.cn/chapter5/images/1.png) 创建质量检查点 ------- 设置完成后,我们可以在首页看到质检模块的入口,进入质检模块以后,创建一个质量检查点: ![](https://xp.odoohub.com.cn/chapter5/images/2.png) 产品: 选择要进行质量检查的产品 操作: 这里选择生产 工艺中心: 选择要进行质量检测的工艺中心。 创建生产单 ----- 之后我们创建一个新的生产单: ![](https://xp.odoohub.com.cn/chapter5/images/3.png) 之后我们打开工单,会看到会让我们进行质量检查: ![](https://xp.odoohub.com.cn/chapter5/images/4.png) 只有质量检测通过之后才会显示处完成按钮。 ![](https://xp.odoohub.com.cn/chapter5/images/5.png) results matching "" =================== No results matching "" ====================== --- # 第七章 套件生产 · odoo实施参考手册-青岛欧姆网络科技 [第七章 套件生产](https://xp.odoohub.com.cn/) ======================================= 套件生产 ==== 基于序列号的套件产品追溯 ------------ 我们知道odoo原生的套件BOM类型并不会产生真正的库存,从而导致了某些情况下我们想要对套件进行追溯的困难性。基于这样的一个背景,我们在欧姆生产解决方案中新增了对套件产品的追溯拓展,下面我们就来看看如何使用吧。 ### 产品设置 假设我们这里一台组装电脑产品,它的BOM包含两个产品一个键盘、一个显示器,我们把这个BOM设置成套件类型。 ![6](https://xp.odoohub.com.cn/chapter5/images/6.png) 这台电脑路线设置为生产 ![7](https://xp.odoohub.com.cn/chapter5/images/7.png) ### 销售订单 然后我们去销售单中做一个销售订单 ![8](https://xp.odoohub.com.cn/chapter5/images/8.png) 我们可以看到销售订单明细行中有一个套件批次,我们将该电脑的序列号填入其中,然后确认订单。 ### 发货 然后我们到发货单中进行发货,可以看到,此组装电脑在发货单中被拆分成了两个组件进行出库: ![9](https://xp.odoohub.com.cn/chapter5/images/9.png) 我们在发货单中分别将两个组件的批次号填入,然后点击验证,完成发货。 ### 组件追溯 发货之后,我们到组装电脑的批次中,可以看到关联的的两个组件的批次。 ![10](https://xp.odoohub.com.cn/chapter5/images/10.png) 我们在组件的批次中也可以看到关联的成品的序列号。 ![11](https://xp.odoohub.com.cn/chapter5/images/11.png) 这样我们就实现了虽然套件产品在库存中没有实际库存,但也根据对此套件进行追溯的功能。 results matching "" =================== No results matching "" ====================== --- # 第六部分 生产管理 · odoo实施参考手册-青岛欧姆网络科技 [第六部分 生产管理](https://xp.odoohub.com.cn/) ======================================== results matching "" =================== No results matching "" ====================== --- # 第三章 支付 · odoo实施参考手册-青岛欧姆网络科技 [第三章 支付](https://xp.odoohub.com.cn/) ===================================== 第三章 支付 ====== 了解了客户和供应商开票的相关内容,接下来,我们看一下如何进行客户和供应商的支付。 客户和供应商支付 -------- 我们在开具了客户/供应商发票之后,我们可以在会计-仪表盘中看到等待支付的发票: ![34](https://xp.odoohub.com.cn/account/images/AC34.png) 正常情况下,我们勾选我们要收/支付的账单然后点击**登记付款(Register Payment)**即可。 ### 多次支付 默认情况下,登记支付的金额为整个账单的金额。我们也可以分多次进行支付,我们只需要更改支付的金额即可。 ![35](https://xp.odoohub.com.cn/account/images/AC35.png) odoo会提供给我们两个选项 * 保持打开状态: 表示账单仍未完全支付 * 标记为完全支付: 即尾款出于某种原因不再继续支付,标记账单已完全支付。 ### 将账单关联到已有支付 默认情况下使用账单的登记付款功能会自动将支付和账单关联起来。但是也有场景是账单和支付分开的,例如,客户上笔订单的退款或之前支付的余额。这种情况下,我们就可以手动将额外的支付与账单进行手动关联。 ![36](https://xp.odoohub.com.cn/account/images/AC36.png) odoo会在账单上显示一个浅蓝色的提示框用来表示,此账单有可以手动关联的支付。我们在右下角的列表中选择我们想要关联的支付,点击添加按钮即可完成关联。 ### 使用现金账户支付 我们知道,通常情况下,我们使用银行账户给供应商付款后,供应商账单会变为**支付中(In Payment)**状态,如果我们使用现金账户给供应商付款,能否跳过这一状态从而使支付状态直接变为**已支付(PAID)**呢? 答案是肯定的,我们下面来看一下如何做。 首先,我们打开会计-设置-日记帐,找到现金日记账,在现金日记账的支出中设置中,显示出**待对账支付科目(Outstanding Payments Account)**: ![27](https://xp.odoohub.com.cn/account/images/AC27.png) 然后我们将其设置为现金科目。这样当我们在支付供应商账单时,选择现金日记账,支付结果就会直接变为已支付。 在线支付 ---- 我们除了使用传统的现金和银行来支付现有的账单外,odoo也支持使用在线支付来完成支付。 首先我们要在设置中打开在线支付设置,位置在设置-销售-报价单和订单,勾选在线支付: ![37](https://xp.odoohub.com.cn/account/images/AC37.png) 我们可以看到odoo默认支持的在线支付列表: ![38](https://xp.odoohub.com.cn/account/images/AC38.png) 我们激活需要的在线支付提供商就可以了。 ### 支付宝和微信支付 对于中国大陆用户来说,支付宝和微信支付可以说是挺普遍的需求。我们在通用解决方案中加入了对支付宝和微信支付的支持。 有需求的读者可以到我们的公众号(OdooHub)中了解相关内容。也可以在我们的[开发教程](https://dev.odoohub.com.cn/) 的附录中找到介绍。 客户支付提醒 ------ 我们在设置完支付条款以后,还可以根据条款的日期设置来提醒客户及时付款。在客户-跟踪报告中,我们可以看到所有要提醒支付的客户列表。 ![39](https://xp.odoohub.com.cn/account/images/AC39.png) ![40](https://xp.odoohub.com.cn/account/images/AC40.png) 打开某一条之后,我们可以点击跟进按钮,选择提醒客户的方式: ![41](https://xp.odoohub.com.cn/account/images/AC41.png) 跟进的方式有以下4种: * 邮件 * 打印 * 短信 * 邮寄 ![42](https://xp.odoohub.com.cn/account/images/AC42.png) 我们可以根据自己的具体需要选择合适的方式对客户进行提醒。 ### 提醒等级 在设置-开票-跟踪等级中,我们可以对客户的提醒进行分级设置。 ![43](https://xp.odoohub.com.cn/account/images/AC43.png) 比如我们可以设置在发票到期前几天提醒客户,然后在过期几天后再发提醒,然后在第三次,第四次等等。 results matching "" =================== No results matching "" ====================== --- # 第四章 对账 · odoo实施参考手册-青岛欧姆网络科技 [第四章 对账](https://xp.odoohub.com.cn/) ===================================== 客户对账单 ===== 对于澳大利亚、印度和新西兰的客户,通常会有给客户发对账单的需求,odoo会针对这几个区域的客户安装**客户对账单模块**(l10n\_account\_customer\_statements)。 * [使用邮件发送对账单](https://xp.odoohub.com.cn/account/STATMENT.html#%E4%BD%BF%E7%94%A8%E9%82%AE%E4%BB%B6%E5%8F%91%E9%80%81%E5%AF%B9%E8%B4%A6%E5%8D%95) * [使用定时任务发送对账单](https://xp.odoohub.com.cn/account/STATMENT.html#%E4%BD%BF%E7%94%A8%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E5%8F%91%E9%80%81%E5%AF%B9%E8%B4%A6%E5%8D%95) * [对账单添加条款](https://xp.odoohub.com.cn/account/STATMENT.html#%E5%AF%B9%E8%B4%A6%E5%8D%95%E6%B7%BB%E5%8A%A0%E6%9D%A1%E6%AC%BE) 安装完成之后,用户可以方便地在客户资料中打印客户的对账单。 ![statement](https://xp.odoohub.com.cn/account/images/AC51.png) 原生模块只提供了这么一个打印对账单的功能,而且局限于点击打印日期所在的月份。比如说,今天是11月30日,那么我们可以打印出11月1号到11月30号,该客户的对账单。 但是如果我们是12月1日打印的对账单,那么该对账单就只显示了12月1日的对账单,并不会显示之前月份的对账单。 使用邮件发送对账单 --------- 为了方便用户给客户发送账单,我们在客户对账单解决方案中添加了使用邮件发送对账单的功能,用户可以给想要发送对账单的客户手动发送对账单。 ![statement](https://xp.odoohub.com.cn/account/images/STATEMENT.png) ![statement2](https://xp.odoohub.com.cn/account/images/STATEMENT2.png) 使用定时任务发送对账单 ----------- 通常情况下,我们都有周期性给客户发送对账单的需求。因此,我们在对账单解决方案中添加了定时任务,以方便用户对使用系统周期性给客户发送对账单。 ![statement3](https://xp.odoohub.com.cn/account/images/STATEMENT3.png) 默认情况下,将给所有客户发送当前日期下的上个月的对账单。如果想要发送指定月份的对账单,则传入moth参数即可。 model.send_statements(month=-2) 如果想要指定客户范围,则可以传入partner\_ids来指定客户的id列表。 model.send_statements(partner_ids=[1,2,3..]) 对账单添加条款 ------- 如果我们想要在客户对账单中添加一些备注或条款,可以在我们的[财务解决方案](https://odoohub.com.cn/) 中进行设置。 在会计-设置-客户对账单: ![52](https://xp.odoohub.com.cn/account/images/AC52.png) 在这里输入我们想要填写的条款和内容。 然后我们在打印出来的对账单文件中也可以看到: ![53](https://xp.odoohub.com.cn/account/images/AC53.png) results matching "" =================== No results matching "" ====================== --- # 第五章 日记账 · odoo实施参考手册-青岛欧姆网络科技 [第五章 日记账](https://xp.odoohub.com.cn/) ====================================== 第五章 日记账 ======= 日记帐的序号规则 -------- Odoo 在启用 会计不可篡改性(尤其是欧盟合规、审计链)时,会要求: **每一条已过账的会计分录,必须能唯一地找到“上一条已过账分录”** 用于计算: * 哈希 / 顺序链 * 审计追溯 * 防止删除、插入、乱序修改 即确保日记帐中的会计凭证号码都是连续的,不会出现跳号的情况。 Odoo的每个版本在实现这条规则时有不同的处理方法,例如在odoo15中时通过一个**安全序列号**(secure sequence number)来实现的,而在从17.0开始则更换了实现方式,不再使用原有的序列号(sequence)规则,而是从数据库中既有的记录计算而来。也因此,我们在碰见如下错误时要根据不同的版本二采区不同的处理策略: An error occurred when computing the inalterability. Impossible to get the unique previous posted journal entry 此错误的含义是,日记账的凭证中出现了缺失的序号,可能的原因是凭证被误删,也可能数据库错误导致。 results matching "" =================== No results matching "" ====================== --- # 第二章 开票 · odoo实施参考手册-青岛欧姆网络科技 [第二章 开票](https://xp.odoohub.com.cn/) ===================================== 第二章 开票 ====== 本章我们将了解如何给客户和供应商开具发票,处理支付条款等。 * [客户开票](https://xp.odoohub.com.cn/account/INV.html#%E5%AE%A2%E6%88%B7%E5%BC%80%E7%A5%A8) * [产品开票策略](https://xp.odoohub.com.cn/account/INV.html#%E4%BA%A7%E5%93%81%E5%BC%80%E7%A5%A8%E7%AD%96%E7%95%A5) * [注释](https://xp.odoohub.com.cn/account/INV.html#%E6%B3%A8%E9%87%8A) * [退票](https://xp.odoohub.com.cn/account/INV.html#%E9%80%80%E7%A5%A8) * [使用与INV不同的序号](https://xp.odoohub.com.cn/account/INV.html#%E4%BD%BF%E7%94%A8%E4%B8%8Einv%E4%B8%8D%E5%90%8C%E7%9A%84%E5%BA%8F%E5%8F%B7) * [部分退票](https://xp.odoohub.com.cn/account/INV.html#%E9%83%A8%E5%88%86%E9%80%80%E6%AC%BE) * [使用OCR识别发票](https://xp.odoohub.com.cn/account/INV.html#%E4%BD%BF%E7%94%A8ocr%E8%AF%86%E5%88%AB%E5%8F%91%E7%A5%A8) * [供应商发票](https://xp.odoohub.com.cn/account/INV.html#%E4%BE%9B%E5%BA%94%E5%95%86%E5%8F%91%E7%A5%A8) * [支付条款](https://xp.odoohub.com.cn/account/INV.html#%E6%94%AF%E4%BB%98%E6%9D%A1%E6%AC%BE) * [查看客户的应付](https://xp.odoohub.com.cn/account/INV.html#%E6%9F%A5%E7%9C%8B%E5%AE%A2%E6%88%B7%E7%9A%84%E5%88%B0%E6%9C%9F%E5%BA%94%E4%BB%98) * [默认的条款和条件](https://xp.odoohub.com.cn/account/INV.html#%E9%BB%98%E8%AE%A4%E7%9A%84%E6%9D%A1%E6%AC%BE%E5%92%8C%E6%9D%A1%E4%BB%B6) * [发票号码](https://xp.odoohub.com.cn/account/INV.html#%E5%8F%91%E7%A5%A8%E5%8F%B7%E7%A0%81) * [基于日记账代码的生成规则](https://xp.odoohub.com.cn/account/INV.html#%E5%9F%BA%E4%BA%8E%E6%97%A5%E8%AE%B0%E8%B4%A6%E4%BB%A3%E7%A0%81%E7%9A%84%E7%94%9F%E6%88%90%E8%A7%84%E5%88%99) 客户发票 ---- 首先,我们在做一个销售订单: ![15](https://xp.odoohub.com.cn/account/images/AC15.png) 我们在确定订单后开票,发票中生成的会计科目是由产品的设置决定的。具体来说是由产品属性、产品分类属性和日记帐中的设置决定的。 ![16](https://xp.odoohub.com.cn/account/images/AC16.png) 在产品设置的会计属性中有两个设置,收入科目和费用科目。如果产品设置中的科目为空,那么系统将根据**产品分类**的属性中进行设置。如果产品分类中的科目设置也为空,那么系统将根据**日记账**的科目设置进行设置。 ### 产品开票策略 我们在销售相关章节中也提到过,销售的开票策略由产品的开票策略决定。如果产品开票策略设置为**根据订单数量**, 那么系统允许不发货进行开票。如果开票策略设置为**根据发货数量**,那么系统将要求再发货完成后进行开票。 在销售明细中,如果订单行为绿色文字表明改行可以进行开票,反之则表明不能开票。 ### 注释 我们可以在明细行中添加文字块和备注,文字块和备注将根据最近的一条产品明细一同带入到发票行中。 退票 -- 如果我们在业务中需要给客户进行退款,那么首先我们就需要给客户创建一个**退款发票(Credit Note)**。步骤是找到已经开具的发票,然后单击退款按钮。 ![17](https://xp.odoohub.com.cn/account/images/AC17.png) 确认生成的退款发票: ![18](https://xp.odoohub.com.cn/account/images/AC18.png) 然后完成退款的支付即可。 ### 使用与INV不同的序号 在日记帐中有一个设置可以让我们在创建退款发票时使用与客户发票不同的序列号: ![20](https://xp.odoohub.com.cn/account/images/AC20.png) > 关于客户发票的序号机制,请参考CookBook客户发票一章。 ### 部分退款 在odoo16.0及之前的版本中,退款支持部分退款。 ![22](https://xp.odoohub.com.cn/account/images/AC22.png) 但17.0中已经移除部分退款,仅支持全部退款。 ![23](https://xp.odoohub.com.cn/account/images/AC23.png) 使用OCR识别发票 --------- Odoo可以通过扫描将收到的发票上传到系统中,支持多个发票一同上传,并自动切割,还可以将不同的发票文件自动生成发票。 ![24](https://xp.odoohub.com.cn/account/images/AC24.png) 要使用OCR功能,我们首先需要在设置-会计-数字化设置中打开OCR功能。 ![25](https://xp.odoohub.com.cn/account/images/AC25.png) 借助文档功能,我们可以将一个多个发票在一起的文件分割成多个独立的发票。 然后再点击生成采购账单按钮自动生成采购账单。 供应商发票 ----- 供应商发票和客户发票操作类似,只不过方向相反。我们可以通过OCR功能,上传一个供应商发的PDF,odoo会自动帮我们创建供应商发票。 ![26](https://xp.odoohub.com.cn/account/images/AC26.png) 支付条款 ---- 支付条款用来设置客户的支付条款,创建新的支付条款位置在会计-设置-支付条款: ![27](https://xp.odoohub.com.cn/account/images/AC27.png) 付款条款的默认公司为空,即所有公司都可以使用,如果设置了某个功能,那么只能由该公司使用。 这里我们举例来说,创建一个支付条款,立即支付40%,30天后支付60%,那么我们可以这么设置: ![28](https://xp.odoohub.com.cn/account/images/AC28.png) 17.0与16.0不同的是,在16.0的明细类型中有一余额(Balance)类型,在17.0中被移除了。 接下来,我们使用这个付款条款创建一个客户发票: ![29](https://xp.odoohub.com.cn/account/images/AC29.png) 然后我们咋看它生成的会计凭证: ![30](https://xp.odoohub.com.cn/account/images/AC30.png) 从会计凭证中我们可以看到在付款日和30天后分别生成了两个到期的凭证行。 查看客户的到期应付 --------- 我们可以在报表-合作伙伴报表-到期的应收中看到客户的应付款: ![31](https://xp.odoohub.com.cn/account/images/AC31.png) 默认的条款和条件 -------- 我们可以在给客户的发票中显示我们的支付条款和条件, 支付条款有两种显示方式,一种是以文本形式的留在客户发票中的,另外一种方式是在线的条款链接。 设置位置在会计-设置-客户发票-默认的条款和条件: ![32](https://xp.odoohub.com.cn/account/images/AC32.png) 发票号码 ---- 默认情况下,发票的号码是**连续的**,如果某些条件下发票号码发生了断层,中间某个号码不存在了,那么它的下一个发票号码在列表视图中将以红色形式展示。 ![2](https://xp.odoohub.com.cn/account/images/2.png) 我们在**客户发票**的日记账中可以看到关于发票号码生成规则的设置: ![33](https://xp.odoohub.com.cn/account/images/AC44.png) > 在16.0及之前版本的发票号码使用序列对象来实现,17.0的序号生成方式发生了改变,本文基于17.0,其他版本请参考相关资料。 默认情况下发票的编码规则是以INV开头形式如下的编号: INV/2019/0001 新生成的编号会根据当前数据中的最大的序列规则+1的方式递增。比如当前的发票的号码是INV/2019/001,那么新生成的号码将是INV/2019/002。 如果我们修改了发票号码的前缀,比如改成了FACT,即数据库中当前拥有的发票号码是INV/2019/001,FACT/2019/001,那么系统下一个生成的发票号码将是FACT/2019/002。 这可能符合我们的预期,也可能不符合我们的预期。 下面我们来详细看一下这个问题,首先我们在客户发票日记账中新建两个发票: ![34](https://xp.odoohub.com.cn/account/images/AC45.png) 然后我们把发票INV/2024/00002重命名为SINV/2024/00001: ![35](https://xp.odoohub.com.cn/account/images/AC46.png) 此时我们的发票中既有INV又有SINV,那么当我们继续生成新的发票时,生成的发票将是SINV/2024/00002。 ![36](https://xp.odoohub.com.cn/account/images/AC47.png) **发票生成的规则会根据最近生成的序列进行递增**。 如果我们想要把序列生成的规则跟日记账绑定,不希望它根据当前的这种半智能式的规则进行生成,该怎么办呢? ### 基于日记账代码的生成规则 为了解决这个问题,我们在[解决方案](http://odoohub.com.cn/) 中增加了根日记账绑定的功能。首先,我们在设置-欧姆中激活财务拓展模块: ![37](https://xp.odoohub.com.cn/account/images/48.png) 激活之后,我们在设置-会计中勾选基于日记账的发票编码选项: ![38](https://xp.odoohub.com.cn/account/images/AC49.png) 然后我们再去创建发票就会发现新生成的发票编码始终跟日记账相关的代码序列: ![39](https://xp.odoohub.com.cn/account/images/AC50.png) results matching "" =================== No results matching "" ====================== --- # 第八部分 多公司 · odoo实施参考手册-青岛欧姆网络科技 [第八部分 多公司](https://xp.odoohub.com.cn/) ======================================= results matching "" =================== No results matching "" ====================== --- # 第一章 基础概念 · odoo实施参考手册-青岛欧姆网络科技 [第一章 基础概念](https://xp.odoohub.com.cn/) ======================================= 第一章 基础概念 ======== 本章我们将介绍Odoo财务体系的基础概念。在Odoo的财务体系中有三大基石,它们是 **科目表(Chart of Accounts)**、**日记账(Journals)**和**税率(Taxes)**。如果想要在Odoo中进行开票,那么这三样东西是必须要事先配置好的。 * [会计仪表盘](https://xp.odoohub.com.cn/account/BASIC.html#%E4%BC%9A%E8%AE%A1%E4%BB%AA%E8%A1%A8%E7%9B%98) * [财务本地化](https://xp.odoohub.com.cn/account/BASIC.html#%E8%B4%A2%E5%8A%A1%E6%9C%AC%E5%9C%B0%E5%8C%96) * [财务角色](https://xp.odoohub.com.cn/account/BASIC.html#%E8%B4%A2%E5%8A%A1%E8%A7%92%E8%89%B2) * [科目和科目表](https://xp.odoohub.com.cn/account/BASIC.html#%E7%A7%91%E7%9B%AE%E5%92%8C%E7%A7%91%E7%9B%AE%E8%A1%A8) * [科目类型](https://xp.odoohub.com.cn/account/BASIC.html#%E7%A7%91%E7%9B%AE%E7%B1%BB%E5%9E%8B) * [更新科目](https://xp.odoohub.com.cn/account/BASIC.html#%E6%9B%B4%E6%96%B0%E7%A7%91%E7%9B%AE) * [日记帐](https://xp.odoohub.com.cn/account/BASIC.html#%E6%97%A5%E8%AE%B0%E8%B4%A6) * [配置日记帐](https://xp.odoohub.com.cn/account/BASIC.html#%E9%85%8D%E7%BD%AE%E6%97%A5%E8%AE%B0%E5%B8%90) * [更改日记帐的顺序](https://xp.odoohub.com.cn/account/BASIC.html#%E6%9B%B4%E6%94%B9%E6%97%A5%E8%AE%B0%E5%B8%90%E7%9A%84%E9%A1%BA%E5%BA%8F) * [导入期初余额](https://xp.odoohub.com.cn/account/BASIC.html#%E5%AF%BC%E5%85%A5%E6%9C%9F%E5%88%9D%E4%BD%99%E9%A2%9D) 会计仪表盘 ----- 我们在进入Odoo的财务模块时,首先看到的就是**会计仪表盘(Accounting Dashboard)**,下面我们来看一下可以从会计仪表盘中看到哪些有用的信息。 下面是一个典型的会计仪表盘。 ![1](https://xp.odoohub.com.cn/account/images/AC1.png) 在会计仪表盘中会列出我们当前系统中拥有的日记帐。关于日记帐,我们会在后面详细介绍,这里我们可以看到与日记帐相关的一些数据。 财务本地化 ----- 我们在刚开始创建系统时,Odoo会让我们选择一个国家,会计模块在安装时会根据我们选择的国家安装与其对应的会计模块包。我们可以在会计-设置-财务本地化菜单中看到我们当前安装的是哪一个会计包。 ![2](https://xp.odoohub.com.cn/account/images/AC2.png) > 此设置将在你创建了第一个(包含草稿状态在内的)凭证之后消失。 财务角色 ---- 公司内部的通常的财务角色有如下几种: * **财务助理**(Account Assistant): 负责客户/供应商发票整理,银行流水处理和支付校验跟踪。 * **财务经理**(Account Manager):职责是验证客户/供应商账单,处理支付和生成总账报表。 * **财务总监**(CFO): 负责公司内部的科目余额表、利润表、分析会计和预算的制定。 对于外部的财务角色来说,通常有以下几种: * **注册会计师**(Chatered Account): 负责审计公司的财务报表、作出调整和装订已经关闭的会计凭证。 * **审计**(Auditor): 负责审计流水的真假或是否合理。 * **官方**(Authority): 政府的监管部门,审计公司财务是否存在偷税漏税或财务造假的可能。 公司财务角色与监管的关系可以用下图展示: ![5](https://xp.odoohub.com.cn/account/images/AC5.png) 科目和科目表 ------ 如果想要查看当前公司内的所有科目表,可以在会计仪表盘中点击会计科目-审查进行查看,也可以在设置-会计-日记帐中进行查看。 ![3](https://xp.odoohub.com.cn/account/images/AC3.png) 我们将看到科目的列表。 ![4](https://xp.odoohub.com.cn/account/images/AC4.png) 我们可以根据需要对现有的科目进行调整配置。 ### 科目类型 * **权益**(Equity): 公司的资产权益,包括股东的出资等。 * **固定资产**(Fixed Assets): 公司拥有的长期资产,例如房子、车等等。 * **负债**(Liability): 公司要在将来支付的债权,例如供应商账单等。 * **流动资产**(Current Assests): 代表公司短期权益,例如短期内客户将要支付的账单。 * **银行和现金**(Bank and Cash):代表公司银行和现金资产。 * **收入**(Income):公司经营活动产生的利润。 * **费用**(Expense):公司经营活动产生的费用成本。 ### 科目核销 在科目设置上有一个是否允许核销的开关 ![5](https://xp.odoohub.com.cn/account/images/AC6.png) **核销**的操作意思是允许使用银行流水或支付流水对凭证进行核销。 > 允许核销的科目应该只是**应收**或者**应付**的科目。 ### 更新科目 如果我们要更新科目设置,通常使用导入更新的方式,具体步骤如下: > 不要轻易改动科目的类型,容易发生错误。例如,把应收(Receivable)类型的科目擅自改为应付(Payable), 将会导致销售订单在开票时报错: > > ``` > 应收账款上的任何日记账项目都必须有到期日,反之亦然。 > (Any journal item on a receivable account must have a due date and vice versa.) > ``` > 日记账 --- **日记账**在财务中用来体现交易的结果,通常包含借方、贷方和余额三栏。根据不同的日记帐类型,在odoo中,我们可以把日记账分为如下几类: * 销售(Sales): 客户销售日记帐 * 采购(Purchase): 供应商采购日记账 * 银行和现金(Bank and Cash): 用于记录支付的日记账 * 杂项(Miscellaneous): 其他类型的日记账 所有的日记账都会在**总账报表(General Ledger)**中进行体现。 我们在前面提到的,进入会计模块的仪表板就是显示的当前可用的日记账。 ### 配置日记帐 我们可以在仪表盘中点击更多(...)来配置日记帐。 ![8](https://xp.odoohub.com.cn/account/images/AC8.png) 我们来看一下日记帐的具体设置。 ![9](https://xp.odoohub.com.cn/account/images/AC9.png) 对于销售类型的日记帐,我们可以看到它有如下几个设置: * 默认的收入科目: 指定的默认收入科目 * 专用退款序列: 退款和收入使用不同的序列 * 简码:日记帐的短码 ![10](https://xp.odoohub.com.cn/account/images/AC10.png) 在高级设置中还有一个锁定设置,如果勾选了,那么用户将不能将已经提交的凭证重置为草稿。 ![11](https://xp.odoohub.com.cn/account/images/AC11.png) 采购日记帐跟销售日记帐类似,不同点在于,默认的科目是费用类型。 ![12](https://xp.odoohub.com.cn/account/images/AC12.png) 杂项比较简单只有一个简码设置。 ![13](https://xp.odoohub.com.cn/account/images/AC13.png) 最后是银行和现金类型的日记帐,与其他日记帐不同的是多了如下设置: * 银行账户:银行和现金类型的科目 * 搁置科目: 银行和现金交易的暂记科目,直到交易被核销为止 * 利润科目: 当系统计算与实际关帐时的有差异的利润科目 * 损失科目: 当系统计算与实际关帐时的有差异的损失科目 * 专用的支付序列: 日记帐与银行交易是否共享统一序列 最后是另外的两个独有设置: * 账户号码:银行的账号 * 银行流水来源: 有三种方式 1. 手动(未定义) 2.导入 3.自动同步 ### 更改日记帐的顺序 如果我们想要更改日记帐在仪表盘中显示的顺序,那么我们可以在日记帐列表中,拖拽日记帐行,完成顺序调整。 ![14](https://xp.odoohub.com.cn/account/images/AC14.png) ### 创建原则 虽然odoo允许我们创建尽可能多的日记帐,但是对于销售和采购类型的日记帐来说,我们要尽量保持最少的数量,因为对于销售和采购业务来说,odoo只会使用诸多销售和采购类型日记帐中的第一个。 > 当然我们也可以使用其他策略,例如跟销售团队进行绑定来确定唯一的日记账,但这是另外一个话题了。 导入期初余额 ------ 我们可以使用Excel模板来导入期初余额。如何导入,请参考这里的[视频](https://www.bilibili.com/video/BV1Sw411u7be/?spm_id_from=333.1007.0.0) 。 results matching "" =================== No results matching "" ====================== --- # 第二章 商城 · odoo实施参考手册-青岛欧姆网络科技 [第二章 商城](https://xp.odoohub.com.cn/) ===================================== 第二章 商城 ====== 邮件确认模板 ------ 客户在商城下单以后,系统会根据默认配置的邮件确认模板(sale.default\_confirmation\_template)给客户发出一封订单确认邮件。 ![shop2](https://xp.odoohub.com.cn/web/images/shop2.png) 目前(17.0)版本存在的问题是,邮件确认模板并没有像下面提到的发票模板一样有一个在系统中可以指定设置的地方。这对于多公司条件下的使用,非常的不方便,因为很多客户希望在多公司条件下针对不同的公司(网站)使用不同的确认模板。 我们在[欧姆网络网站解决方案(mommy\_website\_sale)](https://odoohub.com.cn/) 中增加了此选项,用户可以在不同公司下指定不同的邮件确认模板。 ![shop3](https://xp.odoohub.com.cn/web/images/shop3.png) 保存后,不同的公司下将使用不同的邮件模板发出邮件。 发票模板 ---- 当客户在商城中完成下单并且支付成功后,系统可以自动发送发票(Invoice)到客户注册的邮箱中。具体的设置位置在: **设置-发票-自动开票** ![shop1](https://xp.odoohub.com.cn/web/images/shop1.png) ### 基于多公司的发票邮件模板 但是当我们的系统中拥有多个网站的时候,会碰到一个问题就是邮件模板默认并非跟公司关联的,因此当我们创建的第二个网站拥有第二个域名和标题的时候,用户收到的邮件还是第一个网站的模板,就变得有点尬尴。 我们在[欧姆网络网站解决方案(mommy\_website\_sale)](https://odoohub.com.cn/) 中添加了对此项的支持,用户安装了这个模块以后即可使用多公司下多发票模块的功能,详询客服。 ### 客户留言 我们在网站可以设置表单让客户进行留言。 ![23](https://xp.odoohub.com.cn/web/images/23.png) 在添加字段的时候,如果选择的字段类型是邮箱,那么我们要填写有效的邮箱地址,不能保持默认,否则会提示: invalid website_form_signature results matching "" =================== No results matching "" ====================== --- # 第四章 邮件营销 · odoo实施参考手册-青岛欧姆网络科技 [第四章 邮件营销](https://xp.odoohub.com.cn/) ======================================= 邮件营销 ==== 邮件订阅 ---- > 基于17.0 用户在访问我们的网站的时候可以使用邮件订阅功能来订阅我们的最新资讯。具体使用方法为:在网站编辑器中添加邮件列表组件: ![18](https://xp.odoohub.com.cn/web/images/18.png) 用户在订阅了我们的邮件频道后,我们可以选择设置感谢按钮提醒用户已经订阅。 ![19](https://xp.odoohub.com.cn/web/images/19.png) ### 自定义邮件列表 默认情况下,网站中并没有默认的邮件订阅列表,如果想要添加自己的邮件列表,首先要到后台邮件营销模块中,创建一个自己的邮件列表,同时将其设置为公开。 ![20](https://xp.odoohub.com.cn/web/images/20.png) 然后,我们要在网站编辑器中,选中邮件订阅组件,然后设置我们想要用户订阅的列表。 ![21](https://xp.odoohub.com.cn/web/images/21.png) results matching "" =================== No results matching "" ====================== --- # 第五章 销售门户 · odoo实施参考手册-青岛欧姆网络科技 [第五章 销售门户](https://xp.odoohub.com.cn/) ======================================= 销售门户 ==== 销售订单签名 ------ 用户在门户网站可以对销售订单进行签名: ![qm](https://xp.odoohub.com.cn/web/images/22.png) 门户销售订单可以进行签名的条件是: 1. 报价单处于已发送状态 2. 或者报价单草稿状态(设置中指定) 3. 同时报价单没有超时且报价单指定了需要签名,同时没有签名 results matching "" =================== No results matching "" ====================== --- # 第二章 自助终端 · odoo实施参考手册-青岛欧姆网络科技 [第二章 自助终端](https://xp.odoohub.com.cn/) ======================================= 自助终端模式(Kiosk) ============= > 需要安装pos\_self\_order模块 Odoo支持自助终端模式,本章我们就来介绍如何在POS中使用自助终端。 POS开启自助终端 --------- 我们设置中选择我们想要开启的门店,然后在移动自助下单&Kiosk选项中开启自助终端模式: ![kiosk1](https://xp.odoohub.com.cn/pos/images/kiosk1.png) 自助终端有三种模式: * QR菜单: 仅浏览菜单 * QR菜单+下单: 浏览菜单+下单 * 自助终端(kiosk): 自助终端下单 使用QR菜单,客户扫描二维码即可进入移动端菜单: ![kiosk2](https://xp.odoohub.com.cn/pos/images/kiosk2.png) 客户浏览菜单然后选择自己想要的产品进行下单: ![kiosk3](https://xp.odoohub.com.cn/pos/images/kiosk3.png) 下单成功后,系统给出提示。 ### 在线支付 如果想要客户自行在线支付,那么需要在POS的设置中选择在线支付模式。 ![kiosk4](https://xp.odoohub.com.cn/pos/images/kiosk4.png) 如果没有设置在线支付方式,那么默认就是到收银台进行支付。 限时开启 ---- 如果我们想要设置某些POS产品分类的产品在指定时间段内,可以进行线上或自助下单,那么我们需要在POS分类中进行设置。 ![kiosk5](https://xp.odoohub.com.cn/pos/images/kiosk5.png) results matching "" =================== No results matching "" ====================== --- # 第七部分 财务管理 · odoo实施参考手册-青岛欧姆网络科技 [第七部分 财务管理](https://xp.odoohub.com.cn/) ======================================== results matching "" =================== No results matching "" ====================== --- # 第五章 设置价格表 · odoo实施参考手册-青岛欧姆网络科技 [第五章 设置价格表](https://xp.odoohub.com.cn/) ======================================== POS中的价格表 ======== Odoo中的价格表可以让我们根据各个不同的情况来自动对产品进行定价。比如,我们可以给客户指定价格表、设置价格表的有效期、设置折扣以及设置会员规则、折扣等等功能。 本章我们就来看一下如何在Pos中设置价格表。 配置 -- 首先我们要在设置中激活价格表设置,具体路径在POS设置-可适应价格表,确保此选项已经勾选。 ![pricelist](https://xp.odoohub.com.cn/pos/images/pricelist1.png) 这里可以设置可选的价格表和默认的价格表 > 在17.0及更早版本中价格表有两个策略:一个是每个价格表明细行一个产品,一个是高级的价格表规则。18.0版本起已经合并。 创建价格表 ----- 下面看一下如何创建一个价格表,我们在POS-产品-价格表菜单中,点击左上角的新建: ![pricelist2](https://xp.odoohub.com.cn/pos/images/pricelist2.png) 这里我们可以给价格表设置名称、应用的国家或者国家组。 设置价格表规则 ------- ![pricelist3](https://xp.odoohub.com.cn/pos/images/pricelist3.png) * 价格表可以针对产品、产品分类进行设置 * 价格表的类型分为折扣、公式和固定价格三种 下面我们分别看一下这几种设置的区别和应用场景。 ### 产品和产品分类 首先我们来看价格表的范围选择,价格表的范围有两种一种是指定单一产品、另外一种是指定一个产品分类。 ![pricelist4](https://xp.odoohub.com.cn/pos/images/pricelist4.png) 如果我们选择产品,那么我们还可以选择此产品下面的某种产品变体。 ![pricelist5](https://xp.odoohub.com.cn/pos/images/pricelist5.png) 如果我们选的是产品分类,那么我们只需要选择一个产品分类就可以了。 ### 价格表类型 价格表的类型分为三种,我们先来看最简单的固定价格。 顾名思义,固定价格即产品在此价格表中具有固定的一个价格,只要选择了此价格表,那么该产品的价格就是一个固定值。 ![pricelist6](https://xp.odoohub.com.cn/pos/images/pricelist6.png) 第二种就是公式类型,公式意味着此价格表中的价格可以依赖于另外的一张价格表,并在这张价格表的基础上进行额外的逻辑计算。 ![pricelist7](https://xp.odoohub.com.cn/pos/images/pricelist7.png) 我们可以在另外一张价格表的基础上进行涨价或折扣、设置有效期、舍入精度和额外价格等操作。 最后一种就是折扣,意思是在另外的一个价格表上打折,如果不选价格表那么默认的基础价格就是产品中的销售价格。 ![pricelist8](https://xp.odoohub.com.cn/pos/images/pricelist8.png) 给POS指定默认价格表 ----------- 我们在POS设置中可以设置可用价格表和默认价格表,当我们指定了默认价格表的时候,POS中的价格将使用默认价格表的价格。如果想要切换价格表,那么POS将从设置中的可用价格表中进行选择。 results matching "" =================== No results matching "" ====================== --- # 第四章 支付方式 · odoo实施参考手册-青岛欧姆网络科技 [第四章 支付方式](https://xp.odoohub.com.cn/) ======================================= 支付方式 ==== 本章我们来介绍销售点(POS)中的支付方式的配置。 添加支付方式 ------ 在POS应用-设置-支付方式中,我们可以添加支付方式: ![payment1](https://xp.odoohub.com.cn/pos/images/pos_payment1.png) 先看一个现金的支付方式示例: ![payment2](https://xp.odoohub.com.cn/pos/images/pos_payment2.png) * 在线支付: 集成在线支付供应商的支付方式,需要在网页上完成支付 * 识别客户: 强制绑定客户 * 日记账: POS的日记账 * 销售点: 使用此支付方式的销售点 * 集成终端:可以选择集成终端、也可以选择不集成 > 支付方式的现金日记账必须新建,因为不同的现金支付方式不能共用同一个日记账。但是银行类型的日记账支持多个支付方式共享。 POS支付 ----- 当我们设置好支付方式后,就可以在POS收银端选择配置的支付方式完成收银了。 二维码支付 ----- 除了最常见的现金和银行外,Odoo也支持二维码收款。 > 这里的二维码为银行APP中支持的二维码,与国内微信支付宝银联等不同。 ### 配置 二维码支付根据不同国家的**税务本地化**政策不同而不同,具体不同的国家配置方式请参考官方说明文档。 ![pos_payment3](https://xp.odoohub.com.cn/pos/images/pos_payment3.png) 配置了二维码支付之后,前端在收银的时候会在客户屏幕上显示二维码供客户进行扫描完成支付。 ![pos_payment4](https://xp.odoohub.com.cn/pos/images/pos_payment4.png) results matching "" =================== No results matching "" ====================== --- # 第一章 POS产品管理 · odoo实施参考手册-青岛欧姆网络科技 [第一章 POS产品管理](https://xp.odoohub.com.cn/) ========================================== 产品管理 ==== 本章介绍POS中的产品管理 产品创建 ---- 如果想要把一个产品设置为Pos可销售的产品,只需要在产品信息页中,勾选POS可用选项即可。 ![pos1](https://xp.odoohub.com.cn/pos/images/product1.png) ### POS产品的快速创建 有一种快速创建POS产品的方法,即在POS界面,点击右上角的创建产品菜单,快速创建产品: ![pos2](https://xp.odoohub.com.cn/pos/images/product2.png) 使用这种方式创建POS产品时,Odoo会在POS界面弹出快速创建产品的对话框,用户可以通过扫描条形码,快速添加产品。 ![pos3](https://xp.odoohub.com.cn/pos/images/product3.png) 如果用户扫描的条形码在全球数据库中,那么系统会自动将此条码匹配的产品名称、价格和产品图片自动填入。当然,用户可以根据自己的实际情况进行调整。 产品类型 ---- 产品的类型可以分为如下三个类型 * 货物(goods): 可库存的产品 * 服务(servcie): 服务类虚拟产品 * 组合(Combo): 有多个产品组合而来的产品类型 产品变体 ---- 产品属性有三种选项: * 立即创建:添加的属性理解在产品库中进行创建 * 动态创建:当产品属性在销售单中使用时创建 * 从不创建:不进行产品变体创建 > 产品属性一旦被使用,产品属性的类型将不再可以更改 组合产品 ---- 组合产品(Combo)的定义: 允许用户使用多种产品组合成一种产品。比如,餐厅里的套餐、自己组装台式机等等。 ### 定义Combo选项 首先我们在产品-组合选项中定义产品组合选项: ![pos4](https://xp.odoohub.com.cn/pos/images/product4.png) ### 定义Combo产品 然后我们在产品的信息选项卡中定义Combo产品,步骤是: 1. 将产品的类型选择为组合品 2. 在组合选项中选择组合类别 ![pos5](https://xp.odoohub.com.cn/pos/images/product5.png) ### 额外的价格 对于不同的组合选项,我们可以设置不同的价格: ![pos6](https://xp.odoohub.com.cn/pos/images/product6.png) POS类别 ----- Odoo支持对产品在Pos中使用不同于产品分类的一套类别,在产品信息的POS选项卡中选择相对应的POS分类即可: ![pos7](https://xp.odoohub.com.cn/pos/images/product7.png) ### POS上下级分类 POS分类当然也是支持上下级关系的,在设置-POS分类中,点开一个POS分类后,我们可以通过设置它的上级POS分类来完成。 ![pos8](https://xp.odoohub.com.cn/pos/images/product8.png) 同时我们也可以设置分类的颜色。 results matching "" =================== No results matching "" ====================== --- # 第五章 POS批次自动出库 · odoo实施参考手册-青岛欧姆网络科技 [第五章 POS批次自动出库](https://xp.odoohub.com.cn/) ============================================ POS批次产品自动出库 =========== > 基于odoo18.0 当POS生成订单的时候,系统会自动根据POS订单的明细生成出库单,如果订单明细的产品不是根据批次或者序列号追溯的,那么系统可以将会自动锁定库存,并自动出库。 但是当产品是根据序列号或批次跟踪的时候,自动出库动作将失败,原因是生成的调拨单要求用户手动确认数量。 如果我们希望系统在序列号和批次跟踪的时候依旧可以正常锁库存并出库,该怎么做呢?本章就是为了解决此问题。 开启批次自动出库 -------- 为了解决此问题,我们在欧姆POS解决方案中新增了批次/序列号自动出库的功能单元。首先,用户需要在POS-设置-库存中开启此选项: ![auto](https://xp.odoohub.com.cn/pos/images/10.png) 批次自动出库 ------ 开启了此选项之后,我们在POS中生成订单的之后,如果有足够的库存,那么系统会自动分配并完成出库。 ![pick](https://xp.odoohub.com.cn/pos/images/11.png) ![done](https://xp.odoohub.com.cn/pos/images/12.png) results matching "" =================== No results matching "" ====================== --- # 第四章 POS销售 · odoo实施参考手册-青岛欧姆网络科技 [第四章 POS销售](https://xp.odoohub.com.cn/) ======================================== 第二章 POS销售 ========= 修改默认的展示的产品数量 ------------ POS在加载时,默认只加载100个产品(不含折扣和小费产品),虽然可以搜索,但是毕竟看起来不是很方便。原生并未提供可展示的数量设置,因此,我们在POS解决方案中添加了对产品展示区的数量控制。 ![8](https://xp.odoohub.com.cn/pos/images/8.png) 通过设置限制的数量,可以控制POS收银台产品展示区的展示数量。 ![9](https://xp.odoohub.com.cn/pos/images/9.png) results matching "" =================== No results matching "" ====================== --- # 第六章 客户忠诚度 · odoo实施参考手册-青岛欧姆网络科技 [第六章 客户忠诚度](https://xp.odoohub.com.cn/) ======================================== 客户忠诚度 ===== * [激活客户忠诚度](https://xp.odoohub.com.cn/pos/LOYALTY.html#%E6%BF%80%E6%B4%BB%E5%AE%A2%E6%88%B7%E5%BF%A0%E8%AF%9A%E5%BA%A6) * [设置忠诚度方案](https://xp.odoohub.com.cn/pos/LOYALTY.html#%E8%AE%BE%E7%BD%AE%E5%BF%A0%E8%AF%9A%E5%BA%A6%E6%96%B9%E6%A1%88) * [卡券](https://xp.odoohub.com.cn/pos/LOYALTY.html#%E5%8D%A1%E5%88%B8) Odoo内置了提高客户忠诚度的方案,本章我们就来看一下如何在Odoo中使用忠诚度方案。 激活客户忠诚度 ------- 首先我们需要在Odoo中激活客户忠诚度方案,方法是在Pos-设置中勾选**促销、卡券、礼品卡和忠诚度**选项。 ![1](https://xp.odoohub.com.cn/pos/images/loyalty1.png) 设置忠诚度方案 ------- odoo默认支持的忠诚度类型包含以下几种: * 卡券(Coupons) * 礼品卡(Gift\_Card) * 积分卡(Loyalty\_Card) * 促销(Promotions) * 电子钱包(eWallet) * 折扣(Discount\_Code) * 买送(Buy X Get Y) * 再消费卡券(Next Order Coupons) 不同类型的方案对应不同的规则,下面我们一个一个来看。 ### 卡券 卡券用来手动生成并分享券码,用户可以灵活地设置它的用途和条件。 ![2](https://xp.odoohub.com.cn/pos/images/loyalty2.png) 卡券只能通过券码的方式进行抵扣,用户获取的积分只能在当前订单使用。 #### 设置条件 ![3](https://xp.odoohub.com.cn/pos/images/loyaty3.png) 使用卡券前要设置满足的**条件** 1. 我们可以设置满足条件的最小数量或者至少要购买多少件才能使用。 2. 可以指定生效的产品范围、产品类型或者产品标签 3. 自定义过滤器(domain)来实现更精细地筛选 #### 设置奖励 奖励的类型分为**免费产品**和**折扣**两种。 ![4](https://xp.odoohub.com.cn/pos/images/loyalty4.png) 对于免费产品类型的奖励来说,我们可以设置对于哪些产品或者包含指定标签的产品实施奖励。 积分兑换:我们可以设置要获取此奖励要消耗多少积分,以及是否清空剩余积分。 results matching "" =================== No results matching "" ====================== --- # 第一章 EPOS打印 · odoo实施参考手册-青岛欧姆网络科技 [第一章 EPOS打印](https://xp.odoohub.com.cn/) ========================================= 第一章 EPOS打印 ========== 使用EPOS打印 -------- Odoo支持一下打印机分为两种类型**直接打印**和**集成IOT盒子的打印机**: https://www.odoo.com/documentation/17.0/applications/sales/point_of_sale/configuration/epos_printers.html 顾名思义,直接支持打印的热敏打印机不需要IOT盒子即可直接打印。 下面来介绍一下使用直接支持打印的热敏打印机的配置步骤(EPSON TM-T82III): ### 1\. 在odoo中开启ePos打印机选项 ![1](https://xp.odoohub.com.cn/pos/images/1.png) 其中IP地址,需要填写热敏打印机的IP地址。 ### 2\. 配置odoo系统参数,强制使用HTTPS协议 到-系统-配置-技术参数中,新建以下参数: key: point_of_sale.enforce_https value: True 在odoo中需要配置的就这两个选项,下面是打印机配置。 ### 3\. 自签证书 使用EPOS自检提供的账号和密码登录打印机web界面(默认为192.168.192.168),经过设置后,跟我们的PC处在同一内网内。这里假设,我们的IP是192.168.1.55, 打印机IP是192.168.1.123. 登录打印机以后,点击证书列表菜单,创建自签名证书: ![2](https://xp.odoohub.com.cn/pos/images/2.png) ### 4\. 导入证书到本地系统 自签名证书导出以后, 双击进行安装,将证书安装到系统的Root目录下: ![3](https://xp.odoohub.com.cn/pos/images/3.png) 证书安装成功后,重启浏览器以生效。 如果前面过程没有问题,我们再次访问打印机地址的时候,会看到证书已经被认为是安全的: ![4](https://xp.odoohub.com.cn/pos/images/4.png) ### 5\. 解决浏览器跨域问题 证书安装完成后,我们还会碰到浏览器的报出的跨域问题,因为我们的打印机在内网,服务器在外网不在一个域内。 ![5](https://xp.odoohub.com.cn/pos/images/5.png) 用户需要根据自己使用的浏览器使用不同的方法解决此问题,这里我们已edge为例,提供一个解决方法。 复制桌面的edge快捷方式,然后在属性中,添加以下参数: --disable-web-security --user-data-dir=C:\edgeDevData ![6](https://xp.odoohub.com.cn/pos/images/6.png) ### 6\. EPOS中开启ePOS-print功能 默认情况下,EPOS的ePOS-Print功能并没有开启,用户需要自行到打印机的ePOS设置界面开启。 [7](https://xp.odoohub.com.cn/pos/images/7.png) 如果上述步骤都没有问题,应该就可以在POS界面的打印按钮中打印出小票来了。 results matching "" =================== No results matching "" ====================== --- # 第十一部分 设置 · odoo实施参考手册-青岛欧姆网络科技 [第十一部分 设置](https://xp.odoohub.com.cn/) ======================================= results matching "" =================== No results matching "" ====================== --- # 第四章 IP白名单 · odoo实施参考手册-青岛欧姆网络科技 [第四章 IP白名单](https://xp.odoohub.com.cn/) ======================================== IP白名单 ===== > 本功能仅供欧姆网络科技签约用户使用 * [开启IP白名单功能](https://xp.odoohub.com.cn/chapter9/IPWHITELIST.html#%E5%BC%80%E5%90%AFip%E7%99%BD%E5%90%8D%E5%8D%95%E5%8A%9F%E8%83%BD) * [用户组限制](https://xp.odoohub.com.cn/chapter9/IPWHITELIST.html#%E7%94%A8%E6%88%B7%E7%BB%84%E9%99%90%E5%88%B6) * [登录日志审查](https://xp.odoohub.com.cn/chapter9/IPWHITELIST.html#%E7%99%BB%E5%BD%95%E6%97%A5%E5%BF%97%E5%AE%A1%E6%9F%A5) 有时候我们希望对登录系统的用户根据IP进行限制,以减少不必要的安全风险。因此,我们在基础模块中增加了IP白名单的功能,本文我们就来看一下如何在Odoo中开启白名单登录功能。 开启IP白名单功能 --------- 首先,我们到设置-欧姆-登录设置功能块中开启IP白名单功能: ![IP1](https://xp.odoohub.com.cn/chapter9/images/IP1.png) 开启白名单功能之一,我们可以在下面的设置框中填写白名单IP,每行一个。同时,我们也支持IP号段,或者子网掩码。 用户组限制 ----- 默认情况下,开启白名单限制后,针对所有用户生效。但某些情况下,我们可能只想限制某些用户组的人受控,这时候,我们只需要在右侧的用户组中选择我们想要限制的用户组就可以了。 ![IP2](https://xp.odoohub.com.cn/chapter9/images/IP2.png) 登录日志审查 ------ 同时,我们对试图尝试登录系统的行为进行了记录。在设置-技术-数据库菜单下,我们可以看到所有用户的登录日志: ![IP3](https://xp.odoohub.com.cn/chapter9/images/IP3.png) results matching "" =================== No results matching "" ====================== --- # 第二章 语言设置 · odoo实施参考手册-青岛欧姆网络科技 [第二章 语言设置](https://xp.odoohub.com.cn/) ======================================= 第二章 语言设置 ======== 语言中的时间日期 -------- ![2](https://xp.odoohub.com.cn/chapter9/images/2.png) 在语言的设置中,我们可以对日期格式进行配置: 日期格式:Y%代表年,%m代表月, %d代表日 results matching "" =================== No results matching "" ====================== --- # 第一章 多公司间的采购 · odoo实施参考手册-青岛欧姆网络科技 [第一章 多公司间的采购](https://xp.odoohub.com.cn/) ========================================== 第一章 多公司间的采购 =========== Odoo支持多公司间的业务,本章就将开启多公司间的业务介绍。 公司间业务 ----- 要使用多公司,我们需要先开启多公司设置。具体的设置方法如下:在**设置-通用设置-公司**菜单下,选中公司间业务选项: ![1](https://xp.odoohub.com.cn/chapter7/images/1.png) 然后点击保存。 ![2](https://xp.odoohub.com.cn/chapter7/images/2.png) 我们也可以在公司设置页面中进行设置 ![3](https://xp.odoohub.com.cn/chapter7/images/3.png) > 需要开始debug模式 我们可以在列出的选项中选择我们需要的公司间规则,然后保存即可。odoo支持的公司间规则有以下几种: * 同步发票和账单 * 同步销售订单 * 同步采购订单 * 同步销售订单和采购订单 ### 同步发票和账单 同步发票和账单的意思是如果在给A公司做了一个销售发票/采购账单,那么在对应的公司会自动生成与之匹配的采购账单/销售发票。 举例来说,我们在青岛欧姆网络科技公司下设置了一个同步发票和账单的规则,那么当青岛海森堡信息技术这家公司给青岛欧姆网络做了一张销售发票的时候,系统会在青岛欧姆网络公司下自动创建一个供应商为青岛海森堡信息技术的采购账单。 ![4](https://xp.odoohub.com.cn/chapter7/images/4.png) ![5](https://xp.odoohub.com.cn/chapter7/images/5.png) ### 同步销售订单 同步销售订单的意思是,当某公司给A公司下了一个销售订单,那么会在A公司下自动生成一个采购订单草稿。 > 如果需要自动确认生成的采购订单,则勾选下面的自动验证选项框即可。 同样的,我们以海森堡公司为例给欧姆网络下一个销售订单,则可以在海森堡公司的采购菜单下看到自动生成的采购询价单。 ![6](https://xp.odoohub.com.cn/chapter7/images/6.png) ![7](https://xp.odoohub.com.cn/chapter7/images/7.png) ### 同步采购订单 同步采购订单的意思是,当某公司给A公司下了一个采购订单,那么系统会自动在A公司下生成一个销售订单。 假设我们以海森堡公司的名义给欧姆网络下了一个采购订单,那么系统会自动在欧姆网络公司下创建一个客户为海森堡公司的销售订单。 ![8](https://xp.odoohub.com.cn/chapter7/images/8.png) ![9](https://xp.odoohub.com.cn/chapter7/images/9.png) ### 同步销售订单和采购订单 即上面两个规则的结合,即可以给A公司使用销售订单的规则也可以给A公司使用采购订单的规则。 ### 销售和采购批次号同步 odoo在默认情况下并没有对多公司下的批次号进行同步,也就是说,A公司作为B公司的供应商,供应产品P在出库单中的序列号S并没有同步到B公司的采购入库单中。 B公司仍然需要像从第三方公司采购一样,一条一条地把序列号/批次号录入到自己的公司下。这在某些情况下对用户来说是繁琐的。 因此,我们在自己的[解决方案](https://xp.odoohub.com.cn/sections/SECTION10.html) 中,添加了对此问题的解决方案。在菜单中设置-欧姆-销售特性中勾选**公司间规则拓展**, 这将安装我们写的公司间规则拓展模块,完成之后,前面提到的销售发货单中的序列号和批次号将自动同步到采购入库单中,采购操作人员直接根据入库单中的批次号核对实际收货的批次号,完成入库即可。 ![10](https://xp.odoohub.com.cn/chapter7/images/10.png) results matching "" =================== No results matching "" ====================== --- # 第三章 附件共享 · odoo实施参考手册-青岛欧姆网络科技 [第三章 附件共享](https://xp.odoohub.com.cn/) ======================================= 第三章 附件共享 ======== 虽然odoo官方提供了文档的门户访问功能,但是某些情况下,我们希望外部用户只能有限地能访问我们指定的附件,而不是能够访问整个文档和全部附件。本章即是为了解决此问题而开发的功能。 销售附件管理 ------ 这里我们以销售订单的附件管理功能为例,来看一下具体的操作。首先,我们打开一个销售订单。 ![share1](https://xp.odoohub.com.cn/chapter9/images/share1.png) 这个订单中有两个附件,我们希望能够单独管理和共享每个附件,并且限制它他们的过期日期。 我们点击上面的附件共享快捷按钮,进入附件共享管理页面: ![share2](https://xp.odoohub.com.cn/chapter9/images/share2.png) 系统会帮我们自动创建每个附件的共享条目,我们编辑它的过期日期就可以控制该附件的共享时效。 共享给外部用户 ------- 我们复制文档中的共享链接,然后把它发送给外部用户即可。 ![share3](https://xp.odoohub.com.cn/chapter9/images/share3.png) 用户可以预览图片,也可以点击下载按钮把文档下载到本地。 results matching "" =================== No results matching "" ====================== --- # 第九章 技术设置 · odoo实施参考手册-青岛欧姆网络科技 [第九章 技术设置](https://xp.odoohub.com.cn/) ======================================= 第九章 技术设置 ======== 翻译中的语言格式 -------- odoo可以根据不同的翻译设置不同的数据格式,包括数据精度、时间格式等。打开设置-翻译-语言,然后可以在特定的语言设置中设置该语言环境下的数据精度和日期、时间格式等。 ![](https://xp.odoohub.com.cn/chapter9/images/1.png) results matching "" =================== No results matching "" ====================== --- # 第十二部分 通用解决方案 · odoo实施参考手册-青岛欧姆网络科技 [第十二部分 通用解决方案](https://xp.odoohub.com.cn/) =========================================== 第十部分 欧姆网络科技通用解决方案 ================= 本部分是基于青岛欧姆网络科技在众多客户真实落地案例中提取出的通用解决方案。 基于欧姆网络科技成熟的解决方案,客户可以以短周期、高性价比的方式快速完成需求痛点的解决。 > 所有欧姆网络的方案的成员模块均完全开源,但欧姆网络仅对直接客户提供技术支持和咨询服务。 results matching "" =================== No results matching "" ====================== --- # 第十部分 销售点(POS) · odoo实施参考手册-青岛欧姆网络科技 [第十部分 销售点(POS)](https://xp.odoohub.com.cn/) ============================================ POS === 本部分介绍销售点(Point of Sale)的应用 results matching "" =================== No results matching "" ====================== --- # 第四章 微信POS支付 · odoo实施参考手册-青岛欧姆网络科技 [第四章 微信POS支付](https://xp.odoohub.com.cn/) ========================================== POS微信支付 ======= 我们在前面一节中介绍了如何在销售点(Point of Sale)中使用支付宝进行收款/退款,本节我们将介绍如何使用微信支付完成同样的操作。 模块安装 ---- 在设置-POS设置-支付终端中开启微信支付: ![1](https://xp.odoohub.com.cn/chapter10/images/pos_wechat.png) 开启之后,系统会自动把微信支付模块安装上,同样地,POS微信的设置也复用的网站应用中的微信支付模块设置,这里就不再赘述了。 添加微信支付方式 -------- 在设置-支付方式中新建一个微信支付: ![11](https://xp.odoohub.com.cn/chapter10/images/pos_wechat11.png) 设置微信支付 ------ 在会话关闭状态下,我们进入门店的设置页面,添加微信支付选项。 ![2](https://xp.odoohub.com.cn/chapter10/images/pos_wechat2.png) 使用微信支付收款 -------- 然后我们打开门店收款界面,下一单,这里我们选择1分钱的气球。 ![12](https://xp.odoohub.com.cn/chapter10/images/pos_wechat12.png) 点击收款,进入收银界面,选择微信支付: ![4](https://xp.odoohub.com.cn/chapter10/images/pos_wechat3.png) 扫描用户提供的条码/二维码,点击确认,按钮完成收款。 ![5](https://xp.odoohub.com.cn/chapter10/images/pos_wechat4.png) 最后,点击验证 ![6](https://xp.odoohub.com.cn/chapter10/images/pos_wechat5.png) 这个时候我们再继续把小票打印给客户即可。 使用微信支付进行退款 ---------- 对于退款场景,同支付宝,我们先找到要退款的订单,然后点击退款: ![7](https://xp.odoohub.com.cn/chapter10/images/pos_wechat7.png) 进入到POS界面,我们看到支付金额为负数,表明这是退单。点击付款按钮: ![8](https://xp.odoohub.com.cn/chapter10/images/pos_wechat8.png) 弹窗询问,是否确认退款 ![9](https://xp.odoohub.com.cn/chapter10/images/pos_wechat9.png) 点击确认,完成退款。 ![10](https://xp.odoohub.com.cn/chapter10/images/pos_wechat10.png) 最后,点击验证,打印出退款小票: ![13](https://xp.odoohub.com.cn/chapter10/images/pos_wechat13.png) results matching "" =================== No results matching "" ====================== --- # 第六章 支付宝POS支付 · odoo实施参考手册-青岛欧姆网络科技 [第六章 支付宝POS支付](https://xp.odoohub.com.cn/) =========================================== POS支付宝 ====== 支付宝支付不仅可以使用在网站中,当然可以使用在销售点(POS)中,本节我们将介绍如何在Odoo18.0中使用支付宝进行收款。 模块安装 ---- 首先我们要在系统中激活POS支付宝支付,在设置-POS-支付终端中,勾选支付宝支付: ![alipay](https://xp.odoohub.com.cn/chapter10/images/alipay_pos.png) 然后点击保存,完成POS支付宝模块的安装。 设置支付宝支付 ------- 然后我们在POS设置中设置支付终端: ![alipay2](https://xp.odoohub.com.cn/chapter10/images/alipay_pos2.png) 设置好支付方式,我们到我们的测试商店中添加支付宝的支付方式: ![alipay9](https://xp.odoohub.com.cn/chapter10/images/alipay_pos9.png) 使用支付宝收款 ------- 接下来,我们就可以使用支付宝进行收款了。 > POS支付宝使用的是跟网站支付宝相同的设置,因此这里无需额外设置。 我们开启一个POS收款终端,然后销售一个产品, 这里我们以笔记本为例: ![alipay3](https://xp.odoohub.com.cn/chapter10/images/alipay_pos3.png) 这里销售一个10元的笔记本,然后点击收款,进入付款界面。 ![alipay4](https://xp.odoohub.com.cn/chapter10/images/alipay_pos4.png) 然后点击支付宝,使用扫码枪扫码客户的支付条码/二维码,然后点击确认按钮,完成支付。 ![alipay5](https://xp.odoohub.com.cn/chapter10/images/alipay_pos5.png) 点击验证,然后打印出小票即可完成收款。 ![alipay10](https://xp.odoohub.com.cn/chapter10/images/alipay_pos10.png) 使用支付宝退款 ------- 如果需要退款,在订单列表中选择我们要退款的订单,然后点击退款按钮: ![alipay6](https://xp.odoohub.com.cn/chapter10/images/alipay_pos6.png) 在生成的退款界面中选择支付宝,进行退款: ![alipay7](https://xp.odoohub.com.cn/chapter10/images/alipay_pos7.png) 点击确认完成退款 ![alipay8](https://xp.odoohub.com.cn/chapter10/images/alipay_pos8.png) 这样我们就完成了POS端的支付宝收/退款操作。 ![alipay11](https://xp.odoohub.com.cn/chapter10/images/alipay_pos11.png) ![alipay12](https://xp.odoohub.com.cn/chapter10/images/alipay_pos12.png) results matching "" =================== No results matching "" ====================== --- # STUDIO · odoo实施参考手册-青岛欧姆网络科技 [STUDIO](https://xp.odoohub.com.cn/) ===================================== 大话Odoo Studio ============= Odoo Studio是Odoo官方推出的UI类工具,不懂代码的用户借助其强大的功能,方便地对Odoo进行自己的改造。Odoo在官方网站上对其进行的宣传语是: With Odoo Studio you're in control, no programming knowledge needed. Add fields, create new views, and streamline workflows - all with ease. The sky is the limit! 由此可见,Odoo认为Studio是用户强大的工具。饼画得很好,然而事实真的如官方说的那样么?马克思辩证法告诉我们任何事物都有其两面性,今天我们就来聊一下Studio的优势和官方不会告诉你的Studio的缺点,以供大家在使用的时候避免踩坑。 Studio的优势 --------- 本着欲抑先扬的客户态度,我们首先来看一下Studio的优势。 ### 自定义字段和视图 正如官方所说的那样,用户借助Studio可以在任意界面点击右上角的扳手图标,进入Studio模式,然后添加自己想要的字段和视图。 确实,对于使用标准版Odoo的客户来说,Studio确实提供了便捷性,不必求开发人员就可以进行修改。 ### 报表修改 Odoo官方的报表样式只提供了有限的几种,每张报表的内容和布局也并非每个客户都愿意接受。因此,这个时候,使用Studio就可以对部分报表的样式进行修改。这个也确实满足了一部分用户的需求。 Studio的局限性 ---------- 好了,说完了优势,下面我们来看看Studio的局限。 ### 字段命名问题 首先,我们在使用Studio添加字段时,系统会强制我们把字段的命名为x_开头的字段,以跟代码定义的字段进行区分。这样做的效果就会造成我们使用了大量的x_开始的字段,对于有强迫症的程序员来说,后期维护非难难受。 ### 依赖性问题 Studio存在的一个巨大的问题就是生成的模块并不会有清晰明确的依赖关系,这就造成了我们在升级某些原生模块的时候会碰到莫名其妙的问题。 ### 修改持久化问题 Studio虽然会在模块列表中生成一个名为Studio\_Customization的模块,但是此模块并不会保存在磁盘上而是存储在数据库中。一旦用户卸载此模块,那么所有的改动将无法找回。 ### Studio一时爽 升级火葬场 我们知道使用SAAS版本的Odoo可以在后台直接点击升级,将低版本的odoo升级到最新版本。但是如果你用到了Studio,那么我们强烈建议你先使用测试库进行升级后的测试在进行生产版本的升级。 我们最近碰到的一个惨痛的例子就是客户使用的是SAAS版本17.4版本的odoo,我们在升级到18.0之后,发现很多在17.4使用Studio的修改在18.0中都不翼而飞了,甚至还出现了很多莫名其妙的报错。 后来排查原因才知道,odoo官方在升级过程中**并不会考虑Studio进行的修改**,也就是说使用Studio生成的修改会被认作是第三方模块需要用户自行解决适配性问题。问题是使用SAAS版本,又使用Studio的用户多半是技术小白,他们怎么会有能力自行解决这种问题。 这里举一个典型的列子,在17.0版本中,报表显示税率是使用的变量是tax\_totals,在报表中使用了formatted\_amount变量来显示格式化的金额,然而在18.0中,官方对此功能进行重构,formatted\_amount不复存在,由于客户使用了大量的Studio继承修改,升级后大面积报错。 没办法,我们只能一个视图一个视图地进行检查,一个变量一个变量地进行修改。 Studio的适用场景 ----------- 总而言之,官方推出这样的工具肯定是出于多方面考虑,一方面想要降低用户的使用成本,一方面也可能想要留住SAAS用户(碰到问题可以请求官方或合作伙伴帮助哦),但是我们基于上面的几点原因,不推荐客户在生产环境中使用。用户可以把它当作需求的制作工具,在与技术人员沟通时提供一个清晰的需求原型。 results matching "" =================== No results matching "" ====================== --- # 第五章 支付宝支付 · odoo实施参考手册-青岛欧姆网络科技 [第五章 支付宝支付](https://xp.odoohub.com.cn/) ======================================== 支付宝支付 ===== > 支持版本 16.0/17.0/18.0 odoo16.0官方将支付宝模块弃用了,但是需求还在,我们也不太可能去使用推荐的asipay,因此,我们决定,自己手动实现它。 安装与配置 ----- 首先,我们在应用中安装我们的支付宝模块: ![1](https://xp.odoohub.com.cn/chapter10/images/alipay.png) 安装好之后,我们在销售-配置-在线支付-支付提供商菜单进入支付宝配置界面: ![2](https://xp.odoohub.com.cn/chapter10/images/alipay2.png) 这里对各个参数简单介绍一下: | 参数 | 说明 | | --- | --- | | 支付宝APPID | 我们在支付宝开放平台申请的应用ID | | 支付宝卖家编号 | 我们在支付宝平台的商家账号 | | 商户私钥 | 由支付宝开放平台生成/自己上传的商家私钥。 | | 支付宝公钥 | 由支付宝开放平台生成/自己上传的支付宝公钥。 | | 签名类型 | RSA/RSA2 | 配置好之后,我们就可以使用支付宝完成支付了。 在web商城中使用支付宝支付 -------------- 我们先来看商城中的例子,首先我们去下一单,然后进入付款页面。网站会引导我们跳转到支付宝网站进行支付,用户支付完成后,网页会自动跳回我们的网站并完返回支付状态。 ![3](https://xp.odoohub.com.cn/chapter10/images/alipay3.gif) 在销售订单中支付 -------- 同样的,我们也可以在销售订单中使用支付宝让客户支付。首先,我们创建一个销售订单 ![4](https://xp.odoohub.com.cn/chapter10/images/alipay4.png) 然后,我们把订单通过邮件发送给客户,客户在收到邮件后,直接打开邮件中的链接,即可跳转到支付页面。 ![5](https://xp.odoohub.com.cn/chapter10/images/alipay5.png) 在invoice中使用支付宝支付 ---------------- 我们也可以先开invoice,然后把invoice发送给客户,客户在invoice预览界面可以点击立即支付 ![6](https://xp.odoohub.com.cn/chapter10/images/alipay6.png) 选择支付宝完成支付 ![7](https://xp.odoohub.com.cn/chapter10/images/alipay7.png) results matching "" =================== No results matching "" ====================== --- # 第十章 企业微信审批 · odoo实施参考手册-青岛欧姆网络科技 [第十章 企业微信审批](https://xp.odoohub.com.cn/) ========================================= 第六章 基于企业微信的备用金和费用报销 =================== 前面讲过了企业微信的基础应用,现在我们来看一下如何借助企业微信的审批端能力结合odoo来实现企业中的两大常规业务流程**备用金**和**费用报销**。 本章我们先来看如何使用备用金流程。 企业微信端设置 ------- 我们这里使用的是企业微信的原生审批流程,因此我们需要首先在企业微信端设置好审批流程的节点设置。 ![1](https://xp.odoohub.com.cn/chapter10/images/WX1.png) 我们这里使用的是企业微信的付款流程,用户可以根据自己的实际需求进行相应的调整。 审批模板配置 ------ 首先我们需要在odoo中其启用欧姆解决方案中的费用和企业微信的费用审批功能。 ![2](https://xp.odoohub.com.cn/chapter10/images/WX2.png) 开启上述两个功能以后,我们就可以到企业微信-设置-审批模板中将我们需要的审批模板同步到Odoo中了。 具体的同步方式是,我们需要在企业微信后台打开我们想要的审批模板,然后将URL中的模板ID填入到我们的审批表单中的模板ID字段中,然后点击同步按钮。 ![3](https://xp.odoohub.com.cn/chapter10/images/WX4.png) 同步完成后,我们可以看到一个由很多控件组成的表单,它们跟企业微信端的设置是匹配的,我们需要根据我们在odoo中需要使用的模块进行人工匹配,匹配完成后点击保存。 ![4](https://xp.odoohub.com.cn/chapter10/images/WX3.png) 备用金申请 ----- 设置完审批模板,我们就可以提交备用金审批了。我们到费用-备用金菜单下,新建一个备用金流程: ![5](https://xp.odoohub.com.cn/chapter10/images/WX5.png) 然后填写相应的员工、金额和日期,然后点击提交。 提交之后,员工的上级就会在企业微信端收到一个审批提醒: ![6](https://xp.odoohub.com.cn/chapter10/images/WX6.png) 审批人员在企业微信端点击审批通过或者拒绝,即可把审批后的状态推送到Odoo中进行更新。 ![7](https://xp.odoohub.com.cn/chapter10/images/WX7.png) 如果推送不成功,员工也可以手动点击刷新按钮进行状态刷新。 ![8](https://xp.odoohub.com.cn/chapter10/images/WX8.png) 审批通过之后,财务人员选择付款方式,然后点击付款,完成付款即可。 ![9](https://xp.odoohub.com.cn/chapter10/images/WX9.png) 备用金还款和费用报销 ---------- 员工办事完成之后,会出现以下三种情况: * 备用金不够,报销后需要额外支付员工自己垫付的资金 * 备用金恰好用完,直接提交费用清单和报销凭据 * 备用金剩余,需要将报销后剩余的备用金返还 ### 退款 如果备用金有剩余,在备用金界面点击退款按钮,直接将剩余备用金入帐。 ![10](https://xp.odoohub.com.cn/chapter10/images/WX10.png) ### 费用报销 费用报销抵扣备用金,直接在备用金界面点击创建费用,进入费用报销流程。 ![11](https://xp.odoohub.com.cn/chapter10/images/WX11.png) 同样的,费用报告提交审批后,主管或经理会在企业微信端收到提醒,审批通过后,财务人员进行费用核销。 ![12](https://xp.odoohub.com.cn/chapter10/images/WX12.png) 财务人员在记账之后,系统出现付款按钮,如果是费用金额恰好等于备用金金额,无需额外操作,账单将被直接标记为已支付。 ![13](https://xp.odoohub.com.cn/chapter10/images/WX13.png) 如果有员工自己垫付的费用,那么系统将会提示,需要给员工进行额外支付。 ![14](https://xp.odoohub.com.cn/chapter10/images/WX14.png) FAQ --- field `creator_userid` expect type `string`. invalid Request Parameter, hint: [1720512723142834164225648], from ip: 39.88.46.36, more info at https://open.work.weixin.qq.com/devtool/query?e=40058 出现此错误有两种可能的原因: 1. 企业微信中对应的审批流程没有设置 2. Odoo中提交的人员信息没有企业微信OpenID results matching "" =================== No results matching "" ====================== --- # 第七章 Pos LinePay · odoo实施参考手册-青岛欧姆网络科技 [第七章 Pos LinePay](https://xp.odoohub.com.cn/) ============================================== Pos LinePay =========== Line是风靡日本、泰国以及中国台湾的社交软件,与微信类似,Line也有自己的支付功能: LinePay。本章就来介绍一下如何使用LinePay在odoo16.0中进行收款和退款。 注册LinePay商家 ----------- 想要使用LinePay进行收款,就必须先注册成为LinePay的商家,由于注册LinePay的步骤异常简单,这里不在赘述,大家可自行了解注册方法。 获取Channel ID和Secret ------------------- 成功注册成为LinePay商家以后,我们就能在邮件中收到账号和密码,登录商家后台,可以获取Channel ID和Secret。 安装Pos LinePay模块 --------------- 获取到ID和Secret后,在Odoo的应用列表中安装Pos LinePay模块: ![linepay1](https://xp.odoohub.com.cn/chapter10/images/linepay1.png) 安装成功后,我们到Pos设置-支付方法中,找到Linepay,然后在设置中把Channel Id和Secret填入到相应的位置中: ![linepay2](https://xp.odoohub.com.cn/chapter10/images/linepay2.png) 使用LinePay进行收款和退款 ---------------- 使用LinePay进行收款和退款的步骤与我们之前介绍过的微信和支付宝的POS流程并无差别,因此我们这里不做复述。有需要的同学可以通过下面的视频来进行详细了解。 [LinePay POS支付](https://www.bilibili.com/video/BV15m42157pd/) results matching "" =================== No results matching "" ====================== --- # 第十二章 顺丰国际 · odoo实施参考手册-青岛欧姆网络科技 [第十二章 顺丰国际](https://xp.odoohub.com.cn/) ======================================== 顺丰国际 ==== * [前期准备](https://xp.odoohub.com.cn/chapter10/SFI.html#%E5%89%8D%E6%9C%9F%E5%87%86%E5%A4%87) * [创建APP](https://xp.odoohub.com.cn/chapter10/SFI.html#%E5%88%9B%E5%BB%BAapp) * [Odoo配置](https://xp.odoohub.com.cn/chapter10/SFI.html#odoo%E9%85%8D%E7%BD%AE) * [常规业务](https://xp.odoohub.com.cn/chapter10/SFI.html#%E5%B8%B8%E8%A7%84%E4%B8%9A%E5%8A%A1%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88) * [运费预估](https://xp.odoohub.com.cn/chapter10/SFI.html#%E8%BF%90%E8%B4%B9%E9%A2%84%E4%BC%B0) * [电子面单](https://xp.odoohub.com.cn/chapter10/SFI.html#%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95) * [物流跟踪](https://xp.odoohub.com.cn/chapter10/SFI.html#%E7%89%A9%E6%B5%81%E8%B7%9F%E8%B8%AA) * [跨境业务](https://xp.odoohub.com.cn/chapter10/SFI.html#%E8%B7%A8%E5%A2%83%E4%B8%9A%E5%8A%A1%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88) * [海关申报](https://xp.odoohub.com.cn/chapter10/SFI.html#%E6%B5%B7%E5%85%B3%E7%94%B3%E6%8A%A5) 虽然顺丰模块支持部分香港业务,但对于跨境电商以及对外贸易等行业来说还是功能欠缺。这个时候更应该使用顺丰国际来对接业务,顺丰国际对跨境运输以及海关报关等业务也提供给了更多的支持。 本章我们就来看如何使用顺丰国际来完成跨境业务的使用。 前期准备 ---- 与丰桥不同,顺丰国际要使用顺丰国际的[开放平台](https://openapi-portal.sf.global/) ,与国内丰桥不是一套体系,因此需要重新注册一个账号。具体注册方法这里就不赘述了。 ### 创建APP 注册完成后,我们要到开放平台的控制台创建一个APP应用。 ![sfi1](https://xp.odoohub.com.cn/chapter10/images/sfi1.png) 创建完成后,我们可以拿到应用的几个关键参数 * APPKEY * APPSCERT * AESKEY * CUSTOM\_CODE ![sf2](https://xp.odoohub.com.cn/chapter10/images/sfi2.png) 最后,我们需要把我们需要使用的API接口关联到我们的APP上 ![sf3](https://xp.odoohub.com.cn/chapter10/images/sfi3.png) ### Odoo配置 配置完顺丰国际开放平台,接下来我们来在odoo中进行配置。首先,我们需要安装由[青岛欧姆网络科技](https://www.qingsolution.com/) 自主研发的[顺丰国际模块](https://apps.odoo.com/apps/modules/18.0/mommy_delivery_sfi) : ![sf4](https://xp.odoohub.com.cn/chapter10/images/sfi4.png) 安装完成后,我们在仓库-配置-发货方式中选择顺丰国际,然后将我们获取到的参数配置: ![sf5](https://xp.odoohub.com.cn/chapter10/images/sfi5.png) 配置完成后,我们就可以使用顺丰国际进行发货了。 常规业务解决方案 -------- 下面我们先来看一下如何使用顺丰国际模块来完成常规业务的操作: ### 运费预估 我们在创建完销售订单后,点击添加送货方式,在弹窗中选择顺丰国际,然后输入订单货物总重量,然后点击获取费率: ![sfi6](https://xp.odoohub.com.cn/chapter10/images/sfi6.png) 就可以看到本次发货大概需要的运费。 ### 电子面单 跟国内顺丰模块使用类似,我们在发单中点击验证完成发货之后,系统会自动填充从顺丰国际获取到的运单号,并自动将电子面单输出到讨论区: ![sfi7](https://xp.odoohub.com.cn/chapter10/images/sfi7.png) ### 物流跟踪 点击物流跟踪按钮就可以打开顺丰国际的官方网站对此单号进行物流轨迹查询。 ![sfi8](https://xp.odoohub.com.cn/chapter10/images/sfi8.png) 跨境业务解决方案 -------- 顺丰国际能够更好地支持跨境电商的业务,下面我们来看一下对跨境业务的支持。 ### 海关申报 跨境业务通常都需要对海关申报产品信息和收寄方资料,对此我们做了适配。需要在个人资料中配置用户的身份信息: ![sfi9](https://xp.odoohub.com.cn/chapter10/images/sfi9.png) 然后我们在发货单中生成电子面单后,可以点击上传顺丰国际文件按钮将个人身份资料提交报关: ![sfi10](https://xp.odoohub.com.cn/chapter10/images/sfi10.png) 上传后可以点击验证顺丰认证文件按钮,对提交的认证资料进行认证。如果认证不通过,将会提示重传。 ![sfi11](https://xp.odoohub.com.cn/chapter10/images/sfi11.png) results matching "" =================== No results matching "" ====================== --- # 第十三章 圆通速递 · odoo实施参考手册-青岛欧姆网络科技 [第十三章 圆通速递](https://xp.odoohub.com.cn/) ======================================== 圆通速递 ---- 圆通是我们生活中常用的“三通一达”快递行业中的重要一员,使用频率也非常之高。本文将介绍如何使用[圆通速递](https://hub.mixoo.cn/shop/21) 来完成Odoo与圆通速递的对接工作。 安装和配置 ----- 要使用圆通速递模块,首先我们要开启圆通速递模块,在设置-库存-物流对接中,启用圆通速递: ![圆通](https://xp.odoohub.com.cn/chapter10/images/yto.png) 该选项会自动把圆通速递模块装好。 安装完成之后,我们到库存-设置-送货方式中,打开圆通速递: ![圆通2](https://xp.odoohub.com.cn/chapter10/images/yto2.png) 配置好,我们从圆通那里获取到的沙箱账号和密码即可。 圆通的客户编码和密钥分为两类: * STD:由圆通网点授权提供的客户编码和密钥(由K开头的编号),用户关键接口如订单创建和取消,电子面单等接口的使用。 * Basic: 而另外一种客户编码和密钥(以OPEN开头),则可以由用户在开放平台自动生成,但也需要审核通过后方可使用。 销售下单 ---- 圆通快递的使用方式和其他快递并无太大的差别,首先,我们来看销售单上设置圆通速递。 我们新建一个销售订单,并在添加送货方式那里选择圆通速递: ![销售](https://xp.odoohub.com.cn/chapter10/images/yto3.png) 点击获取运费,可以根据客户的收货地址计算出预估费用。点击添加,我们即可把运费添加到销售单中。 ![订单](https://xp.odoohub.com.cn/chapter10/images/yto4.png) 发货 -- 销售订单生成以后,我们在出库时,可以获取运单号和电子面单: ![运单](https://xp.odoohub.com.cn/chapter10/images/yto5.png) ![电子面单](https://xp.odoohub.com.cn/chapter10/images/yto6.png) 我们点击右上角的跟踪,即可在圆通官网查询该订单的物流信息。 ![物流信息](https://xp.odoohub.com.cn/chapter10/images/yto7.png) 网站订单 ---- 同样的, 我们也可以在网站下单的时候供用户选择圆通速递,预估费用: ![网站](https://xp.odoohub.com.cn/chapter10/images/yto8.png) results matching "" =================== No results matching "" ====================== --- # 第九部分 网站 · odoo实施参考手册-青岛欧姆网络科技 [第九部分 网站](https://xp.odoohub.com.cn/) ====================================== results matching "" =================== No results matching "" ====================== --- # 第十七章 17Track · odoo实施参考手册-青岛欧姆网络科技 [第十七章 17Track](https://xp.odoohub.com.cn/) =========================================== 17Track集成 ========= * [模块获取](https://xp.odoohub.com.cn/chapter10/17Track.html#%E6%A8%A1%E5%9D%97%E8%8E%B7%E5%8F%96) * [模块安装与配置](https://xp.odoohub.com.cn/chapter10/17Track.html#%E6%A8%A1%E5%9D%97%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE) * [激活承运商](https://xp.odoohub.com.cn/chapter10/17Track.html#%E6%BF%80%E6%B4%BB%E6%89%BF%E8%BF%90%E5%95%86) * [配置web hook地址](https://xp.odoohub.com.cn/chapter10/17Track.html#%E9%85%8D%E7%BD%AEweb-hook%E5%9C%B0%E5%9D%80) * [物流轨迹](https://xp.odoohub.com.cn/chapter10/17Track.html#%E7%89%A9%E6%B5%81%E8%B7%9F%E8%B8%AA) 17TRACK是一个全球包裹查询平台,核心能力是:**整合全球物流商接口,一站式查询物流轨迹**。 支持: 邮政:EMS、China Post、USPS 快递:DHL、FedEx、UPS 电商物流:Cainiao、Yanwen、4PX 一个单号,自动识别承运商并追踪。覆盖全球200+ 国家和1000+物流商。青岛欧姆网络科技基于客户真实需求率先推出了17Track的集成方案。 本文将详细介绍如何使用我们的17Track来完成Odoo的集成并使用17Track提供的服务。 模块获取 ---- 模块已经上架[AppStore](https://apps.odoo.com/apps/modules/19.0/mommy_delivery_17track) ,需要的同学可以自行购买。 当前支持版本:15.0/16.0/17.0/18.0/19.0 模块安装与配置 ------- 首先,我们在系统中安装17track模块。 ![17track](https://xp.odoohub.com.cn/chapter10/images/17track.png) 安装完成后,我们需要在系统-设置-系统参数中设置从17Track官网申请的Access Token ![17token](https://xp.odoohub.com.cn/chapter10/images/17token.png) 激活承运商 ----- 因为17Track支持大量的承运商,考虑到用户一般来说只会使用常用的几个,因此本模块默认是把所有的承运商归档掉的。用户需要从已归档的列表中,激活自己需要的承运商。 ![archived](https://xp.odoohub.com.cn/chapter10/images/archived.png) 配置web hook地址 ------------ 17Track使用的是信息同步方式使用webhook推送,因此,我们需要在17Track后台设置webhook地址。 物流跟踪 ---- 配置完webhook地址后,我们就可以在odoo的调拨单中实现运单跟踪了。 ![17track](https://xp.odoohub.com.cn/chapter10/images/17track2.png) results matching "" =================== No results matching "" ====================== --- # 第十五章 快递鸟模块 · odoo实施参考手册-青岛欧姆网络科技 [第十五章 快递鸟模块](https://xp.odoohub.com.cn/) ========================================= 快递鸟模块 ===== [快递鸟](http://www.kdniao.com/reg?from=TX-Kevin) 是国内使用较为广泛的快递集成查询平台之一,提供了600+的物流公司对接接口,是比较不错的物流查询服务选择。随着odoo17.0的发布,我们最近也将快递鸟模块升级到了17.0。下面我们来详细看一下如何使用。 注册快递鸟账号 ------- 要使用快递鸟的查询服务,我们首先需要在[快递鸟](http://www.kdniao.com/reg?from=TX-Kevin) 平台注册一个账号。 注册完成后,可以在个人中心获取到用户ID和APPKEY: ![kdn](https://xp.odoohub.com.cn/chapter10/images/kdn.png) 安装并设置快递鸟模块 ---------- 拿到用户ID和APPKEY以后,我们就可以设置我们的快递鸟模块了。首先,在系统中设置中勾选快递鸟集成模块: ![kdn2](https://xp.odoohub.com.cn/chapter10/images/kdn2.png) 安装完成后,我们在快递鸟设置菜单中把用户ID和APPKEY填到设置中。 ![kdn3](https://xp.odoohub.com.cn/chapter10/images/kdn3.png) 然后我们就可以开始使用快递鸟进行发货了。 激活要使用的承运商 --------- 对于大多数人来说,经常使用的快递服务商可能就那么几个,因此快递鸟提供的600+物流商过于冗余,因此我们默认将所有的承运商都进行了归档处理。如果想要使用其中的某几个,只需要在归档的列表中进行激活处理即可。 ![kdn4](https://xp.odoohub.com.cn/chapter10/images/kdn4.png) 使用快递鸟发货 ------- 正如前面所说,我们这里以顺丰速递为例,进行发货操作。我们在销售单中做一单销售,然后在生成的发货单中选择顺丰速递作为承运商。 ![kdn5](https://xp.odoohub.com.cn/chapter10/images/kdn5.png) 与之前版本不同的是,我们在17.0版本中修正了电子面单的打印方式,采取了跟其他物流方式一样的处理逻辑。当用户完成调拨时,自动将生成的电子面单附加在讨论区中。 ![kdn6](https://xp.odoohub.com.cn/chapter10/images/kdn6.png) 打印电子面单 ------ 点击附件的PDF文件,我们就可以打印电子面单了。 ![kdn7](https://xp.odoohub.com.cn/chapter10/images/kdn7.png) 物流查询 ---- 快递的物流信息会自动显示在快递单号下方,用户可以点击更新物流信息进行手动更新。 ![kdn8](https://xp.odoohub.com.cn/chapter10/images/kdn8.png) 快递鸟的优势与缺点 --------- 优点自然是快递鸟集成的快递商很多,不用单独进行对接。缺点是,快递鸟的查询服务需要付费且不支持运费查询。假如你只是想要使用某个承运方(例如顺丰),更推荐单独对接。 技术支持 ---- 想要了解更多关于快递鸟模块的信息,欢迎关注公众号OdooHub获取更多内容。 results matching "" =================== No results matching "" ====================== --- # 第八章 企业微信基础 · odoo实施参考手册-青岛欧姆网络科技 [第八章 企业微信基础](https://xp.odoohub.com.cn/) ========================================= 企业微信解决方案 ======== > 本文基于企业微信模块(17.0.2.1) \\ 兼容版本:13.0 15.0 16.0 \\ 版本间有些许差异,详询客服 * [需求背景](https://xp.odoohub.com.cn/chapter10/WeWork.html#%E9%9C%80%E6%B1%82%E8%83%8C%E6%99%AF) * [后台配置](https://xp.odoohub.com.cn/chapter10/WeWork.html#%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E7%AE%A1%E7%90%86%E5%90%8E%E5%8F%B0%E9%85%8D%E7%BD%AE) * [Odoo端配置](https://xp.odoohub.com.cn/chapter10/WeWork.html#odoo%E7%AB%AF%E9%85%8D%E7%BD%AE) * [基础版功能](https://xp.odoohub.com.cn/chapter10/WeWork.html#%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D) * [基础数据同步](https://xp.odoohub.com.cn/chapter10/WeWork.html#%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE%E5%90%8C%E6%AD%A5) * [员工同步](https://xp.odoohub.com.cn/chapter10/WeWork.html#%E5%91%98%E5%B7%A5%E5%90%8C%E6%AD%A5) * [扫码登录](https://xp.odoohub.com.cn/chapter10/WeWork.html#%E6%89%AB%E7%A0%81%E7%99%BB%E5%BD%95) * [菜单管理](https://xp.odoohub.com.cn/chapter10/WeWork.html#%E8%8F%9C%E5%8D%95%E7%AE%A1%E7%90%86) * [工作台设置](https://xp.odoohub.com.cn/chapter10/WeWork.html#%E5%B7%A5%E4%BD%9C%E5%8F%B0%E8%AE%BE%E7%BD%AE) * [机器人消息](https://xp.odoohub.com.cn/chapter10/WeWork.html#%E6%9C%BA%E5%99%A8%E4%BA%BA%E6%B6%88%E6%81%AF) * [讨论组消息](https://xp.odoohub.com.cn/chapter10/WeWork.html#%E8%AE%A8%E8%AE%BA%E7%BB%84%E6%B6%88%E6%81%AF) 需求背景 ---- 企业微信作为当前企业内部沟通的几大内部IM软件之一,其优势在于能够跟微信打通,方便与客户联系。很多客户都有需求,要在企业微信内部对工作进行及时通知和反馈,在企业微信中进行审批,乃至统计员工的考勤和费用等等。 本模块将展示,通过与odoo的关联,我们将如何利用企业微信提高我们的工作效率。 企业微信管理后台配置 ---------- 首先,要使用[企业微信](https://work.weixin.qq.com/) ,您必须要先注册一个企业微信账号。 注册完成之后,使用管理员账号登录[管理后台](https://work.weixin.qq.com/wework_admin/frame) ### 创建应用 要使用企业微信,我们需要创建一个应用。在企业微信后台-应用管理-创建应用,创建一个应用。这里我们起名Odoo: ![1](https://xp.odoohub.com.cn/chapter10/images/wework1.png) ### 获取基础参数 然后,我们需要获取以下三个参数: * 企业ID: 在企业微信后台-我的企业获取,例: ww123456 * AgentID: 应用ID,例:1000001 * 密钥:应用密钥,例:abcdefghijklmn 然后我们需要设置**网页授权及JS-JDK的域名**用于OAuth授权: ![2](https://xp.odoohub.com.cn/chapter10/images/wework2.png) 最后,还要把服务器的IP加入到**企业可信IP**的白名单中。 Odoo端配置 ------- 我们在企业微信后台配置完成之后,就可以在odoo中进行接入了。首先,在用户管理中,把用户加入到**企业微信经理**用户组中。 然后我们在主菜单中点击企业微信,进入企业微信模块内。在企业微信模块-设置-企业微信中,填入我们前面拿到的几个参数: ![3](https://xp.odoohub.com.cn/chapter10/images/wework3.png) > 如果需要验证域名归属,将后台生成的验证文本文件名和内容分别填入到域名设置中即可完成校验。 ### 消息解密 如果需要解析企业微信服务器发送来的消息,还需要配置EncodingAESKEY和Token, 这两个参数可以在企业微信后台消息API设置中获取到。 ### 绑定公司 设置完企业微信应用之后,我们还要绑定使用的公司才能正常使用。在企业微信-公司-企业微信选项卡中,选中我们刚才创建的应用。 ![4](https://xp.odoohub.com.cn/chapter10/images/wework4.png) 这样就完成了Odoo端的基础配置。下面我们来看一下企业微信模块拥有哪些功能。 功能介绍 ---- ### 基础数据同步 接入企业微信后的第一件事就是把企业微信中的部门和员工数据同步到Odoo中,我们在企业微信-设置-同步部门/同步员工,两个菜单可以分别完成两个同步动作。 ![5](https://xp.odoohub.com.cn/chapter10/images/wework5.png) ### 员工同步 在进行员工同步时,用户可以根据自己的需要选择**自动绑定用户**或者**创建用户** ![6](https://xp.odoohub.com.cn/chapter10/images/wework6.png) #### 自动绑定 同步员工数据时,默认根据员工姓名进行匹配,也可以在应用的设置中调整匹配策略。目前支持的匹配策略有: * 根据姓名匹配 * 根据邮箱匹配 * 根据电话匹配 * 根据邮箱或电话匹配 * 以上任意一条满足匹配 #### 自动创建系统用户 如果勾选了自动创建客户,那么系统会自动查找当前同名用户是否存在,如果不存在则自动创建一个同步用户。 > 自动创建的用户,登陆名称为其企业微信ID #### 敏感信息授权 企业微信于2022年将员工头像、邮箱和电话作为隐私信息作了权限设置,只有员工同意授权后,才能被应用获取。 在员工信息页面点击动作-发送授权消息,给员工发送授权申请,员工在企业微信端点击授权之后,才可以获取到头像、邮箱和电话等敏感信息。 ![16](https://xp.odoohub.com.cn/chapter10/images/WX16.png) ### 扫码登录 同步完基础数据,那么就可以开启扫码登录功能,简化员工登录步骤。在设置-用户-OAuth服务商中,打开Wework OAuth Provider一行: ![7](https://xp.odoohub.com.cn/chapter10/images/wework7.png) 勾选允许选项。然后将**企业ID**和**AgentID**分别填入企业ID和客户ID即可。 我们退出登录就可以看到登录界面多出了一个企业微信登录按钮,点击出现扫码登录界面,使用企业微信扫码即可完成登录。 ![8](https://xp.odoohub.com.cn/chapter10/images/wework8.png) ### 菜单管理 我们的自定义应用会出现在企业微信的应用列表中,应用支持自定义菜单,我们可以在系统中设置我们想要的菜单,并分配合适的动作。 ![10](https://xp.odoohub.com.cn/chapter10/images/wework10.png) 一个应用可以支持最多3个一级菜单和5个二级菜单。 我们可以在菜单设置中直接关联我们系统中的特定页面,从而一键直达想要的数据。 ![11](https://xp.odoohub.com.cn/chapter10/images/wework11.png) ### 工作台设置\* 与应用主页相比,工作台的位置更为显眼,而且可以定制数据展示方式。 在企业微信-应用-工作台中,创建一个工作台,并设置它的样式: ![12](https://xp.odoohub.com.cn/chapter10/images/wework12.png) 然后用户可以在企业微信客户端的工作台出看到我们定制的数据展示: ![13](https://xp.odoohub.com.cn/chapter10/images/wework13.png) ### 机器人消息 我们很多业务消息可以借助机器人来实现实时同步,本模块即支持定制化的机器人消息。下面,我们来看一下如何配置一个机器人实现业务消息实时发送。 首先,我们需要创建一个机器人。在机器人菜单下,我们创建一个机器人: ![Robot](https://xp.odoohub.com.cn/chapter10/images/wework14.png) Webhook URL:写我们创建的机器人的URL地址。 发送机器人消息,我们在菜单机器人-机器人消息下,创建一条测试消息: ![Robot Message](https://xp.odoohub.com.cn/chapter10/images/wework15.png) 然后我们就可以在机器人所在的群接收到这个消息了。 ![Robot Message](https://xp.odoohub.com.cn/chapter10/images/wework16.png) ### 讨论组消息 为了跟方便的与企业微信互通, 我们在设置中加入了即时通讯设置, 用户需要在设置中打开这个开关: ![19](https://xp.odoohub.com.cn/chapter10/images/wework19.png) 然后在任一单据的邮件讨论区@某员工,会自动发一条企业微信通知。 ![25](https://xp.odoohub.com.cn/chapter10/images/wework25.png) 某员工会即时在企业微信中收到该消息。 ![20](https://xp.odoohub.com.cn/chapter10/images/wework21.png) 员工也可也在此对话框中即时回复,回复的消息会根据最近一条记录,附加到原单据的对话区。 > 消息格式默认为文本,可以到企业微信设置中选择卡片式消息进行推送。 ![wx15](https://xp.odoohub.com.cn/chapter10/images/wx15.png) 结语 -- 利用企业微信,接合odoo我们可以做的事情有很多,例如流程审批和员工考勤等等。本文只是介绍了企业微信解决方案的基础部分和常见的使用场景。更多的功能,我们将在后面的高级应用部分举例。 关于Odoo企业微信更多的应用消息,请关注公众号OdooHub。 results matching "" =================== No results matching "" ====================== --- # 第十一章 顺丰速递 · odoo实施参考手册-青岛欧姆网络科技 [第十一章 顺丰速递](https://xp.odoohub.com.cn/) ======================================== 顺丰速递 ==== > 适用于:15.0 16.0 17.0 18.0,不同版本功能有所不同, 详询客服。 顺丰速运作为国内快递业的标杆企业,使用的频率可谓非常之高。对odoo国内生态而言,怎么能少了如此重要的一个对接方案呢。本文将展示如何使用[顺丰速递](https://hub.mixoo.cn/shop/8) 模块来完成国内快递业务的对接。 先决条件 ---- 需要安装以下python库: autils == 0.3.12 sf-sdk >= 2.0.0.8 丰桥对接 ---- 要使用顺丰模块,首先我们要注册一个[丰桥](https://open.sf-express.com/) (顺丰API开放平台)账号,然后拿到**客户编码**、**校验码**和**月结号**。 1. 首先,我们进入丰桥首页,点击开发者对接,新建一个应用。 ![sf1](https://xp.odoohub.com.cn/chapter10/images/sf1.png) 2. 填入应用名称,开发者语言和应用描述,是否设置沙箱白名单保持默认选项,点击完成。 ![sf2](https://xp.odoohub.com.cn/chapter10/images/sf2.png) 3. 完成应用创建之后,点击查看API,关联我们需要的API。 ![sf3](https://xp.odoohub.com.cn/chapter10/images/sf3.png) 4. 顺丰模块需要的API列表如下: * 云打印面单接口 * isv获取商家自定义模板列表 * 下订单接口 * 订单结果查询接口 * 订单取消接口 * 订单筛选接口 * 路由查询接口 5. 回到应用,点击应用详情,获取**顾客编码**,**月结卡号**和**校验码**。 ![sf4](https://xp.odoohub.com.cn/chapter10/images/sf4.png) 完成上面5步我们就完成了顺丰对接的基本设置。 模块配置 ---- 接下来,我们来配置我们的顺丰模块。 1. 首先,我们在设置-一般设置-销售-发货设置中,勾选顺丰速运: ![sf5](https://xp.odoohub.com.cn/chapter10/images/sf5.png) 然后保存,这样就安装好了顺丰模块。 2. 在库存-设置-送货方式中点击顺丰速运: ![sf6](https://xp.odoohub.com.cn/chapter10/images/sf6.png) 3. 打开顺丰速运设置,把月结卡号、顾客编码和校验码填入到基础设置中。 ![sf7](https://xp.odoohub.com.cn/chapter10/images/sf7.png) 4. 在设置中选择,自己想要使用的电子面单编码: ![sf8](https://xp.odoohub.com.cn/chapter10/images/sf9.png) 至此,我们就完成了顺丰模块的基本配置。 使用手册 ---- 下面我们来详细介绍顺丰模块的具体功能。 > 丰桥平台要求API续测试3次成功以后才可以接入生产,因此我们在开始使用的时候应用首先使用沙箱校验码,完成测试以后再换成生产校验码。 ### 1\. 销售订单添加顺丰快递 我们创建一个销售订单,例如卖了一个笔记本电脑,然后添加送货方式,选择顺丰速运: ![sf8](https://xp.odoohub.com.cn/chapter10/images/sf8.png) 然后我们点击确认订单,生成发货单: ![sf](https://xp.odoohub.com.cn/chapter10/images/sf10.png) 发货单已经默认选择了顺丰,然后我们选择合适的顺丰产品和货物描述,点击验证,完成出库。之后我们就可以在信息栏中可以看到生成了电子面单。 ![sf11](https://xp.odoohub.com.cn/chapter10/images/sf11.png) ### 2\. 取消订单 在物流跟踪旁边点击取消按钮,可以取消订单。 ![sf12](https://xp.odoohub.com.cn/chapter10/images/sf12.png) ### 3\. 物流跟踪 当我们每次打开发货单时,模块都会帮我们自动更新订单的当前路由信息。我们可以手动点击更新按钮,实时获取最新的物流信息。也可以点击右上角的物流跟踪按钮到顺丰官网进行查询。 ![sf13](https://xp.odoohub.com.cn/chapter10/images/sf13.png) ### 4\. 自定义顺丰源单号 我们提供了三种源单号的生成方式: * 使用发货单号作为顺丰订单的源单号,即SO/OUT/XXX类似的单号直接作为顺丰的源单号。 * 使用发货单的源单号作为顺丰订单的源单号,即PO0001/SO0001等源单据的单号作为顺丰订单号 * 使用随机字符串作为顺丰订单的源单号,即使用发货单号+4位随机字符串的方式生成顺丰订单号。例如WH/OUT/00015-r9jc。 ### 5\. 自定义发货地址类型 我们同时提供了三种发货地址的设置方式: * 使用当前公司地址作为发货地址: 适用于统一发货地址的发货方式。 * 使用发货仓库地址作为发货地址: 适用于公司地址和发货仓库不在一块且有多个仓库的发货方式。 * 使用固定地址作为发货地址: 指定固定的发货地址作为订单的发货地址。 另外,我们也支持自定义地址的格式,如同销售订单的地址格式自定义一样。 ### 6\. 跨境支持 对于跨境业务,顺丰要求必须申报货物价值,因此,我们加入了申报货物价值的支持。 ![sf14](https://xp.odoohub.com.cn/chapter10/images/sf14.png) 如果您的发货地或收货地址在境外,此项为必填。 ### 7\. 语言支持 我们同时支持多语言设置,可以根据系统改变或指定固定的语言格式。 ![sf15](https://xp.odoohub.com.cn/chapter10/images/sf15.png) ### 8\. 批量打印面单 为了方便用户统一下单和获取电子面单,本模块增加了批量打印电子面单的功能。 > 版本要求:15.7.7+,16.8.0+,17.0.1.0+,18.0.1.0+ FAQ --- ### 1\. 网站下单时预估价格没有显示 请检查发货地址和目的地址是否合法,可以根据后台日志提示进行诊断。 ### 2\. 技术支持 顺丰开放平台接口要求测试3次以上才可以接入正式环境,不知道的小伙伴可以关注公众号OdooHub,联系客服获取在线技术支持(凭购买凭证受理)。 results matching "" =================== No results matching "" ====================== --- # 第九章 企业微信高级 · odoo实施参考手册-青岛欧姆网络科技 [第九章 企业微信高级](https://xp.odoohub.com.cn/) ========================================= 第二章 企业微信高级应用 ============ 在前面我们了解了企业微信和odoo的基础应用,实际上结合企业微信odoo可以做的东西更多。本章我们就将带来高级版的内容介绍。 * [项目](https://xp.odoohub.com.cn/chapter10/WeWorkPlus.html#%E9%A1%B9%E7%9B%AE) * [考勤](https://xp.odoohub.com.cn/chapter10/WeWorkPlus.html#%E8%80%83%E5%8B%A4) * [审批](https://xp.odoohub.com.cn/chapter10/WeWorkPlus.html#%E5%AE%A1%E6%89%B9) 项目 -- 我们对项目模块也加入了支持,用户需要在设置中打开项目支持功能 ![22](https://xp.odoohub.com.cn/chapter10/images/wework22.png) 当项目管理员在任务中给员工分配了任务时,会自动给员工发送一条企业微信通知。 ![23](https://xp.odoohub.com.cn/chapter10/images/wework23.png) ![24](https://xp.odoohub.com.cn/chapter10/images/wework24.png) 员工还可以在企业微信里直接通过链接打开该任务。 考勤 -- 企业微信方案解决了日常公司管理中的考勤问题,下面我们看一下如何使用。 ### 查看企业微信考勤记录 首先,我们要把在企业微信管理后台把打卡的权限开放给我们的自建应用。 ![17](https://xp.odoohub.com.cn/chapter10/images/wework17.png) > 企业微信官方于2023-12-01之前的应用使用打卡专属APPID和密钥,之后的版本取消了。 安装了高级版企业微信应用之后,我们可以在根菜单下看到一个考勤菜单: ![11](https://xp.odoohub.com.cn/chapter10/images/11.png) 我们点开考勤菜单可以看到考勤人员的列表,点开其中一个可以看到该人员的所有企业微信考勤记录。 ![12](https://xp.odoohub.com.cn/chapter10/images/12.png) ### 原生考勤记录 我们在同步企业微信考勤记录的时候,同步把记录同步到了原生的出勤应用中,以方便后期的薪酬统计。 ![13](https://xp.odoohub.com.cn/chapter10/images/13.png) ### 同步设置 考虑到不同客户的不同需求,我们在设置中对同步操作做了一个策略: * 今天: 只同步今天的考勤记录 * 一周: 同步截至到今天的一周前的考勤记录 * 一月: 同步截止到今天的一月的考勤记录 > 针对特定日期的同步,用户可以在定时任务中指定特定的日期进行同步,详细方案请咨询[欧姆网络](https://odoohub.com.cn/) > 技术支持。 在创建原生应用的考勤记录时,通常会有诸多条件限制,例如,原生不允许在缺少前一天的签出记录的情况下创建新的签到记录。因此,我们加入了在碰到同步异常时的策略: * 留空: 即碰到异常则跳过当前记录的同步 * 与签到时间一致: 使用签到时间作为签出时间,以保证原生记录的完整性 ### 同步操作 为了方便用户操作,我们在多个地方加入了同步设置。首先,用户可以在企业微信的设置菜单中,点击**同步考勤记录**菜单进行同步: ![14](https://xp.odoohub.com.cn/chapter10/images/14.png) 单击此菜单后,系统会根据设置中的同步策略自动同步企业微信考勤记录。 另外,我们也可以单独针对某个员工进行同步,步骤是点击员工资料,在**动作-同步企业微信考勤记录**: ![15](https://xp.odoohub.com.cn/chapter10/images/15.png) 最后,我们在定时任务中也加入了同步功能,用户可以根据自己的需求设置自动同步任务计划,以节省手动操作: ![16](https://xp.odoohub.com.cn/chapter10/images/16.png) 视频介绍如下: 视频介绍 审批 -- 由于Odoo原生并未实现复杂的审批流程设置,常见的解决方案是使用OCA的tier系列模块,但由于过于复杂的设置和并不十分友好的展示方式,导致企业在实际使用落地过程中的体验并不是很理想。鉴于国内企业主流的使用工具是钉钉,企业微信等IM工具,因此我们在解决方案中添加了对此类软件的支持,借助这些软件提供的审批流功能,从而补齐了Odoo在审批方面的弱项。 现在,我们以采购为例来展示一下,如何借助企业微信来实现审批流的设置。 首先我们要安装企业微信高级版模块,然后在设置-企业微信-审批中勾选采购审批: ![42](https://xp.odoohub.com.cn/chapter10/images/wework42.png) ### 企业微信后台设置 然后我们要到企业微信后台设置审批应用: ![40](https://xp.odoohub.com.cn/chapter10/images/wework40.png) 将我们自定义的应用添加审批权限。然后,我们需要到我们的自定义应用中设置后调接口: ![41](https://xp.odoohub.com.cn/chapter10/images/wework41.png) 配置的回调URL为: `https://yourdomain/wework/approval` ### 消息设置 然后我们需要在odoo的后台企业微信的设置中添加解析企业微信消息的AESKEY和Token: ![26](https://xp.odoohub.com.cn/chapter10/images/wework26.png) ### 同步审批模版 然后我们在设置-审批-审批模版中,将采购的模板同步到系统中: ![27](https://xp.odoohub.com.cn/chapter10/images/wework27.png) > 企业微信的审批模版分为原生和自定义两类,这里我们使用的是原生模版 然后我们在审批模板中对审批模板的各个控件进行相应的赋值(字段映射)。 ### 提交采购审批 完成审批模板的设置之后,就可以在采购询价单中提交微信审批了。 ![28](https://xp.odoohub.com.cn/chapter10/images/wework28.png) 我们在做完询价单后,点击提交微信审批,即可把采购订单提交给企业微信审批流中进行审批。 ![29](https://xp.odoohub.com.cn/chapter10/images/wework29.png) 审批提交成功之后,系统会自动显示出在企业微信中的审批单号和审批状态。 ![30](https://xp.odoohub.com.cn/chapter10/images/wework30.png) 采购管理者在企业微信端审批通过之后,采购订单自动进入确认状态。 ![31](https://xp.odoohub.com.cn/chapter10/images/wework31.png) 日程管理 ---- 首先,我们要在企业微信管理后台-协作-日程,在**可调用接口的应用**中添加我们的应用: ![wxplus10](https://xp.odoohub.com.cn/chapter10/images/wxplus10.png) 然后我们就可以在odoo中创建日历同步到企业微信了: results matching "" =================== No results matching "" ====================== --- # 第十六章 云途物流 · odoo实施参考手册-青岛欧姆网络科技 [第十六章 云途物流](https://xp.odoohub.com.cn/) ======================================== 云途物流 ==== > 支持版本:15.3+/17.0.1.2+/19.0.1.3+ > > English version: [YunExpress Integration](https://xp.odoohub.com.cn/en/chapter10/YUN.html) 云途物流是国内一家主要服务于跨境电商小包裹的物流服务商,目前开通了多条国际线路,可以作为跨境电商行业小货的物流选项之一,本章将介绍如何使用Odoo19.0集成云途物流服务。 * [账号注册](https://xp.odoohub.com.cn/chapter10/YUN.html#%E8%B4%A6%E5%8F%B7%E6%B3%A8%E5%86%8C) * [安装云途物流模块](https://xp.odoohub.com.cn/chapter10/YUN.html#%E5%AE%89%E8%A3%85%E4%BA%91%E9%80%94%E7%89%A9%E6%B5%81%E6%A8%A1%E5%9D%97) * [订单类型](https://xp.odoohub.com.cn/chapter10/YUN.html#%E8%AE%A2%E5%8D%95%E7%B1%BB%E5%9E%8B) * [产品](https://xp.odoohub.com.cn/chapter10/YUN.html#%E4%BA%A7%E5%93%81) * [申报策略](https://xp.odoohub.com.cn/chapter10/YUN.html#%E7%94%B3%E6%8A%A5%E7%AD%96%E7%95%A5) * [附件服务](https://xp.odoohub.com.cn/chapter10/YUN.html#%E9%99%84%E4%BB%B6%E6%9C%8D%E5%8A%A1) * [销售运费预估](https://xp.odoohub.com.cn/chapter10/YUN.html#%E9%94%80%E5%94%AE%E8%BF%90%E8%B4%B9%E9%A2%84%E4%BC%B0) * [获取运单号](https://xp.odoohub.com.cn/chapter10/YUN.html#%E8%8E%B7%E5%8F%96%E8%BF%90%E5%8D%95%E5%8F%B7) * [运单跟踪](https://xp.odoohub.com.cn/chapter10/YUN.html#%E8%BF%90%E5%8D%95%E8%B7%9F%E8%B8%AA) * [FAQ](https://xp.odoohub.com.cn/chapter10/YUN.html#faq) 账号注册 ---- 首先我们需要到[云途物流开放平台](https://open.yunexpress.cn/) 注册一个开发者账号,然后创建一个应用,拿到如下三个密钥 * APPID: 应用ID * APPSCRET: 应用密钥 * SOUCEKEY: 确认来源的字符串 ![8](https://xp.odoohub.com.cn/chapter10/images/yun8.png) > SourceKey在设置用户信息中获取 安装云途物流模块 -------- 拿到上述三个参数,我们就可以安装我们的模块了,到系统-设置-销售中,勾选使用云途物流发货: ![1](https://xp.odoohub.com.cn/chapter10/images/yun1.png) 保存之后就可以到库存-设置-物流方法中选择云途物流进行配置了: ![2](https://xp.odoohub.com.cn/chapter10/images/yun2.png) 在基础配置中配置前面提到的三个参数,配置完成后我们就可以设置其他参数了。 ### 订单类型 云途物流发货的方式可以分为两种**包裹**和**FBA**: * 包裹:客户端向云途订单系统发起订单预报申请,用于单票寄件场景; * FBA: 客户端向云途订单系统发起订单预报申请,用于FBA(Fulfillment by Amazon)寄件场景; ### 产品 云途物流支持的线路产品列表,点击同步按钮可以更新支持的产品列表。 ![10](https://xp.odoohub.com.cn/chapter10/images/yun10.png) ### 申报策略 我们在运费产品中新增了一个申报名称字段,可以用来填写产品的申报的名称。 ![11](https://xp.odoohub.com.cn/chapter10/images/yun11.png) 这里有两个选项: * 使用申报名称作为英文名称 * 使用申报名称作为中文名称 用户可以根据自己的实际情况进行设置 ### 附件服务 对于发往欧洲的快件,欧盟有可能会要求输入IOSS税号,因此我们在联系人的资料中添加了IOSS字段 ![12](https://xp.odoohub.com.cn/chapter10/images/yun12.png) 当发货商有IOSS税号时使用IOSS税号,如果缺少IOSS税号,则可以在附加服务中添加V1服务是使用云途代收服务进行发货。 销售运费预估 ------ 我们可以在销售单中使用云途物流来预估运费: ![3](https://xp.odoohub.com.cn/chapter10/images/yun3.png) 需要注意的是这里使用的云途物流产品是设置中的物流产品。 获取运单号 ----- 我们在发货单中正常操作,交付产品,操作完成后,会自动生成运单号和电子面单: ![4](https://xp.odoohub.com.cn/chapter10/images/yun4.png) ![5](https://xp.odoohub.com.cn/chapter10/images/yun5.png) 运单跟踪 ---- 跟其他物流方式一样,点击物流跟踪按钮,跳转到官网进行查询。 ![6](https://xp.odoohub.com.cn/chapter10/images/yun7.png) FAQ --- ### 1\. receiver.address\_lines 单个字串长度:1-200 地址栏长度超过200个字符、或地址栏中有空白字段 results matching "" =================== No results matching "" ====================== --- # 第二十三章 韵达速递 · odoo实施参考手册-青岛欧姆网络科技 [第二十三章 韵达速递](https://xp.odoohub.com.cn/) ========================================= 韵达速递 ==== 本文给大家带来的的是odoo与韵达速递的免费对接方案。 注册韵达开放平台 -------- 想要使用韵达速递,首先我们就需要注册一个[韵达开放平台](http://open.yundaex.com/) 的账号,并创建一个开放平台应用。 创建完应用之后,我们需要以下4个参数: * AppKey: 应用的key * AppSecret: 应用的密钥 * PartnerId: 韵达网点分配的客户编码 * Secret:与客户编码对应的密钥 在Odoo中使用韵达速递 ------------ 首先,我们在Odoo安装由[青岛欧姆网络科技](https://www.odoohub.com.cn/) 编写的韵达速递模块。 ![yd](https://xp.odoohub.com.cn/chapter10/images/yd.png) 模块会自动帮我们在运输方法中添加一个韵达速递的物流方式: ![yd2](https://xp.odoohub.com.cn/chapter10/images/yd2.png) 然后我们将前面获取到的几个参数填入到配置中即可。 运费预估 ---- 首先我们创建一个销售订单,然后添加韵达速递为发货方式,然后我们点击运费预估按钮,可以看到韵达给我们估算的运费。 ![yd3](https://xp.odoohub.com.cn/chapter10/images/yd3.png) 下单和电子面单 ------- 我们确认订单,生成的发货单会自动使用韵达速递作为默认的承运商。我们验证货物出库后,就可以看到系统自动帮我们填写了韵达的快递单号,并在聊天记录中输出了电子面单。 ![yd4](https://xp.odoohub.com.cn/chapter10/images/yd4.png) 物流跟踪 ---- 我们点击发货单上的跟踪按钮,页面会直接跳转到韵达官网并将我们的单号默认填写到查询框中。 ![yd5](https://xp.odoohub.com.cn/chapter10/images/yd5.png) 订单取消 ---- 如果我们发货错误,那么直接点击取消按钮即可取消发货。 ![yd6](https://xp.odoohub.com.cn/chapter10/images/yd6.png) results matching "" =================== No results matching "" ====================== --- # 第十九章 飞书/Lark · odoo实施参考手册-青岛欧姆网络科技 [第十九章 飞书/Lark](https://xp.odoohub.com.cn/) =========================================== Lark / 飞书集成 =========== > 当前版本:16.0.1.0+ 17.0.1.1+ 18.0.1.0+ 19.0.1.0+ * [飞书端设置](https://xp.odoohub.com.cn/chapter10/lark.html#%E9%A3%9E%E4%B9%A6lark%E7%AB%AF%E8%AE%BE%E7%BD%AE) * [创建Lark应用](https://xp.odoohub.com.cn/chapter10/lark.html#%E5%88%9B%E5%BB%BAlark%E5%BA%94%E7%94%A8) * [Odoo端设置](https://xp.odoohub.com.cn/chapter10/lark.html#odoo%E7%AB%AF%E8%AE%BE%E7%BD%AE) * [安装模块](https://xp.odoohub.com.cn/chapter10/lark.html#%E5%AE%89%E8%A3%85%E6%A8%A1%E5%9D%97) * [设置用户权限](https://xp.odoohub.com.cn/chapter10/lark.html#%E8%AE%BE%E7%BD%AE%E7%94%A8%E6%88%B7%E6%9D%83%E9%99%90) * [基础配置](https://xp.odoohub.com.cn/chapter10/lark.html#%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE) * [绑定公司](https://xp.odoohub.com.cn/chapter10/lark.html#%E7%BB%91%E5%AE%9A%E5%85%AC%E5%8F%B8) * [应用](https://xp.odoohub.com.cn/chapter10/lark.html#%E5%BA%94%E7%94%A8) * [基础数据同步](https://xp.odoohub.com.cn/chapter10/lark.html#%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE%E5%90%8C%E6%AD%A5) * [扫码登陆](https://xp.odoohub.com.cn/chapter10/lark.html#%E6%89%AB%E7%A0%81%E7%99%BB%E9%99%86) * [讨论消息](https://xp.odoohub.com.cn/chapter10/lark.html#%E8%AE%A8%E8%AE%BA%E6%B6%88%E6%81%AF) 飞书作为国内企业IM三巨头之一,在国内市场有着不错的口碑,尤其是其多维表格相比企业微信和钉钉有着不小的优势。2而飞书的海外版本Lark,目前在在 日本、新加坡、印度市场增长也非常快,欧洲市场也在不断拓展。 今天我们就来看一下Odoo如何和飞书(lark)进行集成。 飞书(lark)端设置 ----------- ### 创建Lark应用 要实现odoo与lark的对接,我们就需要现在lark开发者中心创建一个lark应用,然后拿到AppID和AppSecret: ![lark1](https://xp.odoohub.com.cn/chapter10/images/lark1.png) * AppID: Lark应用ID * AppSecret: Lark应用密钥 拿到这两个参数,我们就可以在Odoo中创建应用来开始进行配置了。 Odoo端设置 ------- ### 安装模块 首先我们要在Odoo中安装由青岛欧姆网络科技开发的[飞书/Lark集成模块](https://apps.odoo.com/apps/modules/19.0/mommy_lark) ,然后点击安装。 ![lark13](https://xp.odoohub.com.cn/chapter10/images/lark13.png) ### 设置用户权限 安装完成后,需要给使用的用户一个lark的权限: ![lark14](https://xp.odoohub.com.cn/chapter10/images/lark14.png) ### 基础配置 回到Odoo主界面,点击飞书/Lark图标,进入飞书应用: ![lark15](https://xp.odoohub.com.cn/chapter10/images/lark15.png) 然后将我们在飞书(Lark)开放平台获取到的App ID和App Secret填入到对应的位置: ![lark16](https://xp.odoohub.com.cn/chapter10/images/lark16.png) ### 绑定公司 创建好应用之后,我们要在使用的公司设置中绑定应用。 ![lark17](https://xp.odoohub.com.cn/chapter10/images/lark17.png) 这样我们的基础配置工作就完成了。我们可以点击测试链接按钮来测试一下我们的配置是否完全正确。 ![lark18](https://xp.odoohub.com.cn/chapter10/images/lark18.png) 如果我们配置无误,那么系统会在右上角弹出链接成功的提示。 应用 -- 配置完成,接下来我们看一下如何使用,首先我们来看数据的同步。 ### 基础数据同步 1. 同步部门数据:点击设置-同步部门菜单,完成后提示同步成功。 ![lark4](https://xp.odoohub.com.cn/chapter10/images/lark4.png) 2. 同步员工数据:打开同步的部门,然后在上方按钮点击同步员工,即可完成该部门员工的同步。 ![lark5](https://xp.odoohub.com.cn/chapter10/images/lark5.png) 这样基础数据同步完成。 ### 扫码登陆 Odoo也支持飞书(Lark)扫码登陆。不过我们需要先在开放平台中给我们的应用添加网页能力: 1. 登陆开放平台,给应用添加**网页应用**的能力,并设置网页端URL: ![lark6](https://xp.odoohub.com.cn/chapter10/images/lark6.png) Redirect Url的设置填写: 你的Odoo地址/mommy_lark/authorize > 你的Odoo地址指的是系统设置中web.base.url参数所指定的参数 2. 在开发配置-权限管理中,给应用设置contact:contact权限: ![lark7](https://xp.odoohub.com.cn/chapter10/images/lark7.png) 3. 在odoo中,打开开发者模式,在用户和公司-OAuth提供商菜单下,激活Lark登陆: ![lark8](https://xp.odoohub.com.cn/chapter10/images/lark8.png) 这样用户就可以在odoo登陆界面使用lark扫码登陆。实际效果: ![lark9](https://xp.odoohub.com.cn/chapter10/images/lark9.png) ![lark19](https://xp.odoohub.com.cn/chapter10/images/lark19.png) 完成授权后,系统将会自动跳转到Odoo绑定的系统账号内。 ### 讨论消息 Lark也支持讨论消息同步。 首先,在需要在lark端接收讨论消息的用户中,打开设置: ![lark10](https://xp.odoohub.com.cn/chapter10/images/lark10.png) 然后我们在用户关注的文档中,给用户发送一个文本消息: ![lark11](https://xp.odoohub.com.cn/chapter10/images/lark11.png) 然后用户就可以在lark中收到消息推送: ![lark12](https://xp.odoohub.com.cn/chapter10/images/lark12.png)。 results matching "" =================== No results matching "" ====================== --- # 第二十章 阿里云短信 · odoo实施参考手册-青岛欧姆网络科技 [第二十章 阿里云短信](https://xp.odoohub.com.cn/) ========================================= 阿里云短信 ===== 由于国内短信发送的限制,我们无法使用odoo原生的短信服务,因此我们决定使用国内短信服务商来平替Odoo原生短信服务。本文介绍如何在Odoo中使用阿里云短信来发送消息。 阿里云端配置 ------ 我们要使用阿里云短信服务,就必须先注册一个阿里云账号,然后拿到API KEY和API SECRET两个参数。 ![aliyun_SMS](https://xp.odoohub.com.cn/chapter10/images/aliyun_sms.png) 然后我们创建短信消息模板: ![aliyun_SMS2](https://xp.odoohub.com.cn/chapter10/images/aliyun_sms2.png) 创建完短信消息模板,之后我们拿到短信消息模板的签名备用。 在odoo中使用阿里云短信 ------------- ### 1\. 开启阿里云短信功能 首先,我们需要开启阿里云短信功能。在设置-欧姆-邮件和短信设置中,勾选阿里云短信: ![aliyun_SMS3](https://xp.odoohub.com.cn/chapter10/images/aliyun_sms3.png) 然后点击保存,完成阿里云模块的安装。 ### 2\. 配置阿里云短信 安装完成之后,我们到设置-技术-阿里云短信菜单中,添加一个阿里云短信配置: ![aliyun_SMS4](https://xp.odoohub.com.cn/chapter10/images/aliyun_sms4.png) ![aliyun_SMS5](https://xp.odoohub.com.cn/chapter10/images/aliyun_sms5.png) ### 3\. 在公司设置中配置阿里云短信 我们在公司设置中,绑定我们刚才设置的阿里云短信配置: ![aliyun_sms6](https://xp.odoohub.com.cn/chapter10/images/aliyun_sms6.png) ### 4\. 创建阿里云短息模板 在设置-技术-阿里云短信-短信模板中添加一个短信模板,这里我们以阿里云测试短信模板为例: ![aliyun_sms7](https://xp.odoohub.com.cn/chapter10/images/aliyun_sms7.png) 这样我们就完成了发送短信的准备工作,下面我们发送一条测试短信。 ### 4\. 发送短信测试 打开设置-技术-电话和短信新建一个短信息: ![aliyun_sms8](https://xp.odoohub.com.cn/chapter10/images/aliyun_sms8.png) 点击发送按钮,完成发送。 成功后状态会更新为已发送: ![aliyun_sms9](https://xp.odoohub.com.cn/chapter10/images/aliyun_sms9.png) 失败后,会提示失败原因。 results matching "" =================== No results matching "" ====================== --- # 第一章 门户 · odoo实施参考手册-青岛欧姆网络科技 [第一章 门户](https://xp.odoohub.com.cn/) ===================================== 第一章 门户 ====== * [门户销售](https://xp.odoohub.com.cn/web/portal.html#%E9%97%A8%E6%88%B7%E9%94%80%E5%94%AE) * [多公司下的门户链接](https://xp.odoohub.com.cn/web/portal.html#%E5%A4%9A%E5%85%AC%E5%8F%B8%E6%9D%A1%E4%BB%B6%E4%B8%8B%E7%9A%84%E9%97%A8%E6%88%B7%E9%93%BE%E6%8E%A5) 门户销售 ---- ### 门户销售订单的搜索 门户销售默认情况下仅支持排序,并不支持搜索和分组查询: ![1](https://xp.odoohub.com.cn/web/images/1.png) 为了方便门户用户的使用,我们在欧姆网络解决方案的[门户销售解决方案](https://odoohub.com.cn/) 中,增加了对销售订单的搜索,分组和查询支持。 ![2](https://xp.odoohub.com.cn/web/images/2.png) 筛选新增了如下支持: ![3](https://xp.odoohub.com.cn/web/images/3.png) 分组新增了如下支持: ![4](https://xp.odoohub.com.cn/web/images/4.png) 搜索新增了以下选项: ![5](https://xp.odoohub.com.cn/web/images/5.png) ### 门户订单的产品图片 客户在我们的网站上中注册成为门户用户之后,可以在个人中心中浏览自己的订单,样式如下图: ![preview](https://xp.odoohub.com.cn/web/images/preview.png) 原生odoo并没有将产品的图片显示出来。有时候我们希望能够让客户在自己的门户上就能查看产品图片,也可以对图片进行放大和缩小以及下载等操作。为此,我们在[门户解决方案](https://odoohub.com.cn/) 中加入了对此功能的支持。 我们在设置-销售-报价单和销售订单中,选中在销售订单中显示产品图片的选项。 ![image](https://xp.odoohub.com.cn/web/images/image.png) 保存之后,我们就可以在门户的预览页面看到产品明细中显示了产品图片: ![sale](https://xp.odoohub.com.cn/web/images/portal_sale.png) 当我点击该图片时,可以预览此图片,进行放大、缩小和下载等操作。 ![preview](https://xp.odoohub.com.cn/web/images/portal_sale_preview.png) 多公司条件下的门户链接 ----------- 有时候我们会有多家公司,多家公司下又有多个网站,这个时候客户容易在多个网站间混乱。我们在系统中给客户发送邀请或重置密码等邮件时,需要根据客户所在的公司/网站进行不同的URL划分。 原生情况下,Odoo支持对门户用户发送的URL网址进行分类,分类的依据是下面的规则: 1. 客户资料中如果绑定了网站,那么使用该网站的URL作为邮件链接的URL。 ![6](https://xp.odoohub.com.cn/web/images/6.png) 2. 如果客户资料中没有,则根据客户的公司字段绑定的网站的URL作为邮件链接的URL。 3. 如果上述2个条件都不满足,则使用系统设置中的web.base.url的值作为邮件链接的URL。 但有时候我们希望生成的邀请/重置链接依据当前公司来进行生成,基于这种需求,在我们的[欧姆网络](https://www.odoohub.com.cn/) 解决方案中做了配置: 在设置-通用设置-权限中,选中基于公司的的门户链接选项即可。 ![7](https://xp.odoohub.com.cn/web/images/7.png) 这样配置完成以后,生成的链接就基于当前公司的网站域名生成相应的邀请链接了。 为了方便共享文档,odoo在每个文档模型中都加入了共享链接的快捷分享功能,用户可以方便的在想要分享的文档上将文档的链接分享给客户/供应商。我们以销售订单为例,来看一下分享功能的使用方法。 共享 -- 我们在想要分享的文档上点击动作-分享,会弹出一个对话框: ![8](https://xp.odoohub.com.cn/web/images/8.png) ![9](https://xp.odoohub.com.cn/web/images/9.png) 在显示的对话框中有如下字段: * 链接:分享链接,可以复制发送给客户的共享链接 * 接收人: 邮件的接收人 * 备注: 分享的备注 我们可以选择给客户发送邮件通知,也可以选择复制链接通过社交媒体的方式发送给客户。使用邮件通知的话,客户将受到一封共享邮件,点击邮件中的链接即可跳转到相应的销售单界面。 ### 页面跳转逻辑 默认情况下,邮件的跳转链接会根据当前用户的权限选择显示不同的页面。如果当前用户拥有该文档的访问权限,那么页面将导向后台订单系统(要求登陆)。如果用户没有该文档的访问权限(例如,公共用户),那么系统将直接显示前台的订单页面。 ![10](https://xp.odoohub.com.cn/web/images/10.png) > 因此我们在设置权限的时候需要注意,如果不希望客户登陆后台系统,就不要给客户拥有该文档的访问权限。 ### 令牌 Odoo在实现上述逻辑的过程中使用了中间授权的访问令牌(Access Token)。访问令牌本质上一个uuid,当用户点击分享的时候赋值给了当前的文档。 当用户使用共享的链接进行访问时,如果用户不具备文档的访问权限,那么系统就会校验链接中携带的访问令牌是否有效。有效则进行前端展示,无效则跳转登陆页面。 每个文档只会生成一个令牌且令牌将一直有效,直到该文档的令牌被刷新。 ### 多令牌和令牌管理 前面讲到过,因为每个文档只能有一个访问令牌。当我们想要将一个文档分享给不同的客户,且想要控制不同的客户的访问有效期的话,就满足不了我们的需求了。因此,我们在[门户解决方案](https://odoohub.com.cn/) 中增加了多令牌和令牌有效期管理的功能。 首先,我们要在设置-欧姆-门户中选中门户拓展: ![11](https://xp.odoohub.com.cn/web/images/11.png) 如果需要销售订单共享令牌控制,则选中门户销售,点击保存即可。 #### 多令牌控制 安装了门户拓展之后,我们可以到设置-技术-数据模型-门户Token中对多令牌进行管理 ![13](https://xp.odoohub.com.cn/web/images/13.png) 所有系统中生成的门户令牌都会在这里进行显示。我们可以在这里对令牌进行控制: * 模型: 文档的模型 * res\_id: 文档的关联ID * 合作伙伴: Token所属的合作伙伴 * Access Token:访问令牌 * 过期日期:令牌的有效期,超过此时间令牌无效。 #### 销售单令牌控制 安装了门户销售拓展之后,我们再去分享销售订单时,分享界面将变成下图所示: ![14](https://xp.odoohub.com.cn/web/images/14.png) 我们可以在此界面选择分配给客户的Token有效期,以控制客户可以访问订单的时间范围。点击发送之后,我们可以在销售订单直接管理令牌: ![15](https://xp.odoohub.com.cn/web/images/15.png) 如果我们希望分享给第二个人更长的时间,则再次点击分享按钮即可: ![16](https://xp.odoohub.com.cn/web/images/16.png) 我们可以在令牌列表中对既有的Token进行管理: ![17](https://xp.odoohub.com.cn/web/images/17.png) results matching "" =================== No results matching "" ====================== --- # 第三章 小票和发票 · odoo实施参考手册-青岛欧姆网络科技 [第三章 小票和发票](https://xp.odoohub.com.cn/) ======================================== POS小票 ===== > 本文基于odoo18.0且安装了欧姆网络的pos解决方案模块[mommy\_pos](https://apps.odoo.com/apps/modules/18.0/mommy_pos) * [小票](https://xp.odoohub.com.cn/pos/RECEIPT.html#%E5%B0%8F%E7%A5%A8) * [页眉和页脚](https://xp.odoohub.com.cn/pos/RECEIPT.html#%E5%AE%9A%E5%88%B6%E5%8C%96%E5%B0%8F%E7%A5%A8%E9%A1%B5%E7%9C%89%E5%92%8C%E9%A1%B5%E8%84%9A) * [自动打印](https://xp.odoohub.com.cn/pos/RECEIPT.html#%E8%87%AA%E5%8A%A8%E6%89%93%E5%8D%B0) * [补打小票](https://xp.odoohub.com.cn/pos/RECEIPT.html#%E8%A1%A5%E6%89%93%E5%B0%8F%E7%A5%A8) * [小票预览](https://xp.odoohub.com.cn/pos/RECEIPT.html#%E5%B0%8F%E7%A5%A8%E9%A2%84%E8%A7%88) * [小票语言设置](https://xp.odoohub.com.cn/pos/RECEIPT.html#%E5%B0%8F%E7%A5%A8%E8%AF%AD%E8%A8%80%E8%AE%BE%E7%BD%AE) * [发票](https://xp.odoohub.com.cn/pos/RECEIPT.html#%E5%8F%91%E7%A5%A8) * [设置](https://xp.odoohub.com.cn/pos/RECEIPT.html#%E9%85%8D%E7%BD%AE) * [给客户开票](https://xp.odoohub.com.cn/pos/RECEIPT.html#%E7%BB%99%E5%AE%A2%E6%88%B7%E5%BC%80%E7%A5%A8) * [后台开票](https://xp.odoohub.com.cn/pos/RECEIPT.html#%E5%90%8E%E5%8F%B0%E5%BC%80%E7%A5%A8) * [二维码开票](https://xp.odoohub.com.cn/pos/RECEIPT.html#%E4%BA%8C%E7%BB%B4%E7%A0%81%E5%BC%80%E7%A5%A8) 小票 -- 小票是POS打印出来给客户的购物凭证。在Odoo中设置小票的方法: 销售点(Point of Sale) -> 设置 -> 销售点 然后选择一个销售点,然后下滑到**发票和小票**节点: ![receipt1](https://xp.odoohub.com.cn/pos/images/pos_reciept1.pdf) ### 定制化小票页眉和页脚 如果想要自定义小票的页眉和页脚,勾选定制化页眉和页脚勾选项,然后在下面的输入框内输入想要显示的文字。 ![receipt2](https://xp.odoohub.com.cn/pos/images/pos_receipt2.png) 然后我们点击保存,回到POS前端,当我们打印小票的时候就会显示出我们自定义的页眉和页脚 ![receipt3](https://xp.odoohub.com.cn/pos/images/pos_receipt3.png) ### 自动打印 Odoo支持收款的时候自动打印POS小票,方法是在设置中勾选**自动打印小票**勾选项。 ![receipt4](https://xp.odoohub.com.cn/pos/images/pos_receipt4.png) > 可能需要ePOS支持 ### 补打小票 正常情况下小票在付款时候进行打印,如果客户丢了小票需要补打,则需要先加载已经支付的小票,然后选择**打印小票** ![receipt5](https://xp.odoohub.com.cn/pos/images/pos_receipt5.png) ### 小票预览 odoo原生条件下,只有在完成支付之后才能显示出小票。但是有时候,用户希望在支付前就能预览小票的样子,为此,我们在POS的通用解决方案中加入了小票预览的选项。下面来看一下如何使用。 首先,我们在POS的门店设置中开启,小票预览: ![Receipt](https://xp.odoohub.com.cn/pos/images/Receipt1.png) 选中此设置后,我们在POS界面选完产品进入支付界面的时候,就可以看到在最右侧显示了当前的小票预览。 ![Receipt2](https://xp.odoohub.com.cn/pos/images/Receipt2.png) ### 小票语言设置 Odoo原生条件下小票语言使用的是当前用户选择的语言,大多数情况下是好用的。但是某些情况下,用户希望可以指定小票的语言,而给客户人的是另外一种语言。例如,收银人员使用中文,而小票打出来使用的是西语。 我们在解决方案中加入了对此功能的支持。在POS的门店设置中,选择小票使用的语言: ![Receipt3](https://xp.odoohub.com.cn/pos/images/Receipt3.png) 然后我们在回到POS预览小票: ![Receipt4](https://xp.odoohub.com.cn/pos/images/Receipt4.png) 发票 -- 对于已经注册的客户,Odoo支持在POS端进行开票。 ### 配置 首先我们需要给POS前台的票设置一个默认日记账。方法是在设置中,下拉到财务节点,然后定义默认日记账: ![recept6](https://xp.odoohub.com.cn/pos/images/pos_receipt6.png) ### 给客户开票 设置好默认日记账之后我们就可以在POS前端给客户进行开票操作了。 ![recept7](https://xp.odoohub.com.cn/pos/images/pos_receipt7.png) ### 后台开票 也会到Odoo的POS后台进行开票,方法是在POS-订单-订单列表中找到要开票的订单,然后点击开票按钮完成开票。 ### 二维码开票 客户也可以选择在小票中的二维码上扫码进行开票,客户需要在扫码后填写必要的信息然后点击获取发票按钮,然后选择下载发票。 results matching "" =================== No results matching "" ====================== --- # 第二十四章 指定支付方式 · odoo实施参考手册-青岛欧姆网络科技 [第二十四章 指定支付方式](https://xp.odoohub.com.cn/) =========================================== 网站电商指定支付方式 ========== Odoo在默认情况下不支持指定同一类型的多个支付方式,举例,客户A在电商网站上有Stripe1和Stripe2两种收款账号,想要针对不同类型的产品使用不同的收款账号,以方便在收款渠道的统计。为了解决这类需求,我们在网站支付解决方案中设计下了如下功能。 安装网站支付模块 -------- 想要使用我们提供的解决方案,首先要安装我们的支付模块。 ![1](https://xp.odoohub.com.cn/chapter10/images/P1.png) 产品指定支付方式 -------- 然后我们在我们的目标产品的销售属性中,指定支持的支付方式。 ![2](https://xp.odoohub.com.cn/chapter10/images/P.png) 指定好了支付方式后,客户在网站进行下单的时候就会显示我们指定的支付方式。 多支付方式的提示 -------- 如果产品A指定了支付方式P1,产品B指定了支付方式P2,当我们在同一单中使用了两种支付方式,那么我们就会提示给客户,请将两种产品分开下单。 ![3](https://xp.odoohub.com.cn/chapter10/images/P3.png) results matching "" =================== No results matching "" ====================== --- # 第一章 通用设置 · odoo实施参考手册-青岛欧姆网络科技 [第一章 通用设置](https://xp.odoohub.com.cn/) ======================================= 第一章 通用设置 ======== 文档布局 ---- 在设置中可以对打印文档的布局进行设置, 包括样式,字体,标语等。其路径位于: 设置-基本设置-公司-配置文档布局: ![文档布局](https://xp.odoohub.com.cn/chapter9/images/layout.png) 打开之后的效果如下图: ![文档布局](https://xp.odoohub.com.cn/chapter9/images/layout2.png) > 文档布局的设置虽然在技术上属于base.document.layout模型,但由于layout模型本身是一个瞬态模型,其实际数据存储在公司(res.company)对象的同名字段中。也因此,我们在进行文档布局对象重载时,应该重载公司对象而非布局对象。 使用传统样式的保存和丢弃按钮 -------------- 在Odoo16.0以后,系统的保存和丢弃的按钮样式变成了图标的上传和复原: ![save](https://xp.odoohub.com.cn/chapter9/) results matching "" =================== No results matching "" ====================== --- # 第二十二章 WindCave · odoo实施参考手册-青岛欧姆网络科技 [第二十二章 WindCave](https://xp.odoohub.com.cn/) ============================================= WindCave 支付 =========== Windcave 是新西兰的一家领先支付技术公司,专注于提供支付解决方案和技术,帮助企业接受各种电子支付方式。该公司原本名为 Payment Express,后来在2020年更名为 Windcave,旨在体现其为全球支付行业带来创新和便捷的愿景。 本文将介绍如何在Odoo18.0门店系统(POS)中接入Windcave支付,以方便新西兰的零售客户更加方便地收款。 安装WindCave模块 ------------ ![wc1](https://xp.odoohub.com.cn/chapter10/images/wc1.png) 安装好Windcave模块,我们就可以在odoo中进行配置了。 配置 -- 首先,我们要在支付方式中添加一项Windcave,打开的POS-设置-付款方式,新建: ![wc2](https://xp.odoohub.com.cn/chapter10/images/wc2.png) 然后,日记账选择银行,支付终端选择Windcave。最后将我们在Windcave官方申请到的支付凭证填入到相应的设置中。 然后我们在要设置的门店中添加windcave的支付方式。 ![wc3](https://xp.odoohub.com.cn/chapter10/images/wc3.png) 在POS中进行收款 --------- 完成这两项配置,我们就可以到POS中使用windcave进行收款了。打开一个新会话,然后下一单: ![wc4](https://xp.odoohub.com.cn/chapter10/images/wc4.png) ![wc5](https://xp.odoohub.com.cn/chapter10/images/wc5.png) 点击发送按钮,门店的HIT设备上会显示要支付的金额,客户使用扫码或银行卡的方式进行付款,完成付款后,我们的POS会自动完成订单。 ![wc6](https://xp.odoohub.com.cn/chapter10/images/wc6.png) 客户支付完成后,我们点击验证,然后把小票打印交给客户即可。 ![wc7](https://xp.odoohub.com.cn/chapter10/images/wc7.png) 结语 -- Odoo18.0的pos前端与17.0相比又进行了大幅改动,导致很多插件都必须经过一番升级才能跟新版本进行适配。 results matching "" =================== No results matching "" ====================== --- # 第二十七章 QuickBooks · odoo实施参考手册-青岛欧姆网络科技 [第二十七章 QuickBooks](https://xp.odoohub.com.cn/) =============================================== QuickBooks ========== QuickBooks 是由美国公司 Intuit 开发的一套中小企业财务与会计管理软件,广泛用于做账、报税、开票、工资管理等日常财务操作。QuickBooks 提供桌面版(QuickBooks Desktop)和在线版(QuickBooks Online),在全球多个国家使用,尤其在北美市场占有率较高。 本章我们来看一下如何借助我们开发的[QuickBook插件](https://apps.odoo.com/apps/modules/18.0/mommy_quickbooks) (限时特惠)来完成常见的对接功能。 QuickBooks端设置 ------------- 同Xero一样,QuickBooks也要通过OAuth2.0来进行认证,因此我们需要先在[开发者中心](https://developer.intuit.com/) 创建一个应用: ![qb](https://xp.odoohub.com.cn/chapter10/images/qb1.png) 这了我们要获取到两个重要参数: * Client ID:应用ID * Client Secret: 应用密钥 同时我们还要获取QuickBoooks的公司ID。 ### 设置Scope 然后我们需要给我们的应用授权,以允许我们的应用访问相应的数据。 ![qb2](https://xp.odoohub.com.cn/chapter10/images/qb2.png) ### 设置Redirect URI 最后,我们要设置该应用的跳转链接的白名单。 ![qb3](https://xp.odoohub.com.cn/chapter10/images/qb3.png) 这样我们就完成了QuickBooks端的设置,接下来我们看一下Odoo端的设置。 Odoo端设置 ------- 首先,我们在应用中心中安装我们的应用mommy\_quickbooks: ![qb4](https://xp.odoohub.com.cn/chapter10/images/qb4.png) 安装完成后,我们进入Quickbooks应用,创建一个Odoo的QuickBooks应用: ![qb5](https://xp.odoohub.com.cn/chapter10/images/qb5.png) 我们将前面获取到的Client ID和Client Secret填入到相应的位置。然后根据自己的实际情况配置相应的参数: * Debug Mode: 测试模式 * Minor Version: QuickBooks Minor版本 * Test Redirect Host: 测试模式下的跳转链接主机 * Scopes: 应用的授权列表 如不知道如何设置保持默认或联系我们的在线客服获取帮助。 ### 绑定公司 创建完应用以后,我们要对将此应用绑定到相应的公司上,同时填写该公司对应的QuickBooks公司ID。 ![qb8](https://xp.odoohub.com.cn/chapter10/images/qb8.png) ### 授权 配置好了参数,那么接下来我们就可以进行应用授权了,点击授权按钮,系统将自动将我们跳转到QuickBooks的认证页面: ![qb6](https://xp.odoohub.com.cn/chapter10/images/qb6.png) 完成认真授权后,页面将自动跳回我们的应用界面,应用状态变为已授权: ![qb7](https://xp.odoohub.com.cn/chapter10/images/qb7.png) 之后我们就可以进行同步操作了。 同步数据 ---- ### 科目同步 首先,我们看科目的同步,由于Odoo的科目设置与QuickBooks并不一致,因此我们创建了一个对照关系表来供用户灵活配置他们之间的类型匹配关系: ![qb9](https://xp.odoohub.com.cn/chapter10/images/qb9.png) 然后我们可以在要同步的科目中进行同步: ![qb10](https://xp.odoohub.com.cn/chapter10/images/qb10.png) ### 发票和退款同步 同样地,我们可以在发票和退款界面进行同步: ![qb11](https://xp.odoohub.com.cn/chapter10/images/qb11.png) ### 产品同步 产品界面,我们可以对产品进行同步 ![qb12](https://xp.odoohub.com.cn/chapter10/images/qb12.png) ### 支付条款的同步 我们当然也可以使用odoo来同步支付条款: ![qb13](https://xp.odoohub.com.cn/chapter10/images/qb13.png) ### 税率同步 最后我们把税率也同步一下 ![qb14](https://xp.odoohub.com.cn/chapter10/images/qb14.png) 结语 -- 更多设置,敬请期待 results matching "" =================== No results matching "" ====================== --- # 第二十八章 京东快递 · odoo实施参考手册-青岛欧姆网络科技 [第二十八章 京东快递](https://xp.odoohub.com.cn/) ========================================= 京东快递 ==== 本章我们来看一下如何使用我们[欧姆网络科技](https://www.odoohub.com.cn/) 的京东快递插件来完成Odoo与京东快递的对接。 前期准备 ---- 首先我们要先在[京东快递](https://open.jdl.com/) 的开放平台注册一个商家\[自研商家\],并完成认证签约。 ![JDL1](https://xp.odoohub.com.cn/chapter10/images/JDL1.png) 入驻之后我们需要拿到如下参数: * Seller ID:商家ID * APPKEY: APPKEY * APPSECRET: APP密钥 * 客户编码: 京东平台的编码(青龙编码) 拿到上述全部参数后,我们就可以安装京东快递模块进行Odoo对接了 对接Odoo ------ 第一步就是安装我们的京东快递模块: ![JDL2](https://xp.odoohub.com.cn/chapter10/images/JDL2.png) 点击激活,完成安装。 ### 京东快递配置 激活之后,我们到仓库-设置-送货方法中创建一个京东快递,物流商选择JDL: ![JDL3](https://xp.odoohub.com.cn/chapter10/images/JDL3.png) 下面简单介绍一下京东快递在Odoo中的配置: * 商家编码: 前面获取到的商家编码 * 京东快递APPKEY: APPKEY * 京东快递密钥: APPSCERET * 客户编码:签约的客户编码(青龙编码) ### 完成授权 配置完之后我们还需要到京东快递官方完成授权才可以使用,具体方法是点击京东快递授权按钮,系统会引导我们跳转到京东快递官方网站进行登录: ![JDL4](https://xp.odoohub.com.cn/chapter10/images/JDL4.png) 使用我们的商家账号登录后,系统会自动跳回Odoo,这样就完成了认证。 ![JDL6](https://xp.odoohub.com.cn/chapter10/images/JDL6.png) > 京东快递的默认有效期是1年,刷新Token的有效期是1年1个月,在过期之前需要进行刷新 接下来我们就可以使用odoo进行操作了。 在Odoo中使用京东快递查询预估费率 ------------------ 我们在销售订单中选择京东快递作为承运商,点击预估费率: ![JDL7](https://xp.odoohub.com.cn/chapter10/images/JDL7.png) 使用京东快递发货并生成电子面单 --------------- 然后我们点击确认按钮确认订单,之后我们验证发货单: ![JDL8](https://xp.odoohub.com.cn/chapter10/images/JDL8.png) 我们可以将附件中的电子面单打印出来贴到货物上然后发走 ![JDL9](https://xp.odoohub.com.cn/chapter10/images/JDL9.png) 取消订单 ---- 如果我们不想发货了,及时点击发货单上的取消按钮即可取消京东快递发货: ![JDL10](https://xp.odoohub.com.cn/chapter10/images/JDL10.png) 物流跟踪 ---- 点击发货单上面的物流跟踪智能按钮我们即可快速在京东物流官网上进行物流查询: ![JDL11](https://xp.odoohub.com.cn/chapter10/images/JDL.png) results matching "" =================== No results matching "" ====================== --- # 第二十一章 NMI支付 · odoo实施参考手册-青岛欧姆网络科技 [第二十一章 NMI支付](https://xp.odoohub.com.cn/) ========================================== NMI支付 ===== NMI是一家支付服务提供商和支付网关,在美国和英国设有办事处,为英国、美国和加拿大的银行和处理商提供信用卡授权和结算服务。本文将介绍如何使用odoo来开启NMI支付。 启用NMI支付 ------- 首先,我们需要在应用模块中安装NMI支付: ![NMI](https://xp.odoohub.com.cn/chapter10/images/nmi1.png) 设置NMI支付 ------- 在网站-设置-支付提供商中选择NMI支付,填写需要使用的NMI支付参数: ![NMI2](https://xp.odoohub.com.cn/chapter10/images/nmi2.png) * SecurityKey: 在NMI商家门户后台设置获取到的私钥。 * Tokenization: 使用Collect.js的Tokenization类型的Token。 * Public Key: Collect Checkout类型的Public Key。 在商城中使用NMI支付 ----------- NMI参数设置之后,就可以在商城中使用NMI支付了。在结算页面,选择NMI支付,然后输入卡号、有效期和CVV,点击支付即可完成支付。 ![nmi3](https://xp.odoohub.com.cn/chapter10/images/nmi3.png) ![nmi4](https://xp.odoohub.com.cn/chapter10/images/nmi4.png) 完成支付后,就可以跟其他订单一样处理了。 results matching "" =================== No results matching "" ====================== --- # 第三章 微信支付 · odoo实施参考手册-青岛欧姆网络科技 [第三章 微信支付](https://xp.odoohub.com.cn/) ======================================= 微信支付解决方案 ======== * [先决条件](https://xp.odoohub.com.cn/chapter10/WeChatPay.html#%E5%85%88%E5%86%B3%E6%9D%A1%E4%BB%B6) * [安装支付模块](https://xp.odoohub.com.cn/chapter10/WeChatPay.html#%E5%AE%89%E8%A3%85%E5%BE%AE%E4%BF%A1%E6%94%AF%E4%BB%98%E6%A8%A1%E5%9D%97) * [配置指引](https://xp.odoohub.com.cn/chapter10/WeChatPay.html#%E9%85%8D%E7%BD%AE%E6%8C%87%E5%BC%95) * [在线商城](https://xp.odoohub.com.cn/chapter10/WeChatPay.html#%E5%9C%A8%E7%BA%BF%E5%95%86%E5%9F%8E) * [销售订单在线支付](https://xp.odoohub.com.cn/chapter10/WeChatPay.html#%E9%94%80%E5%94%AE%E8%AE%A2%E5%8D%95%E5%9C%A8%E7%BA%BF%E6%94%AF%E4%BB%98) * [发票在线支付](https://xp.odoohub.com.cn/chapter10/WeChatPay.html#%E5%8F%91%E7%A5%A8%E5%9C%A8%E7%BA%BF%E6%94%AF%E4%BB%98) 作为国内移动支付的两大提供商之一的微信支付并不在Odoo官方的支持列表中,甚至曾经一度被官方支持的支付宝(Alipay)也在16.0以后的版本中遭到的过时的标记,被并入了asipay的选项中。国内的生态不被官方重视也并非一日,但是需求并不会因为不被重视而消失,因此,我们在欧姆网络科技解决方案中实现了微信支付接入,下面来详细介绍一下。 先决条件 ---- 我们要使用微信支付首先要开通[微信商户平台](https://pay.weixin.qq.com/) ,还要有一个支付场景(PC网站/APP/小程序/公众号),然后才可以接入到微信支付。 安装微信支付模块 -------- 我们在安装了微信支付模块之后,就可以在支付提供商菜单中看到微信支付的选项,然后我们点击激活,完成微信支付的启用。 ![微信支付模块](https://xp.odoohub.com.cn/chapter10/images/wechatpay4.png) ### 配置指引 由于微信支付并没有提供沙箱环境,因此我们无法使用测试模式。这里我们直接配置生产环境参数: ![微信支付](https://xp.odoohub.com.cn/chapter10/images/wechatpay5.png) * 微信支付APPID: 应用ID(公众号、[微信开放平台](https://open.weixin.qq.com/) 认证的网站、小程序、微信小店等微信应用的AppID) * API密钥: 商户API密钥 * 商家ID: [微信商户平台](https://pay.weixin.qq.com/) 的商户号(10位数字) * 商户密钥路径: 商户密钥文件路径(例如,/opt/odoo/perms/apiclient\_key.pem) * 商户证书路径: 商户证书文件路径(例如,/opt/odoo/perms/apiclient\_cert.pem) 配置好了微信支付,那么我们来看它在odoo中的三个使用场景。 在线商城 ---- 配置完微信支付的基础配置,我们就可以使用微信支付了。下面我们来看一个动图例子: ![在线商城](https://xp.odoohub.com.cn/chapter10/images/wechatpay1.gif) 销售订单在线支付 -------- 同样的,我们也可以在订单确认之后直接给客户发送支付链接,客户点开链接之后可以直接使用微信扫码付款: ![销售在线](https://xp.odoohub.com.cn/chapter10/images/wechatpay22.gif) 发票在线支付 ------ 用户点击我们发送的邮件中invoice的链接或是门户预览,都可以找到支付按钮完成支付: ![在线invoice](https://xp.odoohub.com.cn/chapter10/images/wechatpay33.gif) H5支付 ---- > 18.0.2.0+ 版本支持 微信支付的扫码支付方案不再支持微信照片扫描支付,因此我们前面的方案在移动端不能使用。用户需要在另外一台手机上扫码才能完成支付,这无疑增加了用户的支付步骤。我们在后续的版本中增加了对H5功能的支持,当用户在移动端进行操作的时候会自动唤起微信应用完成支付。 下面是操作说明: ![H51](https://xp.odoohub.com.cn/chapter10/images/WXH51.png) ![H51](https://xp.odoohub.com.cn/chapter10/images/WXH52.png) ![H53](https://xp.odoohub.com.cn/chapter10/images/WXH53.png) ![H54](https://xp.odoohub.com.cn/chapter10/images/WXH54.png) results matching "" =================== No results matching "" ====================== --- # 第三十章 AWS S3 · odoo实施参考手册-青岛欧姆网络科技 [第三十章 AWS S3](https://xp.odoohub.com.cn/) ========================================== AWS S3 简单存储 =========== 前面讲述了如何在Odoo中使用阿里云OSS,今天我们来看一下全球范围内更加流行的云服务AWS的对象存储服务S3如何在Odoo中进行操作。 注册S3服务 ------ 同样的,我们需要在开始之前注册一个[S3](https://aws.amazon.com/cn/s3) 的服务,注册成功后,需要开通一个bucket,这里我们以香港为例: ![1](https://xp.odoohub.com.cn/chapter10/images/S3-1.png) 注册成功后,我们需要拿到如下参数: * Secret Key ID:密钥ID * Secret Key: 密钥 * Bucket Name: 存储桶名字 * Regoin: 区域 拿到以上参数后我们就可以配置Odoo的应用了。 S3在Odoo中的配置 ----------- 同阿里云OSS一样,我们需要安装由青岛欧姆网络科技开发的AWS S3简单存储模块: ![2](https://xp.odoohub.com.cn/chapter10/images/S3-2.png) 安装完成后,我们将在主界面看到一个与阿里云OSS类似的应用入口: ![3](https://xp.odoohub.com.cn/chapter10/images/S3-3.png) ### 配置S3参数 点击这个应用,我们在**配置**中新建一个S3应用: ![4](https://xp.odoohub.com.cn/chapter10/images/S3-4.png) 将我们前面在AWS中注册的几个参数分别填入相应的位置。 ### 绑定公司 创建完S3应用之后,我们需要在公司设置中指定我们需要使用的S3应用。 ![5](https://xp.odoohub.com.cn/chapter10/images/S3-5.png) 这样我们就完成了基本配置,接下来就可以将我们的文件无感上传到S3了。 ### 示例1 二进制字段文件的存储 我们还是以联系人的头像为例,我们新建一个客户:贝索斯,然后给他上传一个头像: ![6](https://xp.odoohub.com.cn/chapter10/images/S3-6.png) 我们到附件中查看对应的文件类型: ![7](https://xp.odoohub.com.cn/chapter10/images/S3-7.png) 可以看出文件类型已经变成URL,同时我们可以在S3的后台看到我们存储的文件: ![8](https://xp.odoohub.com.cn/chapter10/images/S3-8.png) ### 批量迁移 同样地,S3也支持将存量数据批量上传到S3,以节省磁盘空间。方法是在设置-S3应用中,设置好数据范围,然后点**将文件存储到S3**按钮: ![9](https://xp.odoohub.com.cn/chapter10/images/S3-9.png) 我们也可以把存在S3的文件取回到本地,点击旁边的从S3获取文件即可: ![11](https://xp.odoohub.com.cn/chapter10/images/S3-11.png) 当然我们也支持手动选择要上传或者下载的文件,在文件列表中选择需要操作的文件,然后在动作中点击相应的动作即可: ![10](https://xp.odoohub.com.cn/chapter10/images/S3-10.png) ### 示例2 单据附件的存储 odoo每个单据的聊天区是用户们最常上传文件的地方之一,我们当然也支持聊天区附件的云存储。这里假设将我们的Odoo服务卖给贝索斯,我们创建了一个销售订单: ![12](https://xp.odoohub.com.cn/chapter10/images/S3-12.png) 我们给他发一份邮件附带报价单: ![13](https://xp.odoohub.com.cn/chapter10/images/S3-13.png) 可以看到我们附件区的PDF报价单已经是链接而不是文档了,我们可以点击预览,看到直接打开的链接是S3上的链接。 ![14](https://xp.odoohub.com.cn/chapter10/images/S3-14.png) ### 删除 我们在Odoo中进行删除时,会同步删除S3上的文件,不需要额外的操作。 ### 权限控制 为了方便用户对自己Odoo系统的内部的文件的灵活控制,我们在S3的设置中添加了可选范围的设置,用户可以根据自己的需求,灵活动态调整哪些单据的附件可以上传到S3(比如,产品文档、用户头像等),哪些留在Odoo本地(报价单,进货单、工资单等),同时我们也支持指定模型的数据公开访问,特定模型的数据私有化访问。 更多细节,请与我们取得联系获取更多资料。 结语 -- AWS时全球领先的云服务厂商,S3也在全球范围内有着极高的使用率。通过Odoo跟S3的打通,跨国贸易、电子商务行业的用户能够为他们公户提供更好的服务,同时也能保证自己的数据安全。 results matching "" =================== No results matching "" ====================== --- # 第三十一章 Google Cloud Storage · odoo实施参考手册-青岛欧姆网络科技 [第三十一章 Google Cloud Storage](https://xp.odoohub.com.cn/) ========================================================= Google Cloud Storage ==================== 本章来介绍如何在Odoo中使用Google Cloud Storage。 > Odoo原生有Cloud Storage模块,支持Google和Azure的云对象存储,但是仅至此Chater和附件的存储,且没有迁移功能,不能支持指定范围内的的对象存储。 注册Google Cloud Storage账号 ------------------------ 同S3一样,我们在开始前需要先获取一个[Google Cloud Storage](https://console.cloud.google.com/storage/overview) 的账号,然后创建一个存储桶: ![1](https://xp.odoohub.com.cn/chapter10/images/GCS1.png) 然后拿到如下参数: * Project ID: Google Project * Bucket Name: 存储桶名称 * Location: 位置 * Servcie Account Json File: 包含服务账号的认证Json文件 然后我们就可以进行Odoo系统一侧的配置了。 Odoo配置 ------ 同样地,我们需要先安装由青岛欧姆网络科技编写的Google Cloud Storage模块: ![2](https://xp.odoohub.com.cn/chapter10/images/GCS2.png) ### 创建Google Cloud Storage应用 我们在Google Cloud Storage应用的设置中创建一个Odoo端的应用: ![3](https://xp.odoohub.com.cn/chapter10/images/GCS3.png) 然后将我们在Google云上获取的几个参数分别填入相应的位置中。 ### 绑定公司 然后我们在公司设置中,选择我们刚刚创建好的GCS应用: ![4](https://xp.odoohub.com.cn/chapter10/images/GCS4.png) ### 激活应用 设置好了之后,我们点击应用中的启用按钮,将应用激活,然后就可以把文件上传到Googlge Clound Storage了。 二进制文件的上传 -------- 对于Odoo内部二进制类型的文件,我们可以直接上传,如果已经配置在GCS的可上传模型中,那么系统会自动使用Google Cloud Storage存储替代本地存储。 这里我们也是以联系人头像为例,我们创建一个名叫拉里佩奇的联系人: ![5](https://xp.odoohub.com.cn/chapter10/images/GCS5.png) 我们在文件列表里可以看到图片已经上传到Google Cloud Storage: ![6](https://xp.odoohub.com.cn/chapter10/images/GCS6.png) 然后我们再到Googlge Cloud Storage后台查看一下: ![7](https://xp.odoohub.com.cn/chapter10/images/GCS7.png) 可以看到我们的图片已经成功上传到Google Cloud Storage后台了。 单据附件的上传 ------- 下面我们再来看一下单据附件的上传,假设我们将Odoo服务卖给拉里佩奇并给他开了一张报价单: ![8](https://xp.odoohub.com.cn/chapter10/images/GCS8.png) 可以看到聊天区的附件已经没有下载按钮了,取而代之的是一个链接,当我们打开这个链接: ![9](https://xp.odoohub.com.cn/chapter10/images/GCS9.png) 会弹出Google Cloud Storage的网址并打开我们的文件。 批量同步 ---- 同样的,我们的Google Cloud Storage模块也支持批量同步操作。操作步骤同阿里云OSS、AWS S3,这里就不多赘述了。 ![10](https://xp.odoohub.com.cn/chapter10/images/GCS10.png) ![11](https://xp.odoohub.com.cn/chapter10/images/GCS11.png) 删除 -- 当我们在Odoo中删除文件时,会自动将Google Cloud Storage中存储的文件自动删除。 结语 -- Google Cloud Storage的操作与阿里云OSS、AWS S3基本没有差别,用户可以根据所使用的云服务厂商自行选择使用哦。 results matching "" =================== No results matching "" ====================== --- # 第二十六章 Xero · odoo实施参考手册-青岛欧姆网络科技 [第二十六章 Xero](https://xp.odoohub.com.cn/) ========================================= XERO 对接 ======= Xero是一款基于云的会计软件,专为中小型企业设计,用于管理财务和简化账务流程,在新西兰和澳大利亚有着广泛的应用。本章将演示如何使用Odoo跟Xero进行无缝链接。 > 适用于18.0.1.8 /17.0.1.6 * [XERO端设置](https://xp.odoohub.com.cn/chapter10/XERO.html#xero%E7%AB%AF%E8%AE%BE%E7%BD%AE) * [获取Tenants ID](https://xp.odoohub.com.cn/chapter10/XERO.html#%E8%8E%B7%E5%8F%96tenants-id) * [Odoo端设置](https://xp.odoohub.com.cn/chapter10/XERO.html#odoo%E7%AB%AF%E8%AE%BE%E7%BD%AE) * [创建Xero应用](https://xp.odoohub.com.cn/chapter10/XERO.html#%E5%88%9B%E5%BB%BAxero-app) * [绑定公司](https://xp.odoohub.com.cn/chapter10/XERO.html#%E7%BB%91%E5%AE%9A%E5%85%AC%E5%8F%B8) * [OAuth授权](https://xp.odoohub.com.cn/chapter10/XERO.html#oauth%E6%8E%88%E6%9D%83) * [Odoo中的应用](https://xp.odoohub.com.cn/chapter10/XERO.html#odoo%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8) * [客户同步](https://xp.odoohub.com.cn/chapter10/XERO.html#%E5%AE%A2%E6%88%B7%E5%90%8C%E6%AD%A5) * [发票同步](https://xp.odoohub.com.cn/chapter10/XERO.html#%E5%8F%91%E7%A5%A8%E5%90%8C%E6%AD%A5) * [修改同步](https://xp.odoohub.com.cn/chapter10/XERO.html#%E4%BF%AE%E6%94%B9%E5%90%8C%E6%AD%A5) * [科目类型匹配](https://xp.odoohub.com.cn/chapter10/XERO.html#%E7%A7%91%E7%9B%AE%E7%B1%BB%E5%9E%8B%E5%8C%B9%E9%85%8D) * [手动匹配科目](https://xp.odoohub.com.cn/chapter10/XERO.html#%E6%89%8B%E5%8A%A8%E5%8C%B9%E9%85%8D%E7%A7%91%E7%9B%AE) XERO端设置 ------- 首先,我们来一下XERO端的设置,我们打开[XERO开发者中心](https://developer.xero.com/app/manage/) ,创建一个应用: ![xero](https://xp.odoohub.com.cn/chapter10/images/xero.png) 这里需要填写应用名称和应用的网站。 然后我们点击左边的配置,配置我们应用的回调地址: ![xero2](https://xp.odoohub.com.cn/chapter10/images/xero2.png) 这里我们要获取两个重要的参数: * Client Id:应用的APPID * Client Secret: 应用的密钥 ### 获取Tenants ID 接下来就是获取商家ID这个参数,点击API Expoloer ![xero3](https://xp.odoohub.com.cn/chapter10/images/xero3.png) 在底部的Headers信息中获取 Tenant ID。 做完以上两步就可以在Odoo中进行对接了。 Odoo端设置 ------- 首先,我们在应用中心中安装[mommy\_xero](https://) 模块: ![xero4](https://xp.odoohub.com.cn/chapter10/images/xero4.png) ### 创建Xero App 我们在设置中新建一个Xero App,然后将我们在第一步获取到的应用APPID和密钥填到相应的位置中: 然后我们在主应用点击Xero应用进入设置页面: ![xero5](https://xp.odoohub.com.cn/chapter10/images/xero5.png) ![xero6](https://xp.odoohub.com.cn/chapter10/images/xero6.png) ### 绑定公司 创建完应用后,我们需要将应用绑定到当前公司才可以使用,在设置-公司中点击公司,然后选择当前公司,在Xero选项卡中选择我们刚才创建的应用: ![xero7](https://xp.odoohub.com.cn/chapter10/images/xero7.png) ### Scope 在进行授权之前,我们需要指定Xero App能够使用的权限scope: ![xero20](https://xp.odoohub.com.cn/chapter10/images/xero20.png) ### OAuth授权 由于Xero认证采取的是OAuth2的认证方式,因此我们只有再经过授权之后才可以正常使用。我们回到Xero应用,点击授权按钮,跳转到Xero官网进行认证: ![xero8](https://xp.odoohub.com.cn/chapter10/images/xero8.png) 认证完成后,页面会自动跳回到我们的App页面,如果没错,那我们可以看到我们的App处于已认证的状态。 ![xero9](https://xp.odoohub.com.cn/chapter10/images/xero9.png) 这就意味这我们可以使用Odoo正常跟Xero进行对接了。 > Xero Access Token有效期30分钟, Refresh Access Token 60天,获取Refresh Token需要使用offline\_access的权限 Odoo中的应用 -------- 接下来,我们看一下如何在Odoo中应用Xero。 ### 客户同步 与QuickBooks不同,Xero并没有强制要求我们在同步invoice的时候必须要同步客户,Xero支持只上传文本格式的客户名称。但我们仍然实现了客户同步的功能,以方便用户进行同步。下面我们来看一下如何使用Xero同步客户。 ![xer16](https://xp.odoohub.com.cn/chapter10/images/xero16.png) 在联系人的表单页面中,我们可以看到同步到Xero的按钮,点击同步即可完成同步操作。同步完成后,联系人资料中的Xero选项卡中会自动将Xero对应的联系人编号写入。 ![xero17](https://xp.odoohub.com.cn/chapter10/images/Xero17.png) 批量同步:如果想要批量同步联系人到Xero,那么在列表视图,勾选想要同步的客户,在动作-同步至Xero的动作中,即可完成同步操作。 **注意**: 联系人资料中的电话或邮箱必须填写,才能同步至Xero ### 产品同步 同样地,我们也可以把产品信息同步到Xero。步骤是,在产品表单页面中点击同步至Xero按钮: ![Xero18](https://xp.odoohub.com.cn/chapter10/images/Xero18.png) 完成同步后,我们可以在Xero选项卡中看到Xero的产品编码。 ![xero19](https://xp.odoohub.com.cn/chapter10/images/Xero19.png) 批量同步:在产品列表视图,我们也可以批量将产品信息同步到Xero。 ### 同步客户 在Xero应用点击客户,打开客户资料,点击同步至Xero联系人按钮,即可完成同步。 ![xero16](https://xp.odoohub.com.cn/chapter10/images/xero16.png) ### 同步产品 点击产品-选择需要同步的产品,点击同步至Xero按钮,完成产品同步: ![xero17](https://xp.odoohub.com.cn/chapter10/images/xero17.png) ### 发票同步 我们在会计模块中打开客户发票: ![xero10](https://xp.odoohub.com.cn/chapter10/images/xero10.png) 然后当我们点击确认或同步Xero按钮后,此发票就会被同步到Xero: ![xero11](https://xp.odoohub.com.cn/chapter10/images/xero11.png) 同步成功后,我们可以在xero选项卡中看到xero的invoice id和invocie number 我们到Xero官网上也可以看到我们的发票信息: ![xero12](https://xp.odoohub.com.cn/chapter10/images/xero12.png) #### 修改同步 当我们修改了发票信息想要同步到Xero时,直接点击同步发票按钮即可。 ![xero13](https://xp.odoohub.com.cn/chapter10/images/xero13.png) ### 科目类型匹配 由于Odoo和Xero的科目类型并不严格一致,因此我们在应用增加了科目类型匹配的策略: ![xero14](https://xp.odoohub.com.cn/chapter10/images/xero14.png) 用户可以根据自己的需求调整匹配关系。 之后将调整完的策略绑定到Xero App中即可。 ### 手动匹配科目 如果不想让odoo的科目和xero的科目代码保持一致,那么我们可以通过手动的填写xero代码的方式完成匹配。具体步骤: 打开科目列表,找到要匹配的科目,点击Xero选项卡,填写匹配的科目代码即可。 ![xero15](https://xp.odoohub.com.cn/chapter10/images/xero15.png) 匹配完成后,我们就可以在业务中使用xero的code进行数据同步了。例如,此时我们就可以在invoice中点击同步将我们的发票明细同步给xero,xero会根据自己的科目设置应用相关的处理。 ### 同步税率 点击财务-税率,选择需要同步的税率,完成Xero同步: ![xero18](https://xp.odoohub.com.cn/chapter10/images/xero18.png) results matching "" =================== No results matching "" ====================== --- # 第三章 访问令牌 · odoo实施参考手册-青岛欧姆网络科技 [第三章 访问令牌](https://xp.odoohub.com.cn/) ======================================= 第三章 访问令牌 ======== results matching "" =================== No results matching "" ====================== --- # 第二十五章 Shopline对接 · odoo实施参考手册-青岛欧姆网络科技 [第二十五章 Shopline对接](https://xp.odoohub.com.cn/) =============================================== Shopline 对接 =========== Shopline 成立于 2013 年,总部最初设在香港,是亚洲领先的智能电商 SaaS 平台,致力于帮助商家“sell from anywhere, to anywhere” 覆盖电商、社交电商、线下 POS 和跨境营运等一体化方案,构建统一的商业生态系统。 今天我们看一下如何利用Odoo跟Shopline对接,帮助Shopline上的客户用Odoo来管理自己的ERP业务。 > 本文适用于Shopline HK、JP和TW > > 适用版本: 15.6 / 18.0.1.3 * [Shopline端设置](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#shopline%E7%AB%AF%E8%AE%BE%E7%BD%AE) * [注册开发者](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E4%B8%80-%E8%87%AA%E8%A1%8C%E6%B3%A8%E5%86%8C%E5%BC%80%E5%8F%91%E8%80%85%E8%B4%A6%E5%8F%B7) * [设置回调地址](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E8%AE%BE%E7%BD%AE%E5%9B%9E%E8%B0%83%E5%9C%B0%E5%9D%80) * [设置访问权限](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E8%AE%BE%E7%BD%AE%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90) * [部署应用上架](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E9%83%A8%E7%BD%B2%E5%BA%94%E7%94%A8%E4%B8%8A%E6%9E%B6) * [安装应用](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E5%AE%89%E8%A3%85%E5%BA%94%E7%94%A8) * [使用欧姆网络科技提供的扩展](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E4%BA%8C%E4%BD%BF%E7%94%A8%E6%AC%A7%E5%A7%86%E7%BD%91%E7%BB%9C%E7%A7%91%E6%8A%80%E6%8F%90%E4%BE%9B%E7%9A%84%E6%89%A9%E5%B1%95) * [Odoo端设置](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#odoo%E7%AB%AF%E8%AE%BE%E7%BD%AE) * [创建shopline应用](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E5%88%9B%E5%BB%BAshopline%E5%BA%94%E7%94%A8) * [访问授权](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E8%AE%BF%E9%97%AE%E6%8E%88%E6%9D%83) * [同步客户](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E5%90%8C%E6%AD%A5%E5%AE%A2%E6%88%B7) * [同步产品](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E5%90%8C%E6%AD%A5%E4%BA%A7%E5%93%81) * [同步订单](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E5%90%8C%E6%AD%A5%E8%AE%A2%E5%8D%95) * [回传发货状态和物流单号](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E5%9B%9E%E4%BC%A0%E5%8F%91%E8%B4%A7%E7%8A%B6%E6%80%81%E5%92%8C%E7%89%A9%E6%B5%81%E5%8D%95%E5%8F%B7) * [结语](https://xp.odoohub.com.cn/chapter10/SHOPLINE.html#%E7%BB%93%E8%AF%AD) Shopline端设置 ----------- Shopline有两种设置方式,一种是自行注册开发者,自行创建和部署应用。另外一种是使用我们提供的应用商店中的应用,直接安装使用。 ### 一、 自行注册开发者账号 首先我们要到Shopline的[开发者中心](https://developers.shoplineapp.com/) 注册一个开发者账号。然后创建一个应用: ![shopline1](https://xp.odoohub.com.cn/chapter10/images/shopline1.png) #### 设置回调地址 Shopline的回调地址需要通过白名单认证,只有经过白名单认证的回调地址才会成功。 ![shopline2](https://xp.odoohub.com.cn/chapter10/images/shopline2.png) #### 设置访问权限 Shopline对于资源访问设置了详细的权限,我们的应用如果想要访问对应的权限需要在授权中选择相应的权限范围: ![shopline3](https://xp.odoohub.com.cn/chapter10/images/shopline3.png) #### 部署应用上架 设置完之后,我们要将我们的应用提交审核后才可以被安装和正式使用。 #### 安装应用 应用上架之后,我们需要在我们的Shopline[商家后台](https://admin.shoplineapp.com/) 安装此应用: ![shopline4](https://xp.odoohub.com.cn/chapter10/images/shopline4.png) ### 二、使用欧姆网络科技提供的扩展 使用我们的提供的扩展可以免去安装和部署的麻烦。在Shopline应用中心搜索Odoo,然后直接安装。 联系我们的客服将您的网站回调地址添加到应用列表中即可完成配置。 Odoo端设置 ------- 首先,我们要在应用中心中安装mommy\_shopline模块,然后在主页面中进入Shopline应用。 ![shopline5](https://xp.odoohub.com.cn/chapter10/images/shopline5.png) ### 创建shopline应用 我们在设置-App中,创建一个Shopline的应用,然后把我们在前面获取到的Client ID、密钥和商家ID填入到指定的位置: ![shopline6](https://xp.odoohub.com.cn/chapter10/images/shopline6.png) 然后我们客户以点测试链接按钮,查看我们的设置是否有误。 ### 访问授权 设置无误之后,我们需要点击授权按钮,系统将会让我们去Shopline官网进行授权,授权之后,我们会返回Odoo主界面。之后,我们就可以正常使用Shopline的应用功能了。 ### 同步客户 我们到设置中,点击同步客户,可以将Shopline上的客户同步到Odoo中。 ![shopline7](https://xp.odoohub.com.cn/chapter10/images/shopline7.png) 同步客户有如下几个选项: * 绑定公司: 如果勾选,那么客户同步的时候会自动绑定到当前公司 ### 同步产品 同步完客户,接下来我们就可以同步产品了。同样地,在设置中,点击同步产品菜单,完成产品的同步: ![shopline8](https://xp.odoohub.com.cn/chapter10/images/shopline8.png) 1. 产品同步的字段列表 * 名称 * 图片 * 重量 * SKU * 条码 * 售价 * 成本价 2. 如果产品在Shopline中设置有变体,也同样会同步到变体中。 3. Shopline中一个产品支持的变量设置最多三种。 4. Shopline的变体的SKU可以重复,但odoo不可以,如果Shopline中的变体包含有相同的SKU,那么odoo同步过来的SKU将是空值。 #### 产品同步逻辑 Shopline支持自定义属性配置(最多3个),我们在同步产品的时候,首先是同步的产品模板,如果产品在Shopline的商品设置有变体,那么Odoo将会自动将变体的属性同步下来,然后再将变体同步。 变体属性同步时,优先使用英文名称、如果英文名称不存在,那么使用中文名称(zh-hant)。 #### 绑定公司 同样的,产品同步的同时也可以指定是否绑定公司,在设置中勾选绑定公司: ![company](https://xp.odoohub.com.cn/chapter10/images/shopline14.png) 此时,从Shopline同步的产品将仅供当前公司可用。 ### 同步订单 同步产品有如下设置可选: ![order](https://xp.odoohub.com.cn/chapter10/images/shopline15.png) * 替换订单号:如果勾选,那么同步的订单会使用Shopline的订单号 * 静默异常:系统不提示同步过程中发生的异常 * 订单状态: 同步指定的Shopline状态到本地,不选择则同步所有状态的订单。 * 自动确认: 同步订单后是否自动确认,默认为False。如果同步的订单已经确认,那么将会跳过此订单。 * 付款状态: 同步指定付款状态的Shopline订单到Odoo,不选择同步所有订单。 如果订单包含送货方式,那么odoo也可以自动将送货方式同步下来,但是需要提前设置好运费的产品: * 默认运费产品: 指定送货方式关联的运费产品。 我们同步Shopline的订单,点击同步订单按钮: ![shopline9](https://xp.odoohub.com.cn/chapter10/images/shopline9.png) ![delivery](https://xp.odoohub.com.cn/chapter10/images/shopline16.png) 我们可以看到来自Shopline的订单,以及包含指定了的送货方式。 > Shopline的配送方式可能与Odoo的送货方式没有强关联关系,用户可以在同步了送货方式后再自行匹配Odoo的承运商。 ### 回传发货状态和物流单号 当我们在Odoo中完成了发货,我们可以把我们的发货状态和物流单号回传给Shopline,方法十分简单,在发货完成后,在订单中点击上传Shopline按钮即可。 ![shopline11](https://xp.odoohub.com.cn/chapter10/images/shopline11.png) ![shopline12](https://xp.odoohub.com.cn/chapter10/images/shopline12.png) 我们在SHopline的商家后台可以看到我们的订单已经变为已发货,也已经有了跟踪单号: ![shopline13](https://xp.odoohub.com.cn/chapter10/images/shopline13.png) 结语 -- 现阶段我们只是完成了Shopline的基础功能对接,后续我们会推出更多实用的功能,敬请期待。 results matching "" =================== No results matching "" ====================== --- # 第三十四章 云打印 · odoo实施参考手册-青岛欧姆网络科技 [第三十四章 云打印](https://xp.odoohub.com.cn/) ======================================== 云打印 === 有时候我们需要将文档直接发送到打印机进行打印,而不需要用户手动下载和打开文档。这时候,云打印就派上用场了。云打印是一种基于云计算的打印服务,可以让用户通过互联网将文档发送到远程打印机进行打印。 安装云打印模块 ------- 云打印模块由青岛欧姆网络科技有限公司开发,在odoo中提供了一个界面用于注册和管理云打印服务。我们可以通过odoo的应用商店安装这个模块。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/cloud_print.png) 配置云打印服务 ------- 安装完成后,我们需要配置云打印服务。首先,我们需要在服务端配置一个API密钥。然后,在odoo中进入云打印模块的设置界面,输入API密钥和其他相关信息进行配置。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/cloud_print2.png) ### 配置云打印机 配置完成后,我们需要在云打印模块中添加云打印机。我们可以输入打印机的名称、型号和其他相关信息进行配置。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/cloud_print4.png) 点击测试链接按钮可以测试云打印机是否配置成功。如果测试成功,我们就可以在odoo中使用云打印功能了。 点击同步云端打印机按钮可以将云打印机的信息同步到odoo中,这样我们就可以在odoo中选择云打印机进行打印了。 ### 打印队列 当我们使用云打印功能进行打印时,文档会被添加到打印队列中。我们可以在云打印模块的打印队列界面查看和管理打印任务。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/cloud_print3.png) ### 设置报表自动云打印 我们还可以设置报表自动云打印功能。当我们需要指定Odoo中的某些报表自动发送到云打印机进行打印时,可以在报表的设置界面中选择云打印机进行配置。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/cloud_print5.png) 这样我们在生成报表时,系统会自动将报表发送到云打印机进行打印,无需用户手动操作。 results matching "" =================== No results matching "" ====================== --- # 第十二部分 行业解决方案 · odoo实施参考手册-青岛欧姆网络科技 [第十二部分 行业解决方案](https://xp.odoohub.com.cn/) =========================================== 行业解决方案 ====== results matching "" =================== No results matching "" ====================== --- # 第一章 微信扫码登陆 · odoo实施参考手册-青岛欧姆网络科技 [第一章 微信扫码登陆](https://xp.odoohub.com.cn/) ========================================= 微信扫码登录 ====== * [注册开放平台应用](https://xp.odoohub.com.cn/chapter10/WeChatOpen.html#%E6%B3%A8%E5%86%8C%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F%B0%E5%BA%94%E7%94%A8) * [Odoo中的配置](https://xp.odoohub.com.cn/chapter10/WeChatOpen.html#odoo%E4%B8%AD%E7%9A%84%E9%85%8D%E7%BD%AE) 本章我们看一下如何借助[微信开放平台](https://open.weixin.qq.com/) 的能力实现用户微信扫码注册和登录、以及已有用户的微信绑定功能。 > 适用于18.0.1.5+ 19.0.1.2+ 注册开放平台应用 -------- 我们在安装微信扫码登录模块之前,需要到开放平台注册一个网站应用。 ![8](https://xp.odoohub.com.cn/chapter10/images/WECHATLOGIN1.png) ### 获取APPID和APP Secret 创建完应用,我们要获取该应用的APPID 和APP Secret。 ### 配置回调域名 同时我们要设置开放平台应用的回调域名,填写我们odoo的域名。域名不一致将导致认证失败。 Odoo中的配置 -------- 接下来我们看如何在Odoo中进行设置。 ### 配置APPID和Secret 首先,我们到设置-用户-OAuth提供方菜单下找到**微信开放平台**, 然后将应用APPID填入到客户ID中: ![10](https://xp.odoohub.com.cn/chapter10/images/WECHATLOG2.png) 如果网站允许客户使用微信扫码注册,勾选下方的**允许注册为门户用户**选项即可。# ### 激活OAuth登录 默认情况下,微信扫码登录时禁用状态。可以在设置-用户和公司-OAuth服务商中选择微信开放平台,勾选允许: ![WCH3](https://xp.odoohub.com.cn/chapter10/images/WECHATLOG3.png) 应用 -- 配置完成,我们看一下实际运行效果。 ### 注册页面 我们到网站的注册页面查看: ![REGISTER](https://xp.odoohub.com.cn/chapter10/images/WECHATLOG4.png) 可以看到出现了微信扫码按钮,我们点击它,系统会引导我们进入扫码页面: ![REGISTER2](https://xp.odoohub.com.cn/chapter10/images/WECHATLOG5.png) 我们扫码即可完成注册,进入门户个人中心。 ### 登录页面 同样地,我们在登录页面也可以点击扫码登录,完成一键登录。 ### 个人中心绑定 如果是普通注册的用户,我们也提供了快捷绑定方法,在个人中心中,扫码完成绑定即可。 ![BIND](https://xp.odoohub.com.cn/chapter10/images/WECHATLOG6.png) results matching "" =================== No results matching "" ====================== --- # 第三十八章 腾讯云COS · odoo实施参考手册-青岛欧姆网络科技 [第三十八章 腾讯云COS](https://xp.odoohub.com.cn/) =========================================== 腾讯云COS ====== 我们之前完成了AWS、阿里云 OSS、Google Cloud Storage 的对接方案,但当我们开始接入微信生态时,腾讯云COS就变成了一个很自然的选择。因为微信小程序、微信公众号、企业微信都在腾讯云上运行,腾讯云COS是腾讯云的对象存储服务,和微信生态天然集成。 因此,本文将介绍腾讯云COS的对接方案,帮助企业在Odoo中实现附件的云端存储和访问。 1\. 腾讯云COS配置 ------------ ![alt text](https://xp.odoohub.com.cn/chapter10/images/QQ_1782663191510.png) 实施时,管理员会先在 Odoo 中创建一个 COS 存储后端,配置腾讯云相关信息,例如: * Bucket 名称 * 所属地域 Region * Secret ID / Secret Key * 公有或私有访问模式 * 签名 URL 有效期 * 可选的自定义域名或 CDN 地址 * 需要迁移到 COS 的业务模型 这些配置完成后,Odoo 就知道哪些附件应该交给 COS 存储,哪些附件继续保留在本地。 对于企业来说,这一步的价值是把“文件存在哪里、谁可以访问、访问多久”变成可管理的系统配置,而不是散落在服务器脚本和人工经验里。 2\. Odoo 附件自动上传到 COS -------------------- ![alt text](https://xp.odoohub.com.cn/chapter10/images/QQ_1782663595967.png) 当用户在 Odoo 后台上传符合规则的附件时,系统会自动将文件上传到腾讯云 COS。 例如: * 商品主图 * 商品详情图片 * 产品说明书 * 报价 PDF * 售后资料 * 小程序需要展示或下载的业务附件 上传完成后,Odoo 会保存 COS 对象路径,并将附件切换为远程存储模式。用户在后台仍然像以前一样查看和使用附件,不需要关心文件到底存在本地服务器还是云端。 这一步看似简单,真正的价值在于:业务人员不用改变操作习惯,系统底层却已经完成了存储架构升级。 3\. 小程序和微信端获得稳定文件访问能力 --------------------- ![alt text](https://xp.odoohub.com.cn/chapter10/images/QQ_1782663658748.png) 在微信小程序场景中,商品图片、订单附件、资料下载等内容都需要稳定的 HTTPS 访问地址。 COS 模块可以根据配置生成文件访问地址: * 如果是公开资源,例如商品展示图片,可以使用公有访问地址或 CDN 域名 * 如果是敏感文件,例如订单附件、合同、客户资料,可以使用带有效期的签名 URL * 如果企业后续接入公众号、企业微信、H5 页面,也可以复用同一套 COS 文件访问能力 这样,小程序端不需要直接从 Odoo 服务器读取大量文件,访问链路更清晰,服务器压力也更小。Odoo 管业务,COS 管文件,小程序负责展示。三者各司其职,系统就不会“什么都压在一台服务器上”。 4\. 支持历史附件批量迁移 -------------- ![alt text](https://xp.odoohub.com.cn/chapter10/images/QQ_1782663710630.png) 对于已经运行一段时间的 Odoo 系统,很多附件早就存放在本地 filestore 里。 本方案支持将历史附件批量迁移到腾讯云 COS。迁移时可以按业务模型控制范围,比如先迁移商品图片和产品资料,再根据实际情况扩展到其他附件类型。 迁移流程通常包括: * 迁移前预检,确认候选附件数量和大小 * 执行批量迁移任务 * 检查 COS 上传结果 * 验证附件读取和小程序访问效果 * 确认无误后清理本地 filestore 引用 这套流程不是“一键搬家就完事”,而是更适合企业系统的稳妥迁移方式。尤其是生产环境,文件可以慢慢迁,结果必须可验证。 5\. 支持回滚和本地清理 ------------- 对象存储方案最怕的是“上去了下不来”。因此本方案保留了回滚能力。 如果某些附件需要恢复到 Odoo 本地存储,可以从 COS 下载回来,重新写回 Odoo 本地 filestore。 在确认 COS 文件可正常读取、小程序访问正常、业务没有异常后,再执行本地清理。清理时系统会检查本地文件是否仍被其他附件引用,避免误删共享文件。 这也是我们设计这套方案时比较重视的一点:节省空间很重要,但数据安全永远排在前面。 results matching "" =================== No results matching "" ====================== --- # 第二章 微信公众号 · odoo实施参考手册-青岛欧姆网络科技 [第二章 微信公众号](https://xp.odoohub.com.cn/) ======================================== 微信公众号解决方案 ========= > 本模块适用于 16.0 需求背景 ---- 很多时候,我们在面对客户的询价的时候要耗费挺多的人力,除了使用企业微信等IM外,我们可以使用公众号来完成部分自动查询的工作。另外,公众号除了作为企业日常的宣传、服务媒介外,还可以接入客服等操作,让企业的服务能够更加贴近客户。 本文就将介绍由[欧姆网络科技](https://xp.odoohub.com.cn/chapter10/www.odoomommy.com) 出品的微信公众号解决方案。 ### 公众号基础配置 我们在申请完公众号之后,需要先配置公众号的基础设置之后才可以接入Odoo。下面来看一下公众号端的配置步骤。 首先,我们需要获取公众号的以下参数: * 开发者ID(AppID):通常以wx开头,例如wx123456678 * 开发者密码(AppSecret): 一次性密码,公众号不会保存,遗失需要重置。 * 服务器地址(URL): 我们后台需要接入的系统URL * 令牌(Token): 服务器与微信公众号通信的认证Token(可选) * 消息加解密密钥(EncodingAESKey):通信过程中加密需要的密钥。(可以不填) 以上参数可以在**设置与开发-基本配置**中找到。 ![基础配置](https://xp.odoohub.com.cn/chapter10/images/wechat1.png) 其中,服务器地址需要填你的odoo地址的域名和固定路径/wechat/auth。 #### 业务域名和JS接口安全域名 如果公众号还需要接入自己开发的网页,或者不想被微信出现网页安全提示,那么我们还需要配置JS接口安全域名。配置路径在**公众号设置-JS接口安全域名**: ![业务域名](https://xp.odoohub.com.cn/chapter10/images/wechat2.png) 配置业务域名时,需要在odoo服务器上做校验,为了方便操作,我们在模块中内置了设置字段,用户只需要把校验文件名和文件内容填入到指定位置即可,这里我们先留空。 ![校验](https://xp.odoohub.com.cn/chapter10/images/wechat3.png) Odoo微信公众号模块设置 ------------- 设置完公众号以后,我们需要在我们的odoo系统中安装我们的微信公众号模块(mommy\_wechat), 安装完成后,我们先到**公众号-设置-公众号**对模块进行设置。 我们首先创建一个公众号应用,然后把我们前面拿到的那些参数填入到下面的页面中。 ![设置](https://xp.odoohub.com.cn/chapter10/images/wechat4.png) 网页域名授权文件名即我们前面提到的txt文件的文件名,内容就是文件内的那串文本,填入到对应的字段中即可。 ### 绑定公司 我们公众号支持多公司模式,因此,我们需要在公司设置中,选择我们创建的这个公众号应用: ![](https://xp.odoohub.com.cn/chapter10/images/wechat5.png) 现在,我们就完成了公众号模块的所有前置要求,下面我们来看一下公众号支持的功能吧。 解决方案 ---- 我们先从最基础的,菜单功能开始。菜单是整个公众号的入口,设置也十分灵活。配置好的话,可以给提供一个非常丝滑的用户体验。 ### 菜单设置 菜单管理入口在**公众号-基础配置-菜单管理**,用户点开后,可以创建自己自定义的菜单。公众号支持3个一级菜单,每个一级菜单又支持5个二级菜单。 每个菜单都可以选择相应的动作和相应方式。具体地说,可以选择以下几种相应方式: * 单击事件 * URL跳转 * 扫码推送结果 * 扫码接收消息 * 拍照 * 拍照或者从相册中选择 * 从微信相册中选择 * 选取微信地理位置 * 下发多媒体消息 * 跳转图文消息URL * 小程序 每种响应方式都有其应用场景,用户可以根据自己的需要选择合适的方式进行配置。这里我们不过多进行介绍,需要更加详细使用方法的同学可以在公众号联系客服获取帮助。 我们来看一下菜单的创建界面: ![公众号](https://xp.odoohub.com.cn/chapter10/images/wechat6.png) 需要注意的是,我们在创建的二级菜单的时候,必须要先创建一级菜单。菜单可以绑定一个KEY值,这个KEY值会被传递给后台应用程序,我们可以根据这个KEY值而自定义我们想要的响应方式。 下面来看一下本公众号(OdooHub)的菜单创建界面: ![菜单](https://xp.odoohub.com.cn/chapter10/images/wechat7.png) 菜单同样支持排序,只要在序号那里填入数字即可。数字越大,就越靠近公众号底部。 ### 消息回复 公众号的一个很常见的场景就是消息的自动回复,例如,当用户关注了公众号,我们可以提示一下欢迎语或是使用方法。再比如,用户给公众号发送的消息,我们可以根据内容个性化回复内容,乃至引入现在潮流的各种机器人(ChatGPT)等。如果客户想要查询序列号或是质保期等参数,也可以通过消息回复自助查询,从而节省企业的的运营成本。 我们的模块可以实现诸如上面的各种场景,我们在**公众号-消息管理-自动回复**菜单中,即可创建一个自动回复的规则。 ![自动回复](https://xp.odoohub.com.cn/chapter10/images/wechat8.png) 本模块支持的触发条件有: * 被关注回复 * 关键字回复 * 收到消息回复 * 单击事件 我们在收到客户发送的消息后,可以根据客户发送的内容,触发不同的规则,响应不同的内容。本模块支持的响应消息格式也有很多种: * 不回复 * 文本回复 * 图片/语音/视频/音乐/图文回复 * 代码回复 * 模版消息 其中比较灵活的是代码回复,我们可以通过代码自定义实现业务逻辑的计算结果,然后封装后发送给用户。这里举一个实际的例子,我们在公众号OdooHub中发送“echo”,将会得到一个实时计算的结果,统计此公众号的当前粉丝数量和本用户所关注的序列。 ![echo](https://xp.odoohub.com.cn/chapter10/images/wechat9.png) 此功能即使用代码回复功能完成的: ![echo](https://xp.odoohub.com.cn/chapter10/images/wechat10.png) 使用代码回复的好处是,不用每次都更新服务器上的代码,需要调整业务逻辑的时候,直接在界面修改代码即可。 另外一个比较实用的方式,即模版消息。模版消息只能用在服务号上,使用场景即通知关注了公众号的客户。 模版消息 ---- 模版消息的使用场景常见于用户关注了公众号(服务号),企业用来给用户推送服务通知。像我们日常使用的各类银行消费通知,顺丰快递通知等等。都是由模版消息推送完成的。下面我们来看一下如何借助odoo的微信公众号模块,来完成此类操作。 ### 消息模版 我们在推送模版消息之前,要先在公众号后台预设**消息模版**,类似于我们使用的短信模版,我们预设完消息模版之后,同步到odoo系统中,方便我们使用。 > 消息模版的创建需要从微信官方已有的模版中进行挑选,不存在的新建还需要审核,因此本模块没有创建消息模版的功能。用户需要自行到公众号后台进行申请。 我们可以在**设置-同步消息模版**菜单中进行消息模版同步。 ![同步](https://xp.odoohub.com.cn/chapter10/images/wechat11.png) 同步完成之后,我们可以在消息管理-消息模版中看到同步的模版数据。我们来看一个消息模版的例子: ![消息模版](https://xp.odoohub.com.cn/chapter10/images/wechat12.png) 消息模版的主体数据格式是文本+变量,变量由{{}}包裹,采用变量名.DATA的形式。 ### 发送模版消息 有了消息模版,下面我们就可以来发送一条模版消息了。我们到菜单**消息管理-模版消息**中新建一个模版消息。 ![模版消息](https://xp.odoohub.com.cn/chapter10/images/wechat13.png) 我们首先选择一个模版消息,然后选择要发送的目标用户。模版消息也可以设置链接,或者打开小程序的某个页面等。最重要的是模版数据,其数据格式如下: { 'name':{ 'value':'长腿叔叔' }, 'code':{ 'value':123456 } } 其中的name和code都是消息模版中变量的KEY值,变量的值则放入了value中。 我们点击发送按钮,如无异常,我们在微信端将收到下面的消息提示。 ![提示](https://xp.odoohub.com.cn/chapter10/images/wechat14.png) ### 编程接口 很显然,我们在使用过程中,不可能由我们人工手动一条一条去创建模版消息。本模块也预留了针对开发人员的编程接口,方便开发人员将业务嵌入到实际系统的各个方面中。鉴于这部分内容专业性较强,本文不展开。购买的同学可以在公众号回复**模版消息编程**获取开发指引。 results matching "" =================== No results matching "" ====================== --- # 发货解决方案 · odoo实施参考手册-青岛欧姆网络科技 [发货解决方案](https://xp.odoohub.com.cn/) ===================================== 外贸发货 ==== 对于外贸行业来说,通常会用到例如DHL、Fedex、UPS等国际贸易中的物流承运商。其中有一部分Odoo官方已经支持,而另一部分还没有适配。本章我们就来看一下如何在Odoo中使用常见的物流商来简化发货操作。 运费预估对比 ------ 外贸企业在决定选择物流承运商的时候费用通常是比较重要的一个参考标准,操作员通常要手动根据发货地和收货地,在不同的承运商那里依次查询运费,然后再对比,选择结果。 为了解决这个问题,我们在外贸解决方案中开发了一个运费预估对比的功能,借助此功能,操作员只需要选择发货地和收货地地址,填写包裹的长宽高以及重量即可,系统会根据输入自动查询预先配置好的承运商,然后批量给出查询结果,一目了然。 ![EXP1](https://xp.odoohub.com.cn/solutions/images/EXPORT1.png) results matching "" =================== No results matching "" ====================== --- # Chapter 7 Email Configuration · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 7 Email Configuration](https://xp.odoohub.com.cn/en/) =============================================================== Chapter 7 Email Configuration ============================= Odoo embeds email capabilities into Sales, Purchase, Accounting, Portal, Project, and the document chatter. Quotations can be emailed to customers, invoices can automatically include PDF attachments, customers can open documents through portal links, and employees can send messages directly from business records. Email configuration may look like only an SMTP server setting, but it affects whether customers receive quotations, whether users can reset passwords, whether customer replies return to the right document, whether messages go to spam, and whether sender identity is compliant in multi-company, multi-salesperson, and multi-domain scenarios. This chapter explains the native Odoo email logic and how to implement it with domestic business email, Outlook, Gmail, and multi-company mail environments. Where Email Is Used ------------------- Common Odoo email scenarios include: * Sending quotations, order confirmations, and invoices to customers; * Sending portal invitations, password reset emails, and system notifications; * Sending messages to customers from sales orders, invoices, project tasks, and other records; * Sending activity reminders, approval reminders, and business notifications to employees; * Bringing customer replies back to the related business document; * Generating email subject, body, buttons, and attachments from templates. If email is not configured properly, the issue is not only "mail cannot be sent." It can affect sales conversion, invoicing, portal experience, and internal collaboration. Understand The Odoo Email Chain ------------------------------- The Odoo email chain can be divided into four parts: Business document -> Email template / chatter -> Outgoing mail server -> Customer mailbox Customer reply -> Incoming server / forwarding / MX -> Odoo mail routing -> Document chatter From an implementation perspective, distinguish three questions first: | Question | Meaning | | --- | --- | | Who sends the email? | Which SMTP or OAuth account is used to send messages | | Who appears as sender? | Which From address the customer sees | | Where does reply go? | Which mailbox or document receives customer replies | Many domestic projects get stuck on the second and third questions. Email providers may require the From address to be the same as the authenticated account, while Odoo wants to organize sending and replies through users, companies, alias domains, catch-all, and bounce logic. Email Settings Entry -------------------- Open **Settings** and search for email. ![Email settings](https://xp.odoohub.com.cn/en/basic/images/basic-cn-email-settings-search.png) Common settings include: * Custom email servers; * Outgoing and incoming mail servers; * Alias domain; * Email templates; * Digest emails; * Gmail or Outlook integration; * Mail plugins or other integration modules. The available options differ by Odoo version and installed modules. During implementation, do not only check whether a menu exists. Also confirm which mail-related modules are installed and whether the server can access the target email provider. Native Outgoing Mail Server --------------------------- Odoo usually needs an outgoing mail server to send emails. Common methods: | Method | Suitable Scenario | | --- | --- | | SMTP | Business email, domestic email providers, some self-hosted mail servers | | OAuth | Outlook/Office 365, Gmail, and other providers requiring modern authentication | After enabling custom email servers, configure outgoing servers. ![Outgoing mail configuration](https://xp.odoohub.com.cn/en/basic/images/email1.png) A typical SMTP outgoing server looks like this: ![Outgoing mail server](https://xp.odoohub.com.cn/en/basic/images/email3.png) Common fields: | Field | Description | | --- | --- | | Description | Name shown to administrators | | SMTP Server | SMTP address provided by the email provider | | SMTP Port | Commonly 465 or 587 | | Connection Security | SSL/TLS or STARTTLS | | Username | Email account | | Password | Email password, authorization code, or app password | | From Filter | Limits which sender address or domain this server handles | When using NetEase, Tencent, Alibaba, or other domestic business email providers, the password is often not the login password but an authorization code generated in the mailbox settings. After configuration, test the connection first. ![Successful connection](https://xp.odoohub.com.cn/en/basic/images/email2.png) You can also find mail records from the technical menu and send a test email. ![Test email](https://xp.odoohub.com.cn/en/basic/images/mail4.png) Example of received test email: ![Received test email](https://xp.odoohub.com.cn/en/basic/images/email5.png) Connection success does not mean the business flow is ready. The real test is whether quotation emails, invoice emails, password resets, and portal invitations can be delivered, and whether customer replies can be processed correctly. Native Incoming Mail And Customer Replies ----------------------------------------- Odoo can send emails out, and it can also receive customer replies and try to attach them back to the original business document. For example, a salesperson sends an email from a quotation. The customer replies directly. If incoming mail, reply address, and mail routing are configured correctly, the reply can return to the chatter of the related quotation or sales order. Incoming mail usually depends on one of these methods: | Method | Description | | --- | --- | | Incoming mail server | Odoo periodically fetches emails from an IMAP/POP mailbox | | Email forwarding | The email provider forwards messages to Odoo for processing | | MX / mail gateway | Email enters an Odoo mail gateway directly, common in more professional deployments | Incoming server configuration example: ![Incoming mail server](https://xp.odoohub.com.cn/en/basic/images/email7.png) If the company only needs to send quotations and invoices in phase one, configure outgoing mail first. If customer replies should be archived automatically on Odoo documents, design incoming mail, alias domain, and catch-all carefully. Catch-All And Bounce -------------------- Two common Odoo mail terms are catch-all and bounce. | Concept | Simple Meaning | Usage | | --- | --- | --- | | catch-all | A mailbox that receives all aliases under a domain | Receives emails for many aliases and lets Odoo route them | | bounce | Return-path address | Handles delivery failure, relay, and bounced emails | Bounce parameters can be viewed or adjusted in system parameters. ![Bounce parameters](https://xp.odoohub.com.cn/en/basic/images/mail6.png) In a standard overseas email environment, Odoo often uses alias domains, catch-all, and bounce to handle replies, bounced emails, and document matching. Domestic email environments usually have more limitations: * Free or normal business mail may not support catch-all; * The sender may be required to equal the SMTP authenticated user; * The provider may not allow the system to send as other employee addresses; * Authorization code, app password, or OAuth may be required; * Overseas server login, batch sending, and unusual login may trigger risk control; * Without SPF, DKIM, and DMARC, messages are more likely to enter spam. Domestic projects should not blindly copy overseas documentation. Confirm the email provider's rules first. Choosing A Mail Solution For Domestic Projects ---------------------------------------------- In phase one, the mail solution does not have to be the most complex. Choose according to business goals. | Solution | Suitable Scenario | Advantage | Notes | | --- | --- | --- | --- | | Unified outgoing mailbox | Small team, first go-live, only sending quotations and invoices | Simple and stable | Customers see a shared mailbox, not personal salesperson email | | Unified outgoing + unified incoming | Customer replies are handled centrally | Easy to manage | Replies may not automatically return to a specific document | | Individual mailbox per user | Sales wants to communicate with personal email | Clear customer recognition | Higher configuration and maintenance cost, more authentication limits | | Multi-company mailboxes | Multiple brands, legal entities, or domains | Sender identity is more accurate | Requires strict matching of company, domain, and mail server | | catch-all / alias domain | Customer replies should return to documents | Good communication traceability | Domestic providers may not support it | | OAuth integration | Outlook, Gmail, and modern authentication | Secure and compliant | Requires cloud app and callback configuration | For small companies, a simple phase-one solution is often enough: Unified outgoing mailbox -> Send quotations, invoices, and system notifications Unified incoming mailbox -> Receive customer replies or let staff review them manually Example: * `service@company.com` for system sending; * `reply@company.com` for customer replies; * `finance@company.com` for finance and invoice communication; * Sales personal mailboxes are not connected to Odoo at first. After the process is stable, consider personal mailboxes, multi-company mailboxes, catch-all, or more advanced routing. Test Sending And Customer Replies --------------------------------- After mail configuration, test with real business documents. Create a quotation or sales order and send it to a customer mailbox. ![Send email from sales order](https://xp.odoohub.com.cn/en/basic/images/sale1.png) After sending, the chatter records the email. ![Chatter sent record](https://xp.odoohub.com.cn/en/basic/images/sale2.png) Customer received email example: ![Customer received email](https://xp.odoohub.com.cn/en/basic/images/sale3.png) If the customer replies directly, the reply address enters the configured incoming mailbox or catch-all mailbox. ![Customer reply address](https://xp.odoohub.com.cn/en/basic/images/sale4.png) From the technical menu, you can inspect mail records and their relationship with business documents. ![Mail record details](https://xp.odoohub.com.cn/en/basic/images/sale5.png) Do not only send "Hello" to an internal mailbox. At least test: * Internal and external mailboxes; * QQ, NetEase, Tencent business mail, Outlook, and other recipients; * Quotation email, invoice email, password reset, and portal invitation; * Whether PDF attachments can be opened; * Whether customer replies can be received; * Whether mail enters spam; * Whether the test database may send emails to real customers by mistake. These tests are risk control for the implementation. Email Templates --------------- Many Odoo emails are generated from templates, such as quotation emails, invoice emails, password reset emails, and portal invitations. Email templates affect: * Email subject; * Body content; * Button text; * Attachments; * Language; * Company signature; * Portal links. Before modifying a template, copy or record the original content. Do not delete template variables casually, such as customer name, document link, portal link, or attachment expression, otherwise the email may fail to generate correctly. For customer-facing templates, preview them with real business scenarios: can the customer understand it, is the button clear, is the company signature correct, and are attachments expected? Email templates are not only copywriting; they affect whether the customer can confirm, pay, or open portal documents smoothly. Common Errors With Domestic Free Mailboxes ------------------------------------------ The most common domestic email issue is sender mismatch. Typical errors: SMTPSenderRefused: 553 Mail from must equal authorized user or: SMTPSenderRefused: 501 mail from address must be same as authorization user This means the sender declared by Odoo is not the same as the SMTP login mailbox, so the provider refuses to send the email. Example configuration in a multi-company and domestic email environment: ![Multi-company email example](https://xp.odoohub.com.cn/en/basic/images/email8.png) If the user email and declared sender do not match, domestic providers may refuse to send. ![User email example](https://xp.odoohub.com.cn/en/basic/images/email9.png) Common solution directions: | Method | Suitable Scenario | | --- | --- | | Use a fixed company mailbox as unified sender | Fast phase-one go-live | | Keep From address and SMTP authenticated user the same | Strict Tencent/NetEase business mail scenarios | | Configure different outgoing servers for different companies | Multi-company and multi-domain business | | Use OAuth authentication | Outlook, Gmail, and cloud mail | | Adjust catch-all and bounce strategy | Customer replies need to enter Odoo | | Use a localized mail module | Native configuration cannot satisfy domestic restrictions | The first method is simplest, but it cannot satisfy "each salesperson uses their own email externally." The other methods are more flexible but cost more to configure and maintain. Tencent Business Mail Configuration ----------------------------------- Tencent Business Mail is common in domestic projects, but it often requires the sender to equal the authenticated user. Common server parameters: POP3/SMTP Incoming: pop.exmail.qq.com, SSL, port 995 Outgoing: smtp.exmail.qq.com, SSL, port 465 IMAP Incoming: imap.exmail.qq.com, SSL, port 993 Outgoing: smtp.exmail.qq.com, SSL, port 465 Before configuration, confirm: * POP/IMAP/SMTP is enabled for the mailbox; * Authorization code or correct password is used; * WeCom/Tencent Business Mail backend does not block third-party clients; * Odoo sender and SMTP authenticated user are consistent when required; * The Odoo server can connect to Tencent Business Mail servers. Tencent Business Mail backend example: ![Tencent Business Mail configuration](https://xp.odoohub.com.cn/en/basic/images/tx1.png) Common error: SMTPSenderRefused: 501 mail from address must be same as authorization user If multiple users need to send through one Tencent Business Mail account, adjust sender strategy or use a module that supports strict sender matching. Office 365 / Outlook OAuth Configuration ---------------------------------------- Office 365 and Outlook have gradually tightened basic authentication. In many cases, SMTP/IMAP cannot simply use mailbox password and needs OAuth modern authentication. Prerequisites: * Odoo must be accessible through HTTPS; * Callback URL must match Odoo's base URL; * An application must be created in Microsoft Entra ID; * The user or organization must allow the required permissions; * SMTP Auth may need to be enabled separately. ### Register An Application Open Microsoft Azure/Entra admin center and create an app registration. ![Office 365 app registration](https://xp.odoohub.com.cn/en/basic/images/office1.png) The application type is usually Web. Callback URL: https://your-odoo-domain/microsoft_outlook/confirm For local testing, some OAuth scenarios only allow HTTPS or `http://localhost`; normal HTTP domains may fail. App registration details: ![Office 365 app details](https://xp.odoohub.com.cn/en/basic/images/office2.png) ### Set API Permissions In API permissions, add mail-related permissions according to Odoo's Outlook integration requirements. ![Office 365 API permissions entry](https://xp.odoohub.com.cn/en/basic/images/office3.png) ![Office 365 API permission selection](https://xp.odoohub.com.cn/en/basic/images/office4.png) Final permissions example: ![Office 365 permission result](https://xp.odoohub.com.cn/en/basic/images/office5.png) Common permissions include: * Read user basic profile; * Send mail; * Read mail; * Offline access token. The exact permissions may change with Odoo versions and Microsoft policies. Follow the current Odoo UI instructions and Microsoft admin center. Also confirm that users or user groups can use the application. ![Office 365 enterprise application](https://xp.odoohub.com.cn/en/basic/images/office6.png) ![Office 365 users and groups](https://xp.odoohub.com.cn/en/basic/images/office7.png) ![Assign Office 365 user](https://xp.odoohub.com.cn/en/basic/images/office8.png) ### Create Credentials Odoo needs two key values: * Client ID; * Client Secret. Client ID is available on the app overview page. Client Secret must be generated under certificates and secrets. Save it immediately after generation because it may not be visible again. Client ID location: ![Office 365 Client ID](https://xp.odoohub.com.cn/en/basic/images/office9.png) Client Secret entry: ![Office 365 Client Secret](https://xp.odoohub.com.cn/en/basic/images/office10.png) ### Connect Outlook Account In Odoo Back in Odoo, enter Client ID and Client Secret, then create or edit the mail server. ![Odoo Outlook credentials](https://xp.odoohub.com.cn/en/basic/images/office11.png) Select Outlook OAuth authentication, click Connect Outlook account, and complete authorization on the Microsoft login page. ![Odoo Outlook mail server](https://xp.odoohub.com.cn/en/basic/images/office13.png) After authorization, the mail server shows a valid token status. ![Outlook authorization success](https://xp.odoohub.com.cn/en/basic/images/office14.png) Then return to Odoo and test the connection. ### Office 365 Common Issues **SmtpClientAuthentication is disabled for the tenant** This usually means Authenticated SMTP is not enabled for the tenant or user. ![Office 365 SMTP Auth warning](https://xp.odoohub.com.cn/en/basic/images/office12.png) Solution direction: * Open Microsoft 365 admin center; * Find the target user; * Edit mail app settings; * Enable Authenticated SMTP; * Wait for policy propagation and test again. Microsoft 365 admin center example: ![Office 365 user management](https://xp.odoohub.com.cn/en/basic/images/office15.png) Enable Authenticated SMTP in Email Apps: ![Office 365 enable SMTP](https://xp.odoohub.com.cn/en/basic/images/office16.png) **Redirect URI mismatch** Check: * Odoo Web Base URL; * Redirect URI in the Microsoft application; * Whether HTTPS is used; * Whether there is an extra slash or path mismatch. Gmail OAuth Configuration ------------------------- Gmail also commonly uses OAuth. Ordinary passwords are not recommended. After enabling Gmail in Odoo settings, Odoo asks for ID and secret. ![Gmail settings](https://xp.odoohub.com.cn/en/basic/images/gmail.png) General steps: 1. Open Google Cloud Console; 2. Create a project; 3. Configure OAuth consent screen; 4. Create Web application OAuth credentials; 5. Set authorized redirect URI; 6. Enter Client ID and Client Secret in Odoo; 7. Create Gmail outgoing server; 8. Click Connect Gmail account to finish authorization. Redirect URI is usually: https://your-odoo-domain/google_gmail/confirm Create project in Google Cloud Console: ![Google project](https://xp.odoohub.com.cn/en/basic/images/gmail2.png) OAuth consent screen: ![Google OAuth consent screen](https://xp.odoohub.com.cn/en/basic/images/gmail3.png) Create OAuth credentials: ![Google OAuth credentials](https://xp.odoohub.com.cn/en/basic/images/gmai4.png) Fill authorized redirect URI: ![Google redirect URI](https://xp.odoohub.com.cn/en/basic/images/gmail5.png) Create Gmail outgoing server in Odoo: ![Gmail outgoing server](https://xp.odoohub.com.cn/en/basic/images/gmail6.png) Click Connect Gmail account: ![Connect Gmail account](https://xp.odoohub.com.cn/en/basic/images/gmail7.png) Successful authentication status: ![Gmail authentication success](https://xp.odoohub.com.cn/en/basic/images/gmail8.png) Common issues: | Issue | Direction | | --- | --- | | Redirect URI mismatch | Check Google redirect URI and Odoo base URL | | 500 error after authentication | Check network, domain, certificate, and OAuth configuration | | Test user cannot authorize | Check OAuth consent screen test users | | Sending fails | Check Gmail API, scopes, and mail server configuration | Gmail may be unstable in mainland China network environments. Test thoroughly before using it for domestic customers. Ohm Network Mail Solution ------------------------- When a project involves multi-company, multi-domain, multiple sales mailboxes, or strict domestic email providers, native configuration may not be smooth enough. For example: * Company A uses `sales@companya.com`; * Company B uses `sales@companyb.com`; * Customer replies should enter the corresponding company or document; * Outgoing mailboxes need to match company, domain, and user; * The provider requires From to equal the SMTP authenticated user; * The customer's environment does not support catch-all. These problems are not because Odoo cannot send email. They come from the gap between native Odoo mail logic and domestic provider rules. To handle these implementation pain points, Qingdao Ohm Network Technology provides an enhanced mail configuration solution. Module entry: [Ohm Mail Configuration Solution](https://odoohub.com.cn/shop/11) Module example: ![Ohm mail module](https://xp.odoohub.com.cn/en/basic/images/mommy_mail.png) After installation, settings related to catch-all and strict sender matching appear in General Settings. ![Catch-all settings](https://xp.odoohub.com.cn/en/basic/images/13.jpg) After configuration, sending email again can solve some failures caused by strict sender matching. ![Email sent after correction](https://xp.odoohub.com.cn/en/basic/images/sale6.png) Customer received email: ![Customer received corrected email](https://xp.odoohub.com.cn/en/basic/images/sale7.png) Typical capabilities: * Outgoing server supports company-level configuration; * Outgoing server can match a corresponding incoming mailbox; * Supports limiting sender to the authenticated mailbox; * Supports domestic environments without catch-all; * Supports user preferred mailboxes by company; * Suitable for foreign trade, multi-company, and multi-mailbox sales teams. ### Outgoing Server Company Matching In multi-company environments, outgoing servers can specify applicable companies. Empty means all companies can use it. ![Outgoing server company configuration](https://xp.odoohub.com.cn/en/basic/images/email16.png) This avoids Company A business accidentally using Company B mailbox. ### Catch-All Matching An outgoing server can link to a corresponding incoming server. After configuration, emails sent from that outgoing server can declare the corresponding reply address. ![Outgoing server catch-all configuration](https://xp.odoohub.com.cn/en/basic/images/email17.png) Example: Outgoing mailbox: service@odoomommy.com Reply mailbox: catchall@odoohub.com.cn When customers reply, the message goes to the specified catch-all or incoming mailbox and is processed by the system. ### User Preferred Mailbox By Company If employees use different mailboxes under different companies, preferred mailboxes can be configured on the user. ![User multi-company mailbox configuration](https://xp.odoohub.com.cn/en/basic/images/email18.png) Example: | Company | User Email | | --- | --- | | Company A | a@companya.com | | Company B | a@companyb.com | When sending email, the system can prefer the mailbox matching the current company. > Note: the mailbox domain must match the corresponding outgoing server domain, otherwise sending may still fail. Implementation Advice --------------------- Do not pursue the most complex email configuration from the beginning. A safer approach is staged implementation: | Stage | Recommendation | | --- | --- | | Stage 1 | Use a unified outgoing mailbox and make sure quotations, invoices, password resets, and portal invitations can be sent reliably | | Stage 2 | Configure incoming mail or a unified reply mailbox so customer replies have a place to land | | Stage 3 | Based on sales team and multi-company needs, enable personal mailboxes, multi-company mailboxes, or OAuth | | Stage 4 | If domestic provider restrictions are significant, introduce the Ohm mail solution or a custom strategy | For most self-implementation customers, phase one should focus on reliable sending, customer delivery, spam avoidance, and correct template content. After the team truly relies on the Odoo chatter, gradually improve customer reply traceability and multi-mailbox rules. This chapter connected Odoo's native mail chain, outgoing and incoming mail, catch-all, domestic provider restrictions, OAuth authentication, and the Ohm mail enhancement solution. The next chapter explains Messages and Discuss: how the chatter records communication, schedules activities, manages followers, and works together with email configuration to form a complete collaboration loop. results matching "" =================== No results matching "" ====================== --- # 第三十五章 prod-backup方案 · odoo实施参考手册-青岛欧姆网络科技 [第三十五章 prod-backup方案](https://xp.odoohub.com.cn/) ================================================== Odoo-Prod-Backup方案 ================== > 当 Odoo 备份不再意味着高成本:一套更省钱、可按时间点恢复的生产级方案 企业在使用 Odoo 进入正式生产后,真正需要担心的,往往不是系统能不能上线,而是数据一旦出问题,能不能快速、准确、低损失地恢复。 无论是误操作、升级异常、硬件故障,还是业务高峰期的突发问题,备份体系的价值都不在“有没有备份”,而在“能不能恢复到合适的时间点”。这也是为什么,越来越多企业开始重新评估自己的 Odoo 数据保护方案。 青岛欧姆网络科技推出的 `odoo-prod-backup`,正是面向 Odoo 生产环境的数据保护方案。它强调三个核心价值:**更低成本、更灵活恢复、更适合本地化企业长期使用**。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/image-7.png) 一、相较 Odoo.sh,更适合成本敏感型企业的备份选择 ---------------------------- 不少企业在考虑Odoo数据安全时,会首先接触到 Odoo.sh 这类平台化方案。Odoo.sh的优势在于它提供了一个全托管的环境,包含自动备份、版本控制、测试环境等功能,确实适合一些不想投入过多运维资源的企业。但它的成本也相对较高,尤其是对于已经自建 Odoo 环境、或者对长期成本控制有较高要求的企业来说,平台化方案可能并不是最优选择。 `odoo-prod-backup` 的优势,在于它不要求企业整体迁移运行方式,而是在现有 Odoo 生产环境基础上,增加一套独立的生产备份能力。这样企业可以继续沿用当前部署模式,同时建立更稳妥的数据保护机制。 从管理和投入角度看,这种方式通常具备几个明显优势: * 不需要承担持续的平台型高成本 * 不需要改变现有 Odoo 部署结构 * 不需要额外重建整套业务环境 * 可以充分利用已有服务器资源 * 更适合希望掌握数据主动权的企业 对于制造、贸易、项目实施、渠道管理等对 Odoo 依赖较深的企业来说,数据安全必须要有保障,但保障本身也要讲究投入产出比。`odoo-prod-backup` 的意义,正是在数据安全和长期成本之间,提供一个更平衡、更务实的选择。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/image-2.png) 二、支持实时同步,恢复不再只能“回到昨天晚上” ----------------------- 传统备份方式最常见的问题,是“看起来有备份,实际上恢复不够灵活”。 例如,系统每天只保留一次整包备份,那么如果当天下午发生误删、错误导入、异常升级,恢复时通常只能回退到前一天夜里或当天较早时间。这样虽然系统能恢复,但中间产生的大量业务数据也会一起丢失。 `odoo-prod-backup` 更适合生产场景的地方,就在于它提供了更连续的数据保护能力,并且在恢复时支持按时间点选择。 这意味着,企业在使用过程中可以获得这样的恢复体验: * 关键数据持续同步到备份环境 * 文件、配置和代码会保留阶段性快照 * 恢复时可以选择最新可用状态 * 也可以选择某个更接近业务事故发生前的时间点 这对于生产系统来说非常关键。因为业务真正关心的并不是“有没有恢复”,而是“恢复后丢了多少数据”。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/image-1.png) 从使用层面看,这套方案并不复杂。实际操作时,常用的管理命令主要集中在“查看恢复点、预演恢复、执行恢复、检查备份状态”这几个动作。 ### 1\. 查看当前可用恢复点 odoo-prod-restore --list 这条命令适合在需要恢复前先查看当前可用的备份时间点,帮助运维人员确认可以回到哪些时刻。 ### 2\. 先做恢复预演,再决定是否真正恢复 odoo-prod-restore --dry-run latest 或者指定一个目标时间点: odoo-prod-restore --dry-run "2026-05-28 14:30:00" 这一步非常重要。它不会真正改动当前环境,而是先告诉你:如果恢复到这个时间点,系统将使用哪一份备份、哪一个文件快照、以及对应的配置版本。对于生产环境来说,这是一种更稳妥、更专业的操作方式。 ### 3\. 执行正式恢复 恢复到最新可用状态: odoo-prod-restore latest 恢复到指定时间点: odoo-prod-restore "2026-05-28 14:30:00" 这让恢复工作从“被动抢救”变成“可判断、可选择、可执行”的标准动作。 ### 4\. 检查备份健康状态 /usr/local/sbin/odoo-prod-backup-check 通过定期检查备份状态,企业可以更早发现潜在问题,而不是等到真正需要恢复时才发现备份不可用。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/image-3.png) 三、媲美Odoo.sh的测试环境 ---------------- 得益于持续同步和阶段性快照的设计,`odoo-prod-backup` 还有一个非常实用的价值:**可以像 Odoo.sh 一样,基于备份数据快速整理出一个测试环境。** 这意味着,当企业需要做以下事情时,就不必直接在正式生产环境上操作: * 测试新模块 * 验证升级方案 * 检查报表或流程调整 * 复现线上问题 * 培训内部员工 * 演练恢复流程 使用时,只需要先查看可用恢复点,再选择一个合适的时间点进行恢复,就可以基于该时间点的数据准备出一套测试环境。这样既能尽量接近真实业务数据,又不会影响线上正式系统运行。 对于企业来说,这种能力非常重要。因为很多时候,真正需要的不是“永久保留一套昂贵的测试系统”,而是在需要时,能够快速整理出一套可用的测试环境。 这也是 odoo-prod-backup 相比普通备份方式更实用的一点: 它不仅能备份,也能在业务需要时,支持你更灵活地准备测试、验证和演练环境。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/image-5.png) 四、为客户守住数据,也节省更多成本 ----------------- 真正成熟的备份方案,不只是“技术上可实现”,更要“业务上可落地、运维上可执行、成本上可接受”。 青岛欧姆网络科技推出 odoo-prod-backup,并不是为了把备份做复杂,而是为了帮助客户把数据保护这件事,真正做成一套长期可用的能力。 我们更关注客户在真实业务中的几个核心诉求: * 既要保障数据安全,也要控制投入 * 既要支持恢复能力,也不能增加太多运维负担 * 既要适配现有 Odoo 环境,也要能服务未来扩展 * 既要有备份,更要确保备份真的能恢复 这也是为什么我们在方案设计上,强调“如何使用”和“如何恢复”,而不是让客户去理解复杂实现过程。对于企业管理者来说,最重要的不是背后的技术细节,而是以下几个结果是否成立: * 生产数据是否有持续保护 * 出问题时是否可以快速恢复 * 恢复时是否能尽量减少数据损失 * 整体成本是否低于平台化长期投入 * 是否有本地服务团队可以持续支持 odoo-prod-backup 作为青岛欧姆网络科技原创方案,核心目标非常明确:让客户在不显著增加成本的前提下,获得更可靠的 Odoo 数据保护能力。 更低成本,不代表降低标准。 更灵活恢复,不代表增加复杂度。 真正专业的方案,是让客户在需要的时候,能恢复、敢恢复、恢复得更准确。 【配图建议3:企业服务/团队支持形象图】 可配文:青岛欧姆网络科技原创方案,帮助客户守住关键业务数据。 结语 -- 如果你的 Odoo 已经进入正式生产环境,或者你正在考虑如何为现有 Odoo 系统增加一套更稳妥、性价比更高的备份机制,那么 odoo-prod-backup正是一个值得采用的方向。(现阶段签约客户专享) 青岛欧姆网络科技,您身边的Odoo一站式服务专家,期待与您一起守护数据安全,助力业务持续发展。 results matching "" =================== No results matching "" ====================== --- # 第十四章 DHL中国 · odoo实施参考手册-青岛欧姆网络科技 [第十四章 DHL中国](https://xp.odoohub.com.cn/) ========================================= 中国特色DHL ======= 起因是客户希望使用DHL发货给国外的客户,因为Odoo原生就支持DHL发货,就感觉很简单,配置一下就能使用了。谁知道才是坑的开始。因为Odoo的DHL模块使用的还是旧的XML接口,DHL官方已经声明,会逐步弃用旧的接口转而使用新的RESTFUL接口。再尝试了几次官方模块未遂后,决定自行解决,花了三天时间撸出了今天要介绍给大家的,富含中国特色的DHL应用。 安装与配置 ----- 首先我们要安装我们的DHL模块: ![1](https://xp.odoohub.com.cn/chapter10/images/DHL1.png) 安装完成后,我们在发货方式里,可以看到一个新的DHL发货方式(为了与官方区别,我们这里命名MyDHL): ![2](https://xp.odoohub.com.cn/chapter10/images/DHL2.png) 我们要使用DHL,就需要去申请一个DHL的**用户名、密码和账户**(这里吐槽一下,作为国际大公司的DHL居然不能自己去开放平台申请账号,必须通过人工审核)。 另外,进出口企业还需要去申请一个**DSP账户和密码**,用来跟海关申报。 配置完成后,我们就可以开始使用DHL来进行发货了。 销售订单费用预估 -------- 跟其他物流方式一致,我们在销售订单中添加物流方式,选择MyDHL: ![3](https://xp.odoohub.com.cn/chapter10/images/DHL3.png) 快递跟踪 ---- 销售订单确认后,我们到发货单中,根据我们实际情况,配置好我们的发货参数,完成发货。 ![4](https://xp.odoohub.com.cn/chapter10/images/DHL4.png) 跟其他的物流方式一样,我们会得到DHL返回的电子面单: ![5](https://xp.odoohub.com.cn/chapter10/images/DHL5.png) ![6](https://xp.odoohub.com.cn/chapter10/images/DHL6.png) 正常情况下,到此就结束了。但是由于通关要求,于是又有了下面的中国特色部分。 在线申报 ---- 海关要求的参数配置繁杂且众多,为了简化客户操作,我们做了大量的适配工作,这里就不详细展开了。总之,我们不仅要配置发货方式,还要配置产品参数。下面是一个例子: ![7](https://xp.odoohub.com.cn/chapter10/images/DHL8.png) 配置完成后,我们在发货单点击上传文件按钮,如果没有问题,则会显示上传成功。 ![9](https://xp.odoohub.com.cn/chapter10/images/DHL9.png) 如果有问题,则根据提示进行修改。 最后,我们再点击在线申报,即可完成在线申报。 ![10](https://xp.odoohub.com.cn/chapter10/images/DHL10.png) results matching "" =================== No results matching "" ====================== --- # 第十八章 小红书 · odoo实施参考手册-青岛欧姆网络科技 [第十八章 小红书](https://xp.odoohub.com.cn/) ======================================= 小红书 === 小红书是近年来年轻人中非常流行的社交分享购物平台,本章我们将介绍如何使用我们的**小红书模块**来完成平台和odoo的对接。 > 当前版本:17.0.1.0 基础配置 ---- 首先,我们要在系统中安装我们的小红书模块: ![xhs1](https://xp.odoohub.com.cn/chapter10/images/xhs1.png) 安装完模块之后,我们到主菜单-小红书-配置-店铺中新建一个店铺: ![xhs2](https://xp.odoohub.com.cn/chapter10/images/xhs2.png) 将我们在小红书商家后台创建的应用的APPKEY APPSCERT等信息填入到配置中,然后点击授权按钮跳转到平台进行授权,授权完成后点击获取Access Token按钮,获取Access Token 基础数据同步 ------ 拿到Access Token之后,我们就可以进行基础数据的同步了。 点击配置菜单下的多个同步菜单: ![xhs3](https://xp.odoohub.com.cn/chapter10/images/xhs3.png) 依次将基础数据(分类、属性、品牌、物流方案和物流公司)同步完成。 同步商品 ---- 接下来,我们同步商品。再同步商品之前一定要把前面讲到的基础数据同步完成。点击配置-同步产品: ![xhs4](https://xp.odoohub.com.cn/chapter10/images/xhs4.png) 同步完成后,我们可以在菜单小红书-产品-产品模板和产品变体中查看已经同步完成的产品。在产品详情页面,我们可以看到小红书的产品详情: ![xhs5](https://xp.odoohub.com.cn/chapter10/images/xhs5.png) 订单同步 ---- 产品同步完成后,我们就要进行订单的同步了。由于小红书官方的限制,我们每次只能同步一天的订单,因此我们在同步时给用户提供了一个订单同步的日期选择。点击配置-同步订单: ![xhs6](https://xp.odoohub.com.cn/chapter10/images/xhs6.png) 点击确认按钮,进行订单同步。 订单同步完成后,用户可以在菜单小红书-订单-报价单/订单中对订单进行查看和处理。 ![xhs6](https://xp.odoohub.com.cn/chapter10/images/xhs7.png) 需要注意的是,由于小红书官方的限制,客户的敏感信息只有在待发货状态的订单才可以获取,其他状态我们都以小红书客户的名字替代了。 结语 -- 目前,我们针对小红书的对接还在基础阶段,后面会陆续接入更多的功能,敬请期待。 results matching "" =================== No results matching "" ====================== --- # Chapter 1 Sales Management Overview · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 1 Sales Management Overview](https://xp.odoohub.com.cn/en/) ===================================================================== Chapter 1 Sales Management Overview =================================== Odoo's native Sales app manages the complete flow from customer quotation to sales order, delivery, invoicing, and payment. It is not an isolated order table. It is one of the central modules that connects CRM, contacts, products, pricelists, inventory, accounting, website, rental, and project services. When a company implements Odoo sales management, the most important step is not to copy the old order screen into Odoo. The first step is to understand Odoo's standard sales chain: what is still a quotation, what becomes a sales order, when inventory is triggered, when an invoice can be created, and where price, tax, payment terms, and delivery commitments are decided. This chapter establishes the overall framework before later chapters expand each area. Standard Sales Flow ------------------- The Odoo sales flow can be summarized as: Customer / Opportunity -> Quotation -> Customer Confirmation -> Sales Order -> Delivery -> Invoice -> Payment -> After-Sales Different companies may use different variants of this flow. | Company Type | Typical Flow | | --- | --- | | Trading company | Quotation -> Confirm order -> Purchase or reserve stock -> Delivery -> Invoice and payment | | Service company | Opportunity -> Quotation -> Project or timesheets -> Milestone invoicing -> Payment | | Export company | Quotation -> Pro-forma invoice -> Deposit -> Delivery -> Balance invoice | | Retail store | POS direct sale, sometimes linked with sales orders | | Rental business | Rental order -> Pick up -> Return -> Invoice | | Custom manufacturing | Quotation -> Confirm order -> Manufacture or purchase -> Delivery -> Invoice | The strength of Odoo is that these flows are not isolated. Once a sales order is confirmed, Odoo can automatically generate deliveries, purchases, manufacturing orders, project tasks, or invoices depending on the products and configuration. How Sales Connects With Other Apps ---------------------------------- Sales is usually implemented together with other Odoo apps. | Related App | Relationship With Sales | | --- | --- | | Contacts | Customers, invoice addresses, delivery addresses, contact persons | | CRM | Convert opportunities to quotations and analyze pipeline performance | | Products | Define sellable items, prices, taxes, invoicing policy, and fulfillment behavior | | Inventory | Generate delivery orders after sales order confirmation and affect available stock | | Accounting | Create customer invoices, register payments, and manage receivables | | Website / Portal | Let customers view, sign, pay, and download documents online | | Project / Timesheets | Sell services, then invoice by time or milestone | | Purchase / Manufacturing | Buy or manufacture on demand, or replenish stock | | Rental | Extend sales orders with pickup and return flows | So a sales implementation should not only ask, "Which fields does sales need?" It should also ask how the warehouse ships, how finance invoices, how customers confirm, and how products are priced. Quotations And Sales Orders --------------------------- A quotation is a sales proposal that has not yet been accepted by the customer. After the customer accepts it, the quotation is confirmed as a sales order. The screen below shows a typical quotation. The transaction has not been formally confirmed yet, so the header still shows actions such as Send by Email, Confirm, and Cancel. ![Quotation screen](https://xp.odoohub.com.cn/en/sale/images/17.png) | Stage | Business Meaning | System Impact | | --- | --- | --- | | Quotation | A price and condition proposal for the customer | Can be edited, sent, and assigned an expiration date | | Quotation sent | Already sent and waiting for customer confirmation | Can be followed up, signed online, or paid online | | Sales order | Customer has confirmed the transaction | Triggers delivery, invoicing, purchase, manufacturing, or project work | | Cancelled | Deal is cancelled | Related downstream documents must be handled carefully | | Locked / Done | Order should no longer be edited casually | Useful for archiving or completion control | Technically, quotations and sales orders are usually the same business object in different states. For business users, the key point is this: once the order is confirmed, Odoo begins to create downstream business actions. After confirmation, the sales order shows smart buttons such as Delivery and Customer Preview. Order lines also show fulfillment fields such as delivered quantity and invoiced quantity. ![Sales order screen](https://xp.odoohub.com.cn/en/sale/images/18.png) Sales Settings To Review First ------------------------------ Go to **Sales -> Configuration -> Settings**. Common settings include: | Setting | Purpose | | --- | --- | | Quotation templates | Quickly generate standard quotation content | | Online signature | Let customers sign and accept quotations in the portal | | Online payment | Confirm orders after customer payment | | Quotation expiration | Control default quotation validity | | Pricelists | Enable customer-level pricing, multi-currency, or promotional pricing | | Discounts | Show the discount field on order lines | | Margins | Show cost and margin on sales orders | | Customer addresses | Manage customer, invoice, and delivery addresses separately | | Invoicing policy | Invoice ordered quantities or delivered quantities | | Sales warnings | Show warnings on selected customers or products | Do not enable every switch at the beginning. For the first phase, enable only the settings required for quotations, products, pricing, delivery, and invoicing. After the process becomes stable, gradually enable online signatures, online payments, quotation templates, and complex pricelists. Customer Addresses ------------------ A customer may have multiple addresses: headquarters, invoice address, delivery address, and contact address. A sales order commonly uses three roles: | Address | Purpose | | --- | --- | | Customer | The customer that owns the sales order | | Invoice address | The billing party, tax information, and receivable relationship | | Delivery address | The address used by warehouse and logistics | Many customers initially put all address information into one contact. That may work for very small usage, but once a group customer has multiple branches, warehouses, or billing entities, Odoo contact hierarchy and address types should be used. After the required sales setting or user permission is enabled, a sales order can show separate invoice and delivery addresses. ![Invoice and delivery addresses](https://xp.odoohub.com.cn/en/sale/images/60.png) If salespeople or warehouse users need the full address directly on the order, an implementation enhancement can display the complete address on the form and reduce repeated clicks into the contact record. ![Detailed address on sales order](https://xp.odoohub.com.cn/en/sale/images/61.png) Delivery Commitment And Lead Time --------------------------------- A sales order records not only what the customer buys, but also when the company promises to deliver. | Concept | Meaning | | --- | --- | | Sales lead time | Time needed from order to delivery readiness | | Commitment date | The date promised by sales to the customer | | Expected date | The date calculated by Odoo according to lead time and route strategy | | Delivery policy | Deliver as soon as possible, or only when all products are ready | If the company uses inventory, purchase, or manufacturing, delivery dates should not be filled casually. Sales commitments affect warehouse planning, procurement, and customer satisfaction. The sales order can define a delivery policy, for example to deliver each product as soon as it is available, or to wait until all products are ready. ![Sales order delivery policy](https://xp.odoohub.com.cn/en/sale/images/3.jpg) If the promised date is earlier than the system-calculated available date, Odoo warns that the delivery may be delayed. ![Delivery date risk warning](https://xp.odoohub.com.cn/en/sale/images/6.jpg) Lock Sales Orders ----------------- After a sales order is confirmed, it may already be linked to deliveries, invoices, purchase orders, or manufacturing orders. To prevent confirmed orders from being changed accidentally, Odoo supports order locking. Locking helps to: * Prevent unintentional changes to confirmed orders. * Keep sales and finance data more stable. * Archive completed orders. * Allow edits only after an authorized user unlocks the order. Locking is not required for every company on day one. However, as order volume grows, stricter change control is recommended. A locked order shows an Unlock button and clearly indicates that the order should no longer be edited casually. ![Locked sales order](https://xp.odoohub.com.cn/en/sale/images/1.jpg) Sales Margin And Cost --------------------- Salespeople and managers often need to see gross margin. Odoo can enable sales margins and show cost and margin on the sales order. Pay attention to these points: * Cost comes from product cost or inventory valuation logic. * If product cost is inaccurate, margin is also inaccurate. * Different costing methods affect the margin basis. * Whether salespeople can see costs should be controlled by permissions. Margin is not just a simple field. It connects products, inventory, accounting, and sales performance. After the margin feature is enabled, sales order lines can show cost and margin information so sales managers can check whether an order has enough profit room. ![Sales margin setting](https://xp.odoohub.com.cn/en/sale/images/12.png) Print And Send Sales Documents ------------------------------ Odoo can print quotations and sales orders, and it can also email them to customers. The PDF layout is affected by document layout and report templates. Common output methods include: * Print PDF. * Send by email. * View through customer portal. * Sign online. * Pay online. * Download or archive as attachment. If a customer has high requirements for report format, start with native document layout and light QWeb report customization. Do not introduce complex report plugins too early. The reporting chapter has already explained this principle. The Print menu on a sales order can generate a quotation or sales order PDF directly. ![Print quotation and sales order](https://xp.odoohub.com.cn/en/sale/images/31.png) The printed PDF uses the company document layout, including logo, company information, header, footer, and order lines. ![Sales order PDF](https://xp.odoohub.com.cn/en/sale/images/32.png) Recommended Implementation Sequence ----------------------------------- Sales implementation is best handled in phases. | Phase | Focus | | --- | --- | | Phase 1 | Customers, products, taxes, prices, quotations, and sales orders | | Phase 2 | Delivery, invoices, payments, cancellation, and returns | | Phase 3 | Quotation templates, pricelists, discounts, and multi-currency | | Phase 4 | Online signature, online payment, and customer portal | | Phase 5 | CRM, purchase, inventory, manufacturing, project, and rental integration | | Phase 6 | Industry extensions such as secondary units, excise tax, and special reports | For beginner customers, it is more important to run a clean standard process from quotation to order, delivery, invoicing, and payment than to chase every advanced feature on day one. For consultants, the core of the Sales app is to design commercial commitment, inventory fulfillment, and financial invoicing on one connected line. This chapter established the overall sales management framework. The next chapter moves into sales products and variants, and explains how product data affects quotations, pricing, inventory, invoicing, and downstream fulfillment. results matching "" =================== No results matching "" ====================== --- # 第三十二章 Shopify · odoo实施参考手册-青岛欧姆网络科技 [第三十二章 Shopify](https://xp.odoohub.com.cn/) ============================================ Shopify与Odoo对接 ============== > 适用于19.0 Shopify配置 --------- 首先,我们需要在Shopify的后台创建一个**私有应用**: ![shopify1](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY1.png) 然后获取到如下参数: * App Key: 应用KEY * Admin Access Token: Admin API访问Token ### 配置应用权限˚v 我们需要给我们的应用赋于需要的接口调用权限,在配置-Admin API对接-API访问权限中设置: ![shopify2](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY2.png) Odoo配置 ------ 接下来我们就可以配置我们的Odoo应用了。首先,我们要安装由[青岛欧姆网络科技](https://www.qinglsolutin.com/) 自主研发的Shopify对接模块: ![shopify3](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY3.png) 安装完成之后,我们在主界面上点击Shopify的图标,然后进入到Shopify应用中。 ![shopify4](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY4.png) ### 创建Shopify应用 我们在设置-商店菜单中新建换一个Shopify的店铺: ![shopify5](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY5.png) 然后将我们在前面获取到的参数,填入到我们的基础信息中。配置完成后,可以点击测试连接来测试连接是否成功,如果配置无误,将看到提示配置成功。 ![shopify6](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY6.png) ### 绑定公司 创建好shopify应用后,我们可以将此应用绑定到我们想要使用的公司上。方法是点击设置-公司-选择你要使用的公司,在shopify的选项卡中,选择我们刚才创建的应用,然后完成保存。 ![shopify7](https://xp.odoohub.com.cn/chapter10/images/shopify7.png) 接下来我们就可以正式使用Odoo来完成对接工作了。 Odoo应用 ------ 首先,我们来看一下如何使用shopify模块来完成产品的同步: ### 产品同步 我们只需要点击设置-同步产品菜单,即可触发产品的同步动作。 ![shopify8](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY8.png) 同步成功后,将会提示同步了多少个产品: ![shopify9](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY9.png) 我们在产品-产品模板/产品变体菜单中可以看到我们刚才同步的产品: ![shopify10](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY10.png) #### 变体同步 在同步产品的时候,如果Shopify中有配置变体,那么系统会自动将Shopify中的变体同步下来: ![shopify11](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY11.png) ### 客户同步 同步完产品,我们就可以同步Shopify中的客户到Odoo,同样地,点击配置-同步客户菜单,即可开始同步过程: ![shopify12](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY12.png) 同步完成后,系统会提示同步了多少条数据: ![shopify13](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY13.png) ### 订单同步 客户同步完成后,我们就可以同步Shopify中的订单到Odoo了。这里我们首先需要明确一个概念,在Shopify中草稿订单和订单是两个不同类型的数据,而在Odoo中,草稿订单和订单则是同一个模型的不同状态。因此,我们在设置中做了区分: ![shopify16](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY16.png) * Draft Order: 当选择了此项时同步的订单是SHopify中的草稿订单。 * Order: 当选择了此项时同步的订单则是Shopify中的有效订单。 然后我们点击设置中的同步订单菜单,系统将会将数据同步到Odoo中: ![shopify18](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY18.png) 同步后的订单: ![shopify17](https://xp.odoohub.com.cn/chapter10/images/SHOPIFY17.png) results matching "" =================== No results matching "" ====================== --- # 第二十九章 阿里云对象存储 · odoo实施参考手册-青岛欧姆网络科技 [第二十九章 阿里云对象存储](https://xp.odoohub.com.cn/) ============================================ 阿里云对象存储 ======= * [什么是对象存储](https://xp.odoohub.com.cn/chapter10/ALIYUNOSS.html#%E4%BB%80%E4%B9%88%E6%98%AF%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8) * [对象存储的适用场景及优势](https://xp.odoohub.com.cn/chapter10/ALIYUNOSS.html#%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF%E5%8F%8A%E4%BC%98%E5%8A%BF) * [如何在odoo中使用对象存储服务](https://xp.odoohub.com.cn/chapter10/ALIYUNOSS.html#%E5%A6%82%E4%BD%95%E5%9C%A8odoo%E4%B8%AD%E6%8E%A5%E5%85%A5%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E6%9C%8D%E5%8A%A1) * [注册阿里云OSS](https://xp.odoohub.com.cn/chapter10/ALIYUNOSS.html#%E6%B3%A8%E5%86%8C%E9%98%BF%E9%87%8C%E4%BA%91oss) * [安装阿里云OSS模块](https://xp.odoohub.com.cn/chapter10/ALIYUNOSS.html#%E5%AE%89%E8%A3%85%E9%98%BF%E9%87%8C%E4%BA%91oss%E6%A8%A1%E5%9D%97) * [文件同步到阿里云OSS](https://xp.odoohub.com.cn/chapter10/ALIYUNOSS.html#%E6%96%87%E4%BB%B6%E5%90%8C%E6%AD%A5%E5%88%B0%E9%98%BF%E9%87%8C%E4%BA%91oss) * [管理阿里云OSS文件](https://xp.odoohub.com.cn/chapter10/ALIYUNOSS.html#%E7%AE%A1%E7%90%86%E9%98%BF%E9%87%8C%E4%BA%91oss%E6%96%87%E4%BB%B6) * [从阿里云OSS取回文档](https://xp.odoohub.com.cn/chapter10/ALIYUNOSS.html#%E4%BB%8E%E9%98%BF%E9%87%8C%E4%BA%91oss%E5%8F%96%E5%9B%9E%E6%96%87%E6%A1%A3) * [删除文档](https://xp.odoohub.com.cn/chapter10/ALIYUNOSS.html#%E5%88%A0%E9%99%A4%E6%96%87%E6%A1%A3) * [批量同步](https://xp.odoohub.com.cn/chapter10/ALIYUNOSS.html#%E6%89%B9%E9%87%8F%E5%90%8C%E6%AD%A5) 本章我们来看一下如何在odoo中使用阿里云对象存储(OSS)服务,将Odoo中的附件转存到阿里云对象存储上,以节省我们的服务器硬盘容量。 什么是对象存储 ------- 首先我们来了解一下什么是对象存储。 **对象存储(Object Storage)** 是一种用于保存海量非结构化数据的存储方式。它与常见的文件存储、块存储不同,具有更高的扩展性、可靠性和成本优势,广泛用于云计算环境。 对象存储把每个文件视为一个对象(Object),存储时不需要按传统目录结构来管理,而是通过一个**唯一 ID(对象键)和元数据(Metadata)**来识别和访问。 你可以把对象存储理解成一个超大号的“云硬盘”,每个文件都有唯一编号,你随时可以上传、下载,不用关心文件放在哪个目录或磁盘。 ### 对象存储适用场景及优势 * 图片、视频等多媒体文件 * 网页静态资源(JS/CSS/图片) * 数据库备份、日志 * 应用程序安装包 * 大规模数据归档 * 用户上传的文件(电商、社交媒体等) 对象存储的优势: | 特性 | 说明 | | --- | --- | | **海量存储** | 可无限扩展(PB~EB 级) | | **成本低** | 比传统存储便宜很多 | | **高可靠性** | 自动多副本备份,数据丢失概率极低 | | **高可用性** | 不依赖单一服务器,可随时访问 | | **无需复杂目录结构** | 使用 URL 或 Key 即可访问 | | **支持 HTTP 访问** | 适合 Web 服务、App 使用 | 常见的对象存储服务有: * Amazon S3(最经典) * 阿里云 OSS * 腾讯云 COS * MinIO(自建对象存储) 如何在Odoo中接入对象存储服务 ---------------- 我们以国内比较常见的阿里云OSS为例来看一下如何在Odoo中使用阿里云存储服务。 ### 注册阿里云OSS 首先,我们要去[阿里云OSS](https://www.aliyun.com/product/oss) 官网开通服务,并注册一个OSS的存储桶(bucket): ![4](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS4.png) 然后拿到以下关键参数: * AccessKey ID: 阿里云OSS访问密钥ID * AccessKey Secret: 阿里云OSS访问密钥 * OSS Endpoint: 地域节点 * Bucket Name: 存储桶名称 ### 安装阿里云OSS模块 然后我们在Odoo中需要安装由青岛欧姆网络科技完全自主开发的阿里云OSS对象模块: ![1](https://xp.odoohub.com.cn/chapter10/images/ALIYUN1.png) 安装完成后,我们将在主界面看到一个阿里云OSS应用的入口: ![2](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS2.png) 我们进入阿里云OSS应用,点击设置,创建一个阿里云OSS实例: ![3](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS3.png) 将我们在阿里云OSS创建的应用关键参数配置好: ![5](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS5.png) 然后点击激活按钮,将应用设置为激活状态。 最后,我们在当前公司信息中绑定此应用: ![6](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS6.png) ### 文件同步到阿里云OSS 默认情况下,当我们激活了应用,文件上传就已经开启。我们这里以联系人的头像为例,我们新建一个联系人:张三 并设置他的头像: ![7](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS7.png) 然后我们点击保存,之后可以看到已经上传到我们的OSS存储桶中: ![8](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS9.png) ### 管理阿里云OSS文件 为了方便用户管理已经上传到OSS的文件,我们在应用中添加了一个管理列表,用户可以方便地在Odoo中看到已经上传的文件及信息: ![9](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS8.png) > 这里可以看到,我们虽然在客户头像中只上传的了一个图片,但Odoo后台自动生成了不同尺寸的图片,因此我们在同步的时候也要将不同尺寸的图片上传。 ### 从阿里云OSS取回文档 ![10](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS10.png) 当我们把文件储存到阿里云OSS上之后,Odoo内部只保留了一个链接。当我们想要从阿里云OSS上取回我们的文档时,我们需要简单地点击动作-从阿里云OSS同步文档即可。 ![11](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS11.png) ### 删除文档 如果我们想要将不需要文档进行删除操作,我们只需要在Odoo中进行删除操作即可,阿里云OSS中的文档会自动一并删除。 ### 批量同步 对于已有数据,我们的模块也做了处理,我们在OSS应用中提供了两个按钮: ![12](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS121.png) * 同步到阿里云OSS: 点击此按钮可以将指定的文件批量同步到阿里云OSS ![13](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS13.png) * 从阿里云同步回Odoo: 点击此按钮可以将阿里云OSS中的文件同步回Odoo ![14](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS14.png) 从阿里云OSS取回文件收,阿里云OSS上的文件将被自动删除: ![15](https://xp.odoohub.com.cn/chapter10/images/ALIYUNOSS15.png) results matching "" =================== No results matching "" ====================== --- # 第三十六章 小程序商城 · odoo实施参考手册-青岛欧姆网络科技 [第三十六章 小程序商城](https://xp.odoohub.com.cn/) ========================================== 第三十四章 小程序商城 =========== Odoo 擅长做企业内部管理,商品、客户、订单、库存、销售流程都可以在 Odoo 中统一运转。但在国内市场和华人用户群体中,很多业务触点并不发生在 ERP 里,而是发生在微信生态里。 客户习惯用微信沟通、看产品、咨询价格、提交需求;销售也常常通过微信维护客户关系。如果 Odoo 只停留在企业内部,客户侧仍然依赖聊天、表格和人工转述,业务流程就很容易断在前端。 小程序的价值,正好在于它足够轻。客户不用安装 App,也不用记住网址,打开微信就能使用。把 Odoo 和小程序连接起来,就等于把企业后端能力延伸到客户熟悉的入口中。 简单来说: 小程序负责触达客户,Odoo 负责管理业务。两者打通之后,前端下单和后端流程才能真正形成闭环。 因此,我们经过长时间迭代出了一套适用于大多数行业的通用版小程序解决方案。 通用商城基础能力介绍 ---------- 我们基础版小程序商城不追求一开始就把所有营销玩法做满,而是先把商城最核心的业务链路打通:客户能看商品、能加入购物车、能提交订单,企业能在 Odoo 中继续处理订单。 ### 1\. 商品展示 商城首先要解决的是“客户看什么”。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/43ab0eef6f0c7166c1cb91dc06cc1f54.jpg) 基础版支持商品列表和商品详情展示,客户可以在小程序中查看商品名称、图片、价格、规格说明等基础信息。企业可以围绕 Odoo 中的商品资料进行统一管理,减少多端重复维护带来的信息不一致。 ### 2\. 商品分类 当商品数量增加后,分类就变得很重要。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/7943dfcdc2df2a5327ccc5d248f0157a.jpg) 通过商品分类,客户可以更快找到自己需要的产品。对于企业来说,清晰的分类结构也能让商城更容易运营,不至于所有商品都挤在一起,让客户一边滑屏一边怀疑人生。我们的商城小程序支持后台设置使用Odoo原生分类或电商分类两套分类体系,企业可以根据实际情况选择适合自己的分类方式。 ### 3\. 购物车 客户浏览商品后,可以将感兴趣的商品加入购物车,统一确认数量和商品明细。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/4aaac6f1bee02080250af946d87af86e.jpg) 购物车的价值在于,它让客户有一个整理和确认订单的过程,也让下单信息更加标准,减少后续沟通成本。 ### 4\. 提交订单 客户确认商品后,可以在小程序中提交订单。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/14171ebda5ffcb757b33f02263adea7e.jpg) 订单提交后,企业可以在 Odoo 后台继续处理相关销售流程。这样小程序不只是前台展示,而是成为 Odoo 订单来源的一部分。 ### 5\. 微信支付 原生支持微信支付,客户可以直接在小程序中完成支付流程。对于企业来说,微信支付的接入也能让订单闭环更完整,提升客户的购买体验。用户只要在微信商户平台绑定小程序即可。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/ac48fd21d7de88c695d5c1959ca9a0eb.jpg) ### 6\. 订单查询 客户提交订单后,可以在小程序中查看自己的订单记录和基础状态。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/53f559c7812fc9ed78c86ed6d1135823.jpg) 这能减少销售和客服的重复查询工作,也让客户对订单进展更有掌控感。 ### 7\. 售后支持 如果对订单有疑问,客户可以通过小程序直接联系销售或客服人员,进行售后咨询。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/2912520178f9d757522ce2ad22eb1c57.jpg) Odoo端的支持 -------- 看完了客户侧的功能,我们再看看企业端。小程序虽然是客户触点,但它背后是Odoo在支撑业务流程的运转。 ### 通用配置 ![alt text](https://xp.odoohub.com.cn/chapter10/images/QQ_1782140659341.png) 为什么我们的小程序与市面上的其他小程序解决方案不太一样?因为我们不想把小程序当成一个独立的系统来做,而是想把它当成 Odoo的一个可配置项来做。这样就要求我们在 Odoo 里做好配置,让小程序能无缝对接 Odoo 的业务流程。因此,我们在 Odoo 里设计了一个通用配置界面,企业可以在这里设置小程序的基本信息、商品展示规则、订单处理规则等。通过这个配置界面,我们的小程序能够适配不同企业的需求,而不需要每次都改代码。 ### 灵活的配置 ![alt text](https://xp.odoohub.com.cn/chapter10/images/QQ_1782140785389.png) 我们在设计小程序的一开始,就考虑到了很多企业不同的业务需求。比如,有些企业可能不需要在线支付(比如,欧洲的B端客户,微信支付受限),但又想用小程序来展示商品和收集订单信息;有些企业可能需要更复杂的订单处理流程,比如,订单提交后需要先审核再确认;还有些企业可能需要在订单里添加一些特殊字段来满足自己的业务需求。针对这些不同的需求,我们的小程序都提供了灵活的配置选项,让企业可以根据自己的实际情况来调整小程序的行为。 ### 欧姆生态的联动 ![alt text](https://xp.odoohub.com.cn/chapter10/images/QQ_1782141439870.png) 熟悉我们的朋友可能知道,我们围绕Odoo开发了很多生态模块,比如企业微信、公众号、顺丰速递、Google Cloud Storage等。这些模块和小程序之间也有很多联动的机会。比如,企业微信和小程序可以共享客户信息,企业在小程序里收集的订单信息可以通过企业微信推送给销售人员;顺丰速递和小程序可以打通物流信息,客户在小程序里提交订单后,可以直接查询物流状态;Google Cloud Storage和小程序可以结合使用,企业可以把小程序的图片资源存储在云端,提高访问速度和稳定性。通过这些联动,我们的小程序能够更好地融入企业的整体数字化生态中。 ### 良好的可拓展性 最核心的,我们的这个小程序基础模块,不仅仅支持电商小程序,还同样支持其他类型的小程序。比如,我们也有一个基于同一套技术架构的预约小程序,客户可以在小程序里预约服务,企业在 Odoo 里管理预约信息。我们的小程序基础模块提供了一个通用的框架,企业可以在这个框架上开发不同类型的小程序来满足不同的业务场景。 你的小程序并不仅仅是一个小程序 --------------- 正如本文开头所说,小程序的价值在于它足够轻,客户打开微信就能使用。但它的意义远不止于此。通过把小程序和 Odoo 连接起来,我们不仅仅是把一个新的客户触点接入了企业的数字化体系,更是把企业的后端能力延伸到了客户熟悉的入口中。小程序不再是一个孤立的系统,而是成为了 Odoo 生态中的一个重要组成部分,帮助企业更好地触达客户、服务客户、管理业务。 ![alt text](https://xp.odoohub.com.cn/chapter10/images/image.png) AI时代降临,企业数字化转型的步伐也在不断加快,内卷的程度只会越演越烈,谁的成本更低,谁的服务更优,谁就能获取客户,赢得未来。这就是我们为什么说,每个使用Odoo的企业都应该有一套自己的小程序,因为它不仅仅是一个小程序,更是企业在这个时代下的一个重要竞争力。不管您使用的是社区版还是企业版,都可以通过我们的通用小程序解决方案,更快地上线自己的小程序商城,连接更多的客户,提升客户体验,同时也能更好地利用 Odoo 的强大功能来管理业务流程。未来,我们还会继续迭代和优化这个小程序解决方案,让它能够适应更多的行业和业务场景,帮助企业在数字化转型的道路上走得更远。 results matching "" =================== No results matching "" ====================== --- # 第三十三章 Revolut支付 · odoo实施参考手册-青岛欧姆网络科技 [第三十三章 Revolut支付](https://xp.odoohub.com.cn/) ============================================== Revolut支付集成 =========== Revolut 支付(Revolut Pay)是由 Revolut 推出的一种在线支付方式,允许用户直接使用自己的 Revolut 账户完成付款,无需输入银行卡信息。通过集成 Revolut 支付,商户可以为客户提供一种便捷、安全的支付选项,提升用户体验并增加转化率。 本文将介绍如何在 Odoo 中集成 Revolut 支付,包括配置步骤和代码示例。 安装Revolut支付模块 ------------- Revolut支付模块由青岛欧姆网络科技有限公司开发,您可以通过以下步骤安装: 1. 登录 Odoo 后台,进入应用模块。 2. 搜索 "Revolut Pay" 模块。 3. 点击安装按钮,完成模块安装。 ![安装Revolut支付模块](https://xp.odoohub.com.cn/chapter10/images/R00.png) 配置Revolut支付 ----------- 安装完成后,您需要进行以下配置: 1. 进入 **设置** > **支付提供商**。 2. 找到 "Revolut Pay" 支付提供商,点击编辑。 3. 填写以下信息: * **商户ID**:您的 Revolut 商户账户 ID。 ![配置Revolut支付](https://xp.odoohub.com.cn/chapter10/images/R1.png) 1. 保存配置。 使用Revolut支付 ----------- ### 在销售单中使用Revolut支付 当客户在销售单中生成支付链接时,系统将引导客户完成 Revolut 支付流程。 ![选择Revolut支付](https://xp.odoohub.com.cn/chapter10/images/R2.png) 选择Revolut支付 ![完成Revolut支付](https://xp.odoohub.com.cn/chapter10/images/R3.png) 系统将弹出 Revolut 支付界面,客户填写相关信息后完成支付。 ![支付完成](https://xp.odoohub.com.cn/chapter10/images/R4.png) 支付完成: ![支付成功](https://xp.odoohub.com.cn/chapter10/images/R5.png) ### 在发票中使用Revolut支付 客户也可以在发票中选择 Revolut 支付,流程与销售单类似。 ![发票选择Revolut支付](https://xp.odoohub.com.cn/chapter10/images/R6.png) 选择Revolut支付 ![完成Revolut支付](https://xp.odoohub.com.cn/chapter10/images/R7.png) 系统将引导客户完成 Revolut 支付流程。 ![支付完成](https://xp.odoohub.com.cn/chapter10/images/R8.png) 支付完成: ![支付成功](https://xp.odoohub.com.cn/chapter10/images/R9.png) ### 在商城中使用Revolut支付 客户在商城中下单后,也可以选择 Revolut 支付完成订单。 ![商城选择Revolut支付](https://xp.odoohub.com.cn/chapter10/images/R10.png) 弹窗中输入相关信息完成支付: ![完成Revolut支付](https://xp.odoohub.com.cn/chapter10/images/R11.png) 支付完成: ![支付成功](https://xp.odoohub.com.cn/chapter10/images/R12.png) ![支付成功](https://xp.odoohub.com.cn/chapter10/images/R13.png) 结论 -- 通过集成 Revolut 支付,商户可以为客户提供一种便捷、安全的支付选项,提升用户体验并增加转化率。希望本文能帮助您顺利完成 Revolut 支付的集成和使用。如果您有任何问题或需要进一步的帮助,请随时联系欧姆网络的客服团队。 results matching "" =================== No results matching "" ====================== --- # Part 3 Sales Management · Odoo Implementation Manual - Qingdao Ohm Network Technology [Part 3 Sales Management](https://xp.odoohub.com.cn/en/) ========================================================= Part 3 Sales Management ======================= Sales management is the core process that turns customer demand into confirmed revenue. In Odoo, the Sales app is not just a place to record orders. It connects CRM, contacts, products, pricelists, inventory, accounting, website portals, rentals, subscriptions, and service projects. This part follows a practical implementation sequence. We first build the overall sales framework, then move into products, quotations, sales orders, delivery, invoicing, pricing, taxes, inventory fulfillment, returns, and industry-specific extensions. The goal is to help readers implement the native Odoo sales flow confidently while also understanding when a business scenario should remain standard configuration and when it deserves a deeper solution design. results matching "" =================== No results matching "" ====================== --- # Part 4 Purchase Management · Odoo Implementation Manual - Qingdao Ohm Network Technology [Part 4 Purchase Management](https://xp.odoohub.com.cn/en/) ============================================================ Part 4 Purchase Management ========================== Purchase management is the process that turns internal demand into vendor orders, receipts, vendor bills, and cost records. In Odoo, Purchase is closely connected with products, vendors, inventory, accounting, replenishment, and manufacturing. This part starts from the standard RFQ and purchase order flow, then explains how purchase confirmation creates receipts, how expected delivery dates and vendor lead times affect planning, how basic purchase approval works, and how purchase receipt affects product cost. The goal is to help readers understand procurement not as a standalone order screen, but as the upstream half of inventory and cost control. results matching "" =================== No results matching "" ====================== --- # Part 5 Warehouse Management · Odoo Implementation Manual - Qingdao Ohm Network Technology [Part 5 Warehouse Management](https://xp.odoohub.com.cn/en/) ============================================================= Part 5 Warehouse Management =========================== Warehouse management is where products become real stock movements: receipts from vendors, deliveries to customers, internal transfers, replenishment, barcodes, putaway, storage categories, delivery methods, and inventory valuation. In Odoo, inventory is not just a quantity field on a product. It is a system of warehouses, locations, operation types, stock moves, move lines, routes, and valuation records. This part starts with core inventory concepts, then explains locations, operation types, reordering rules, barcode operations, putaway rules, storage categories, delivery methods, and cost valuation. The goal is to help readers understand how Odoo records every movement from one location to another, and why sales, purchase, manufacturing, and accounting all depend on reliable inventory configuration. results matching "" =================== No results matching "" ====================== --- # Chapter 2 Cost Calculation · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 2 Cost Calculation](https://xp.odoohub.com.cn/en/) ============================================================ Chapter 2 Cost Calculation ========================== Purchase is not only about placing orders with vendors. Once purchased products are received into stock, they may also affect product cost, inventory valuation, and later sales margin. For companies using Odoo Inventory and Accounting, purchase cost logic should be understood before go-live, otherwise product margin and stock value can easily become confusing. This chapter explains the basic cost calculation idea around purchase receipts, especially the average cost method. Receipt And Cost Update ----------------------- If a product uses the average cost method, Odoo updates the product cost after purchase receipt according to the value of the incoming goods and the existing inventory value. The simplified formula is: Average cost = (Purchase price x Purchased quantity + Previous average cost x Existing stock quantity) / Stock quantity after receipt Example: Existing stock: 10 units Previous average cost: 20 New purchase: 5 units Purchase price: 26 New average cost = (26 x 5 + 20 x 10) / 15 = 22 This means the cost does not simply become the latest purchase price. It becomes a weighted average of existing stock and incoming stock. Stock Valuation Layers ---------------------- Although the formula above is useful for understanding, Odoo does not rely only on one visible formula field in real inventory accounting. Modern Odoo versions use stock valuation layers to record inventory value changes caused by receipts, deliveries, returns, and adjustments. Stock valuation layers help trace: * Which receipt brought value into stock. * Which delivery consumed stock value. * How inventory value changed over time. * Why product cost or margin changed. * How accounting entries were generated when automated valuation is enabled. For implementation, this means users should not manually change cost without understanding the downstream impact. Product cost, receipt price, vendor bills, landed costs, and inventory valuation can all affect management reports. Cost Method Matters ------------------- Different product categories can use different costing methods. Common methods include: | Cost Method | Meaning | Purchase Impact | | --- | --- | --- | | Standard Price | Cost is maintained manually or by controlled update | Purchase receipt usually does not change product cost automatically | | Average Cost | Cost updates according to weighted average after receipt | Purchase price and received quantity affect product cost | | FIFO | Outgoing value follows first-in-first-out valuation layers | Purchase receipts create cost layers consumed later | The cost method is usually configured on the product category. It should be decided before large-scale transactions, because changing cost method after go-live can be sensitive. Purchase Price And Vendor Bill ------------------------------ The purchase order price is the expected purchasing price. The vendor bill is the financial document from the supplier. In many simple flows, they are the same. In real projects, differences may appear: * Vendor changes final price. * Freight or landed cost must be allocated. * Discount is applied on the bill. * Currency exchange rate changes. * Quantity received differs from quantity billed. If the company needs strict inventory valuation, purchase order, receipt, and vendor bill should be reviewed together. Implementation Advice --------------------- Before going live, confirm these points with finance and warehouse: | Question | Why It Matters | | --- | --- | | Which products need inventory valuation? | Not every service or consumable needs the same treatment | | Which cost method should each category use? | It affects product cost and margin | | Is valuation manual or automated? | Automated valuation creates accounting entries from stock moves | | Are landed costs required? | Freight, duty, and other costs may need allocation | | Who can change product cost? | Cost changes affect reports and decisions | For a beginner implementation, use a small sample of products to test purchase receipt, vendor bill, and stock valuation before importing a large product catalog. This chapter explained how purchase receipts affect product cost and why cost method design matters. The next part moves into warehouse management, where receipts, locations, transfers, batches, barcode, and replenishment are handled in more detail. results matching "" =================== No results matching "" ====================== --- # Part 6 Manufacturing Management · Odoo Implementation Manual - Qingdao Ohm Network Technology [Part 6 Manufacturing Management](https://xp.odoohub.com.cn/en/) ================================================================= Part 6 Manufacturing Management =============================== Manufacturing connects product design, bills of materials, raw material consumption, work orders, quality checks, subcontracting, kits, and inventory valuation. In Odoo, manufacturing is not only about creating a production order. It also affects stock availability, component traceability, work center execution, and cost analysis. This part currently focuses on the manufacturing topics available in the Chinese manual: work order management, quality checks, and kit traceability. The goal is to help readers understand how manufacturing operations interact with inventory and why production documents should be designed together with products, BoMs, routes, and traceability rules. results matching "" =================== No results matching "" ====================== --- # Chapter 3 Managing Work Orders · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 3 Managing Work Orders](https://xp.odoohub.com.cn/en/) ================================================================ Chapter 3 Managing Work Orders ============================== Work orders belong to the Odoo Enterprise manufacturing feature set. Community Edition users can skip this chapter unless their implementation uses a custom work order flow. In manufacturing, production is not always completed in one operation. Sometimes only part of the finished product is produced first, while the remaining quantity must continue later. Odoo handles this through the concept of **backorders**. Managing Backorders ------------------- A backorder is a follow-up document created when an operation cannot be completed in full. This concept is not unique to manufacturing. It also appears in inventory receipts and deliveries. For example, if a company purchases 100 apples and the vendor delivers only 50, the receipt can validate 50 first and create a backorder for the remaining 50. When the vendor delivers the rest later, the backorder is used to complete the remaining receipt. Manufacturing work orders work similarly. Suppose the company needs to produce 100 laptops, but the first assembly operation completes only 20. Odoo can create a backorder for the remaining 80 so production continues with proper traceability. Reporting Production -------------------- Production reporting can happen in two places: * From the work order lines on the manufacturing order. * From the shop floor or work order execution interface. The difference matters. Starting or blocking work from the work order lines usually does not automatically advance the next work order. In the work order execution interface, clicking Record Production can automatically trigger the backorder flow and start the next operational step. For implementation, users should be trained on where they report production. If operators report in the wrong place, the production order may look incomplete or the next work order may not start as expected. Implementation Advice --------------------- Before using work orders in production, test these cases: * Produce the full planned quantity. * Produce a partial quantity and create a backorder. * Block a work order and resume it. * Record production from the work order execution interface. * Check how finished goods and component consumption update inventory. Work orders are powerful, but they also require disciplined shop-floor usage. For a first manufacturing rollout, start with a simple BoM and one or two operations, then add more complex backorders and quality controls after users understand the basic flow. This chapter explained backorders and production reporting in work orders. The next manufacturing chapter explains quality checks during production. results matching "" =================== No results matching "" ====================== --- # Part 7 Accounting Management · Odoo Implementation Manual - Qingdao Ohm Network Technology [Part 7 Accounting Management](https://xp.odoohub.com.cn/en/) ============================================================== Part 7 Accounting Management ============================ Accounting is the financial closing layer of Odoo implementation. Sales creates customer invoices, purchase creates vendor bills, inventory may create valuation entries, payments connect with bank and cash journals, and statements help companies follow up customer balances. This part explains the accounting concepts used most often in Odoo implementation: chart of accounts, journals, taxes, customer and vendor invoices, payments, customer statements, and journal sequence rules. It is written for implementers and key users, not as a replacement for local accounting or tax advice. In real projects, finance teams and local accountants should confirm compliance details. results matching "" =================== No results matching "" ====================== --- # Chapter 5 Journals · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 5 Journals](https://xp.odoohub.com.cn/en/) ==================================================== Chapter 5 Journals ================== Journal Sequence Rules ---------------------- When Odoo enables accounting inalterability, especially for EU compliance or audit-chain scenarios, it requires every posted journal entry to uniquely identify the previous posted journal entry. This is used for: * Hash or sequence chains. * Audit traceability. * Preventing deletion, insertion, or disorderly modification. In other words, journal entry numbers must remain continuous and should not have gaps. Different Odoo versions implement this rule differently. In Odoo 15, it was handled through a **secure sequence number**. From Odoo 17, the implementation changed and no longer relies on the old sequence object in the same way. Instead, it calculates from existing database records. Therefore, when encountering this error, the troubleshooting strategy depends on the Odoo version: An error occurred when computing the inalterability. Impossible to get the unique previous posted journal entry The error means the journal contains a missing or inconsistent sequence. Possible causes include accidental deletion of journal entries or database inconsistency. Implementation Advice --------------------- For production accounting databases: * Do not delete posted journal entries manually. * Avoid direct database changes to accounting records. * Restrict who can reset posted entries to draft. * Test invoice numbering and journal sequence behavior before go-live. * When a sequence issue appears, diagnose against the exact Odoo version. Journal sequence rules are part of accounting auditability. Treat them as compliance-sensitive configuration, not only as a numbering preference. This chapter explained journal sequence continuity and inalterability errors. With this, the accounting part has introduced core accounting concepts, invoicing, payments, customer statements, and journals. The next part moves into project or related operational modules according to the manual structure. results matching "" =================== No results matching "" ====================== --- # Chapter 4 Sales Order Process · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 4 Sales Order Process](https://xp.odoohub.com.cn/en/) =============================================================== Chapter 4 Sales Order Process ============================= After a customer accepts a quotation, the quotation is confirmed as a sales order. The sales order is the central node of the Odoo sales flow. Depending on products and configuration, it can trigger delivery orders, invoices, purchase requirements, manufacturing orders, project tasks, or rental flows. Many companies can create an order, but they are less clear about what Odoo does automatically after confirmation. This chapter starts from a standard sales order and explains confirmation, delivery, invoicing, payment, cancellation, deletion boundaries, locking, and state changes. Standard Sales Flow ------------------- A standard flow can be summarized as: Create quotation -> Send quotation -> Customer confirms -> Sales order -> Delivery -> Invoice -> Payment -> Done Different product types change the downstream behavior. | Product Type | Common Action After Confirmation | | --- | --- | | Physical product | Generate a delivery order and use inventory fulfillment | | Service product | Usually no stock move; may connect with projects or timesheets | | Rental product | Enter pickup and return flow | | Buy-to-order product | May trigger purchase demand | | Make-to-order product | May trigger a manufacturing order | Before confirming an order, make sure the product type, route, invoicing policy, and stock settings are correct. Create A Quotation And Review Defaults -------------------------------------- Before a sales order exists, the user usually creates a quotation first. In the quotation stage, the header normally shows buttons such as Send by Email and Confirm. This means the document is not yet a formal order. ![Quotation waiting for confirmation](https://xp.odoohub.com.cn/en/sale/images/17.png) Common quotation fields include: * Customer. * Invoice address. * Delivery address. * Quotation date. * Pricelist. * Payment terms. * Salesperson. * Sales team. * Order lines. * Terms and notes. The default salesperson may come from the current user, the customer record, or the CRM opportunity. During implementation, define one consistent rule; otherwise later sales performance reports will be inaccurate. Confirm The Order ----------------- After clicking Confirm, the quotation becomes a sales order. The status bar moves to the sales order stage, and smart buttons such as Delivery appear. In the example below, the order has been confirmed and one delivery order has been generated. ![Confirmed sales order](https://xp.odoohub.com.cn/en/sale/images/18.png) Order confirmation may trigger: * Delivery order creation. * Ordered quantity updates. * Purchase or manufacturing demand. * Invoice creation availability. * Notifications to related users. * Customer portal order status updates. Confirmation means the commercial commitment is accepted. Do not treat Confirm as just another Save button. If the customer is only asking for price and has not committed to buy, the document should remain a quotation. Delivery And Fulfillment ------------------------ After confirmation, if the order contains stock-managed products, Odoo usually creates a delivery order. Common delivery states include: | State | Meaning | | --- | --- | | Waiting | Not enough stock or waiting for another operation | | Ready | Stock is available and the delivery can be validated | | Done | Warehouse has validated the outbound delivery | | Cancelled | Delivery order has been cancelled | Delivered quantity on the sales order updates according to the delivery result. This quantity affects invoicing when the product is configured to invoice delivered quantities. Sales order lines show delivered quantity and invoiced quantity. When salespeople judge whether an order has been fulfilled, they should not only look at the order state. They should also check these two quantities. ![Delivered quantity on sales order](https://xp.odoohub.com.cn/en/sale/images/35.png) If the order contains multiple products, also review the delivery policy: deliver available products as soon as possible, or wait until all products are ready and deliver together. Create An Invoice ----------------- After the sales order is confirmed, invoices can be created according to the product invoicing policy. When clicking Create Invoice, Odoo opens a wizard where users can choose a regular invoice, a down payment percentage, or a fixed down payment amount. ![Create invoice wizard](https://xp.odoohub.com.cn/en/sale/images/19.png) Invoice-related states include: | State | Meaning | | --- | --- | | Nothing to invoice | No invoiceable quantity or amount at the moment | | To invoice | There is an invoiceable amount or quantity | | Fully invoiced | The order has been fully invoiced | | Upselling opportunity | Delivered quantity exceeds the invoiced or ordered logic and needs attention | Invoicing policy and down payments are explained in the next chapter. For now, remember this: a sales order is not an accounting invoice. Only after the customer invoice is confirmed does it enter accounts receivable. Register Payment ---------------- After the invoice is confirmed, finance can register the payment. Sales order -> Customer invoice -> Register payment -> Bank reconciliation In real projects, payment status is also affected by accounting configuration, bank reconciliation, payment methods, and collection procedures. Salespeople can view invoice and payment results, but they should not bypass finance by manually changing states. After an invoice is confirmed, payment can be registered. After payment registration, finance should still reconcile it with bank statements to complete the cash loop. ![Register payment](https://xp.odoohub.com.cn/en/sale/images/21.png) Cancel An Order --------------- Order cancellation depends on progress. | Current Situation | Recommended Handling | | --- | --- | | Not delivered and not invoiced | Cancel the sales order and related delivery order | | Delivered but not invoiced | Consider inventory return | | Invoiced but not paid | Consider a credit note | | Invoiced and paid | Consider refund and accounting handling | | Purchase or manufacturing already triggered | Handle downstream documents together | Do not casually delete confirmed or fulfilled orders. Once business activity has happened, use cancellation, return, refund, or other reverse flows so the history remains traceable. If the order has already been delivered, cancelling the sales order is no longer only a sales action. Inventory return and financial refund may also be required. ![Cancel sales order](https://xp.odoohub.com.cn/en/sale/images/28.jpg) Lock And Unlock --------------- Odoo supports locking confirmed sales orders. After an order is locked, it cannot be edited casually. Locking is suitable when: * The order has been delivered. * The order has been invoiced. * Finance wants stable historical records. * Management wants to prevent later price or quantity changes. When changes are required, an authorized user can unlock the order. Whether ordinary sales users should be allowed to unlock depends on the company's management rules. Customer Credit Limit --------------------- Odoo natively supports customer credit limit warnings. When the customer's unpaid balance exceeds the credit limit, the sales order may show a warning. The value of this warning is that sales can see collection risk before accepting the order. Note that native credit control may be warning-oriented in some scenarios. Whether it strictly blocks order confirmation depends on version, configuration, and company policy. If a company needs strict credit control, accounting rules or customization may be required. Credit limit warnings can be enabled in Sales or Accounting settings, and the credit limit can be maintained on the customer record. ![Customer credit limit setting](https://xp.odoohub.com.cn/en/sale/images/83.png) When the order exceeds the credit limit, the sales order shows a risk warning so the salesperson can identify payment risk early. ![Credit limit warning](https://xp.odoohub.com.cn/en/sale/images/85.png) Deletion Boundaries ------------------- Draft quotations can be deleted. Confirmed, delivered, or invoiced orders should not be deleted. Deletion creates risks: * Historical sales records disappear. * Inventory delivery becomes hard to trace. * Accounts receivable cannot be matched. * Customer communication history is lost. * Reports become unreliable. During implementation, train users that cancellation and deletion are not the same thing. Business that has already happened should keep its history and use reverse flows when needed. Common Issues ------------- | Issue | Common Cause | Direction | | --- | --- | --- | | No delivery order after confirmation | Product is a service, or inventory/route is not configured | Check product type and inventory configuration | | Cannot invoice | Product invoices delivered quantity but has not been delivered | Check invoicing policy and delivered quantity | | Delivery is not ready | Not enough stock or waiting for replenishment | Check forecasted stock and reordering rules | | Customer sees the wrong price | Pricelist, discount, or tax is wrong | Review pricing and tax configuration | | Completed order can still be changed | Locking is not enabled or permissions are too broad | Design locking and permissions | Implementation Advice --------------------- Use one simple product to run the complete flow first: Quotation -> Send -> Confirm -> Deliver -> Invoice -> Payment -> Return / Refund rehearsal Do not test only whether an order can be created. A real go-live test must prove that sales, warehouse, finance, and customer portal can connect smoothly. This chapter explained the main states and actions after sales order confirmation. The next chapter goes deeper into invoicing policies, down payments, and pro-forma invoices, answering when to invoice, how much to invoice, and how to handle deposits. results matching "" =================== No results matching "" ====================== --- # Part 8 Multi-Company · Odoo Implementation Manual - Qingdao Ohm Network Technology [Part 8 Multi-Company](https://xp.odoohub.com.cn/en/) ====================================================== Part 8 Multi-Company ==================== Multi-company management becomes important when one Odoo database is shared by multiple legal entities, branches, brands, or operating teams. A common example is a group company where one company sells goods to another internal company, or where a purchasing center buys products and resells them to several subsidiaries. Odoo provides native multi-company rules for synchronizing invoices, bills, sales orders, and purchase orders between companies. These rules can reduce duplicate data entry and make internal trade easier to control, but they also require careful setup of companies, partners, products, taxes, journals, and user permissions. In this part, we focus on inter-company purchasing. The goal is to help implementation users understand what Odoo can do natively, where the standard workflow stops, and how an extension can close practical gaps such as lot and serial number synchronization. results matching "" =================== No results matching "" ====================== --- # Part 1 Self-Implementation Roadmap · Odoo Implementation Manual - Qingdao Ohm Network Technology [Part 1 Self-Implementation Roadmap](https://xp.odoohub.com.cn/en/) ==================================================================== Part 1 Self-Implementation Roadmap ================================== When many companies first encounter Odoo, the most common mistake is not that they do not know which button to click. The real problem is that they do not know what should come first and what should wait until later. Odoo has many applications: Sales, Purchase, Inventory, Accounting, Website, POS, Manufacturing, Employees, and more. But implementing an ERP system is not the same as installing every module. A successful implementation usually starts by making the main business flow work, then gradually adding automation, reports, and industry-specific extensions. The goal of this part is to help readers without implementation experience build a basic judgment framework: * What information should be prepared before go-live; * Which modules should be implemented first, and which can wait for phase two; * How to rehearse real business processes in a test database; * Which requirements should use native Odoo first; * Which requirements are worth custom development; * How to decide whether the system is ready for go-live. If this is your first time implementing Odoo by yourself, we recommend reading this part first. After that, you can move into the Sales, Purchase, Inventory, Accounting, and other module chapters according to your business needs. results matching "" =================== No results matching "" ====================== --- # Chapter 2 Odoo Go-Live Sequence · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 2 Odoo Go-Live Sequence](https://xp.odoohub.com.cn/en/) ================================================================= Chapter 2 Odoo Go-Live Sequence =============================== Odoo is a modular system. The advantage is that companies can enable applications as needed. The challenge is that new users may not know where to start. This chapter provides a general go-live sequence suitable for small and medium-sized companies. It is not the only correct answer, but it is a safe path for most companies implementing Odoo by themselves for the first time. Overall Principles ------------------ The go-live sequence should follow three principles: * Master data before business documents; * Main process before automation; * Native Odoo before custom development. Many projects fail not because Odoo cannot do something, but because the sequence is reversed. Teams start with complex approvals, reports, integrations, and custom pages, while master data and business processes are not yet stable. Recommended Go-Live Stages -------------------------- | Stage | Goal | Main Work | | --- | --- | --- | | Stage 0 | Prepare the test database | Confirm company, users, language, and module scope | | Stage 1 | Master data | Customers, vendors, products, warehouses, taxes, bank accounts | | Stage 2 | Sales, Purchase, and Inventory loop | Quotations, sales orders, purchase orders, receipts, deliveries | | Stage 3 | Finance loop | Invoicing, payments, bank statements, reconciliation, receivables and payables | | Stage 4 | Permissions and reports | Assign permissions by role and confirm management and departmental reports | | Stage 5 | Go-live rehearsal | Run complete processes with test data and confirm exception flows | | Stage 6 | Formal go-live | Import opening data and switch to official data entry | | Stage 7 | Phase-two optimization | Automation, integrations, industry customization, management dashboard | Do not skip Stage 0 and Stage 1. They may not create business documents, but they determine whether the system will be stable later. Stage 0: Prepare The Test Database ---------------------------------- The test database should first complete these basic actions: * Create company information; * Set language and time zone; * Create business users other than the administrator; * Install the modules required for the current phase; * Configure basic document layout; * Prepare a test customer, test vendor, and test product set. Do not be afraid of making a mess in the test database. Its value is to let the team make mistakes before go-live. Stage 1: Master Data -------------------- Master data is the foundation of Odoo. Recommended preparation sequence: 1. Company data; 2. Users and permissions; 3. Customers and contacts; 4. Vendors; 5. Product categories; 6. Products; 7. Warehouses and locations; 8. Taxes; 9. Bank accounts; 10. Opening inventory and accounting balances. If customer, product, and vendor data are not clean, do not rush to import them. It is better to import a smaller set of high-quality data than a large amount of incorrect data. Stage 2: Sales, Purchase, And Inventory Loop -------------------------------------------- For trading companies, the first process to validate is usually: Customer quotation -> Sales order -> Purchase order -> Receipt -> Delivery -> Customer receipt This stage should verify: * Can sales users create quotations? * After a quotation is confirmed, does inventory generate a delivery demand? * If there is not enough stock, can purchase replenish the goods? * After purchase receipt, does inventory increase? * After delivery, is the customer order status correct? * Can partial delivery, order cancellation, and returns be handled? Finance does not need to be very detailed at this stage, but business documents must move smoothly. Stage 3: Finance Loop --------------------- After the business process works, finance should join the validation. The finance stage should verify: * Can a sales order create a customer invoice? * Can a purchase order match a vendor bill? * Can customer payments be registered? * Can vendor payments be registered? * Can bank statements be imported or synchronized? * Can bank transactions be reconciled with invoices or payments? * Are receivables, payables, and aged reports understandable? Many Chinese companies think of "invoice" as the official VAT invoice. In Odoo, an Invoice is an accounting receivable or payable document, not the same as a Chinese tax-control invoice. If a domestic company needs to connect to a tax invoicing platform, it should be evaluated separately. Stage 4: Permissions And Reports -------------------------------- Permissions should not wait until after go-live. Once the business process works, testing should switch to real role-based accounts. At minimum, test these roles: * Can sales users see only the customers and orders they are responsible for? * Can warehouse users receive and deliver goods, but not change sales prices? * Can purchase users create purchase orders, but not edit accounting entries? * Can finance users process invoices and payments, but not casually change inventory? * Can managers view reports without participating in daily document entry? Reports should also be confirmed at this stage. Do not wait until after go-live to discover that the indicators management needs are not available. Stage 5: Go-Live Rehearsal -------------------------- Run at least one full rehearsal before go-live. Do not test only the smooth path. Intentionally test exceptions: * Sales order cancellation; * Partial delivery; * Customer return; * Partial purchase receipt; * Vendor bill amount different from the purchase order; * Partial customer payment; * Bank statement line without a matching invoice; * Employee without permission for a certain button. Only when exception flows can also be handled is the system truly usable. Stage 6: Formal Go-Live ----------------------- Before formal go-live, define a cutover date. For example: > Starting from August 1, 2026, all new sales orders will be entered in Odoo. The old system will be used only for historical lookup and no longer accepts new transactions. At cutover, handle: * Opening inventory; * Opening receivables; * Opening payables; * Unfinished sales orders; * Unfinished purchase orders; * Unfinished deliveries and receipts; * Bank balances; * Old system read-only or data-entry stop rule. Do not let two systems enter the same type of business for a long time. The data will eventually fail to match. Stage 7: Phase-Two Optimization ------------------------------- After phase one goes live, consider phase two. Phase two is suitable for: * Approval flows; * Automatic replenishment; * Pricing rules; * Commissions and rebates; * Website eCommerce; * POS stores; * WeChat, WeCom, payment, and logistics integrations; * Management dashboards; * Industry-specific custom modules. Customization at this stage is usually more accurate because the customer already knows what native Odoo can do and what is truly missing. Go-Live Methods Not Recommended ------------------------------- Avoid these approaches: * Installing every module on the first day; * Building custom development before testing the native process; * Operating directly in production without a test database; * Letting only the owner or administrator test, without real role users; * Changing master data at large scale during go-live; * Not defining the cutover date between the old system and Odoo. Minimum Success Standard For Self-Implementation ------------------------------------------------ If a customer is not sure whether the system is ready, use this table: | Check Item | Passing Standard | | --- | --- | | Master data | Customers, vendors, products, warehouses, and taxes are prepared and spot-checked | | Main process | At least one complete Sales/Purchase/Inventory/Finance process has been completed | | Exception process | Cancellation, return, partial receipt, and partial payment have been tested | | Permissions | Real role accounts can complete their own work | | Reports | Management and finance can understand key reports | | Cutover plan | Formal start date and old-system stop rule are confirmed | | Backup | Database and file backup method is confirmed | Meeting these conditions makes go-live much safer. results matching "" =================== No results matching "" ====================== --- # Chapter 1 Introduction To Odoo · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 1 Introduction To Odoo](https://xp.odoohub.com.cn/en/) ================================================================ Chapter 1 Introduction To Odoo ============================== Odoo is a suite of business applications. It is not only inventory software, and it is not only accounting software. It is a business platform made of many application modules. For beginners, it is useful to understand Odoo as a set of enterprise management tools that can be enabled gradually: start with Sales, Purchase, Inventory, and Accounting, then extend to Website, POS, Manufacturing, Project, HR, approvals, and integrations as the business requires. What Odoo Can Do ---------------- After entering Odoo, users usually see the application home page. ![Odoo applications home](https://xp.odoohub.com.cn/en/basic/images/basic-cn-home.png) Common applications include: | Application | Main Usage | | --- | --- | | Sales | Quotations, sales orders, customer management, sales reports | | Purchase | Requests for quotation, purchase orders, vendor management | | Inventory | Receipts, deliveries, internal transfers, inventory counts, lots and serial numbers | | Invoicing / Accounting | Customer invoices, vendor bills, payments, bank reconciliation | | CRM | Leads, opportunities, sales follow-up | | POS | Store checkout, returns, session closing, membership and discounts | | Manufacturing | BOMs, manufacturing orders, work orders, material consumption | | Project | Tasks, timesheets, project delivery | | Website / eCommerce | Website, online shop, customer portal | | Employees | Employee records, time off, recruitment, payroll, and related HR functions | Companies do not need to install every application on the first day. For a first implementation, choose the smallest set of modules around the main business process. Three Keywords Of Odoo ---------------------- ### Modular Odoo features are organized by applications. Sales, Purchase, Inventory, and Accounting can be used independently, but they can also connect into a complete flow. For example, a trading company often uses this flow: Customer quotation -> Sales order -> Purchase replenishment -> Receipt -> Delivery -> Invoice -> Payment This flow uses Sales, Purchase, Inventory, and Accounting at the same time. ### Integrated Odoo modules are not isolated. One product record can be used by Sales, Purchase, Inventory, POS, and Manufacturing. One customer record can be used by quotations, invoices, the portal, and after-sales service. This is why basic data is so important. If basic data is clean, later modules will run smoothly. If basic data is messy, every module will suffer. ### Extensible Odoo supports configuration, third-party modules, and custom development. Many requirements can be solved with native settings. A smaller number of industry-specific differences can be handled through modules or custom development. For self-implementation, follow this order: 1. Use native Odoo to run the main process first; 2. Then identify which parts truly do not fit; 3. Finally consider custom development or integrations. Do not require Odoo to be exactly the same as the old system from the beginning. That usually drags the project into a large amount of low-value customization. Odoo Editions ------------- Odoo is usually divided into Community Edition and Enterprise Edition. | Edition | Characteristics | | --- | --- | | Community Edition | Open source and free, suitable for basic business and teams that can maintain it themselves | | Enterprise Edition | Official paid edition with more advanced features, mobile apps, official upgrade service, and enterprise applications | If the company needs complete accounting, mobile apps, Studio, Odoo.sh, official upgrade services, or certain enterprise applications, it will usually consider Enterprise Edition. Odoo pricing may change according to official policy. Before quoting, always refer to the official Odoo website or a formal contract. Odoo Deployment Options ----------------------- Common deployment options include: | Deployment | Suitable Scenario | | --- | --- | | Odoo Online | Official standard SaaS, no third-party modules, suitable for standardized requirements | | Odoo.sh | Official hosted development platform, suitable for Enterprise Edition with custom modules | | Self-hosted | Deployed on your own server, suitable for deep control, third-party modules, or localized operations | For customers in China, also consider network access, email, SMS, payments, logistics, ICP filing, server operations, and backup strategy. Deployment should not be evaluated only by software cost; long-term maintenance cost matters too. Where To Start The First Implementation --------------------------------------- Do not start the first implementation with "which modules should I install?" Start with the main business flow. | Company Type | Priority Flow | | --- | --- | | Trading and wholesale | Sales, Purchase, Inventory, Accounting | | Retail stores | POS, Products, Inventory, Payments | | Manufacturing | Products, BOMs, Inventory, Purchase, Manufacturing | | Service company | CRM, Sales, Project, Timesheets, Invoicing | | eCommerce | Products, Orders, Inventory, Logistics, Reconciliation | The goal of phase one should be a usable main process, not perfect details everywhere. Recommended Learning Sequence ----------------------------- Learn Odoo in this sequence: 1. Basic data: company, users, customers, products; 2. Sales process: quotations, orders, delivery, invoicing; 3. Purchase process: RFQs, purchase orders, receipts, vendor bills; 4. Inventory process: warehouses, locations, transfers, inventory counts; 5. Finance process: invoices, payments, bank reconciliation, reports; 6. Permissions and reports: role permissions, management reports, department statistics; 7. Phase-two optimization: automation, integrations, and industry customization. This manual follows the same logic: build the foundation first, run the business next, and optimize later. Common Mistakes --------------- * Installing every module on the first day; * Importing customer and product data before cleaning it; * Testing only with the administrator account, not with real role accounts; * Starting customization before the native process has been tested; * Confusing Chinese tax-control invoices with Odoo accounting invoices; * Keeping the old system and Odoo entering the same type of business for a long time; * Having no backup or go-live cutover plan. Odoo is flexible, but flexibility does not mean implementation order can be skipped. For beginners, the safest approach is to make a small scope work first, then expand gradually. About Us -------- This manual is organized and maintained by **Qingdao Ohm Network Technology**. We have focused on Odoo implementation and development for more than ten years, serving trading, retail, manufacturing, eCommerce, store, foreign trade, and service businesses in China and overseas. The goal of this manual is simple: help first-time Odoo users understand the system and test it by themselves, while also helping experienced customers evaluate Odoo's native capabilities, implementation boundaries, and customization options. Our implementation philosophy is: * Native first: if a standard Odoo feature can solve the problem, do not rush into customization; * Process first: make the main Sales, Purchase, Inventory, and Accounting flow work first; * Data first: clean customer, product, inventory, and accounting master data first; * Long-term maintenance: consider upgrades, operations, backups, and phase-two optimization; * High value for money: provide cost-effective Odoo solutions for SMEs while keeping delivery professional. If you only want to understand Odoo, follow this manual step by step. If you are already in a real project and encounter multi-company, complex inventory, domestic email, payment and logistics integrations, financial reporting definitions, permission isolation, or industry customization, treat those topics as key points for implementation evaluation. Odoo is flexible, but stable delivery requires understanding business, native features, and development boundaries. results matching "" =================== No results matching "" ====================== --- # Chapter 3 Master Data Preparation · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 3 Master Data Preparation](https://xp.odoohub.com.cn/en/) =================================================================== Chapter 3 Master Data Preparation ================================= Master data is one of the most underestimated parts of an Odoo implementation. Many customers think that "importing Excel" is data preparation. In reality, proper data preparation means organizing old system records, Excel files, and business rules in employees' heads into data that Odoo can use reliably. This chapter does not aim to move every historical record into Odoo at once. It helps customers prepare the data required for a phase-one go-live. Why Master Data Comes First --------------------------- Odoo Sales, Purchase, Inventory, and Accounting all depend on master data. If product data is wrong, quotations will be wrong, inventory quantities will be wrong, and costs may also be wrong. If customer records are duplicated, receivables, reconciliation, and invoices will be scattered across multiple customer records. When data is not clean, even a powerful system becomes hard to use. For self-implementation, spend time cleaning the data before entering a large number of business documents. Master Data Overview -------------------- Phase one should at least prepare the following data: | Data Type | Where It Is Used | Minimum Requirement | | --- | --- | --- | | Company data | Quotations, invoices, emails, reports | Company name, address, phone, email, tax number, bank accounts | | User data | Login, permissions, approvals, messages | Name, email, job role, required modules | | Customer data | Quotations, sales orders, invoices, payments | Customer name, contacts, phone, email, payment terms, invoice address, delivery address | | Vendor data | Purchase orders, vendor bills, payments | Vendor name, contacts, phone, email, payment terms | | Product data | Sales, purchase, inventory, manufacturing, POS | Product name, internal reference, unit, sales price, cost, category, barcode | | Warehouse data | Receipts, deliveries, transfers, inventory counts | Warehouse name, locations, opening stock, lot or serial rules | | Accounting data | Invoicing, payments, reconciliation, reports | Taxes, bank accounts, opening receivables, opening payables, bank balances | Do not try to complete every possible field from the beginning. Phase one should focus on the ability to sell, purchase, receive, deliver, invoice, and reconcile. Company Data ------------ Company data appears in many places, such as quotations, invoices, email signatures, and the customer portal. In Odoo, start from **Settings** to configure company and system information. ![Settings page](https://xp.odoohub.com.cn/en/implementation/images/implementation-settings.png) Recommended fields: | Field | Description | | --- | --- | | Company name | Official name displayed externally | | Address | Used on quotations, invoices, and delivery documents | | Phone and email | Used for customer contact and email templates | | Tax number | Used for finance and invoice-related information | | Bank accounts | May appear on quotations, invoices, or payment instructions | | Default currency | Determines default amounts for sales, purchase, and accounting | | Time zone and language | Affects dates, time, and user interface | If the company has multiple legal entities, do not configure a complex multi-company flow on the first day. First confirm whether multi-company accounting, inter-company purchase, or inter-company inventory is truly required. Users And Permissions --------------------- Do not let all employees share the administrator account. The administrator account should handle configuration and maintenance. Daily business should be performed with each employee's own account. Users can be managed from **Settings -> Users & Companies -> Users**. ![Users list](https://xp.odoohub.com.cn/en/implementation/images/implementation-users.png) Prepare users by role instead of assigning permissions casually person by person. | Role | Common Permission Scope | | --- | --- | | Sales | Customers, quotations, sales orders, sales reports | | Purchase | Vendors, requests for quotation, purchase orders, purchase reports | | Warehouse | Receipts, deliveries, internal transfers, inventory counts | | Finance | Invoices, payments, bank reconciliation, financial reports | | Store | POS checkout, returns, session closing | | Manager | Report viewing, approvals, key business review | | Administrator | Application installation, system settings, user permissions | The rule for permissions is "enough to work." If access is too small, employees cannot do their job. If access is too large, they may accidentally change prices, inventory, or accounting data. Customers And Vendors --------------------- In Odoo, customers, vendors, and contacts are all contact records. A company can be both a customer and a vendor. In Sales, open the customer list to view and maintain customers. ![Customers list](https://xp.odoohub.com.cn/en/implementation/images/implementation-customers.png) Do not import only names. At minimum, prepare: | Field | Why It Matters | | --- | --- | | Company name | Main party on quotations, orders, and invoices | | Contact person | Sales follow-up, email communication, delivery contact | | Phone and email | Notifications, quotation sending, reconciliation communication | | Invoice address | Customer invoice and accounting data | | Delivery address | Warehouse delivery and logistics data | | Payment terms | Affects receivables and payables due dates | | Salesperson or buyer owner | Supports later filtering and statistics | Deduplicate before import. Common duplication problems include: * The same customer has both a short name and a full legal name; * The same vendor is created separately by different departments; * A contact person is imported as a company; * Invoice address and delivery address are mixed in one record; * Customer phone or email is empty, so quotations or reconciliation emails cannot be sent later. If a customer has multiple delivery addresses, maintain them as different addresses under the same company in Odoo instead of creating duplicate customer records. Product Data ------------ Products are core data for Sales, Purchase, Inventory, Manufacturing, and POS. If product data is wrong, every later process will be affected. Products can be created from the Sales application's Products menu. ![Product form](https://xp.odoohub.com.cn/en/implementation/images/implementation-product-form.png) At minimum, confirm these fields: | Field | Description | | --- | --- | | Product name | Name displayed internally and externally | | Internal reference | Internal code used to identify the product | | Barcode | Commonly used for POS, warehouse scanning, and quick search | | Product type | Goods, Service, or Combo | | Can be sold | Whether the product appears on sales orders | | Can be purchased | Whether the product appears on purchase orders | | Sales price | Default price for quotations and sales orders | | Cost | Used for inventory valuation, margin, and cost analysis | | Taxes | Sales and purchase tax setup | | Product category | Commonly used for reports, accounting accounts, and inventory valuation | Pay special attention to product type. | Type | Suitable Scenario | Common Mistake | | --- | --- | --- | | Goods | Physical goods with stock, purchase, or delivery | Creating physical goods as services, causing inventory not to change | | Service | Consulting, installation, freight, labor service | Creating services as goods, causing meaningless warehouse deliveries | | Combo | Bundle selling scenarios | Overusing combo products without a confirmed business scenario | If a product has color, size, or specification variations, use variants. But in phase one, do not create excessive variants only to make the product list look complete. Too many variants increase maintenance cost. Warehouse And Inventory Data ---------------------------- Companies that manage physical inventory must prepare opening stock. Opening stock is not only a total number. It should explain which product is in which warehouse, in which location, and in what quantity. At minimum, prepare: | Field | Example | | --- | --- | | Product | A001 phone case | | Warehouse | Qingdao warehouse | | Location | Stock or a specific shelf | | Quantity | 100 | | Unit | pcs | | Lot or serial number | Required when traceability is needed | | Cost | Required when inventory valuation is needed | If the company does not manage detailed locations yet, start with one main stock location. Do not create many shelves, zones, or virtual locations at the beginning just to look detailed. Accounting Master Data ---------------------- Finance must participate in confirming accounting data. It should not be filled in only by business users or implementation staff. At minimum, confirm: | Data | Usage | | --- | --- | | Taxes | Sales invoices, vendor bills, tax calculation | | Bank accounts | Receipts, payments, bank reconciliation | | Payment terms | Receivables and payables due dates | | Opening receivables | Money customers still owe before go-live | | Opening payables | Money the company still owes vendors before go-live | | Opening bank balances | Reconciliation and cash flow reports | Note: In Odoo, an Invoice is an accounting customer invoice or vendor bill. It is not the same as a Chinese tax-control VAT invoice. If a domestic company needs e-invoice, Golden Tax, or third-party tax invoicing integration, evaluate it separately. Recommended Import Sequence --------------------------- Do not import data in a random order. Use this sequence: 1. Company data; 2. Users and permissions; 3. Customers, vendors, and contacts; 4. Product categories; 5. Products; 6. Warehouses and locations; 7. Pricelists and vendor prices; 8. Opening inventory; 9. Opening receivables and payables; 10. Unfinished sales orders and purchase orders. Import master data first, then business balances. Do not import orders first and later discover that customers, products, and taxes are wrong. Data Cleaning Checklist ----------------------- Use this table before import: | Check Item | Passing Standard | | --- | --- | | Customer deduplication | Each customer has only one main record | | Vendor deduplication | Each vendor has no duplicate records | | Product codes | Every key product has a unique code | | Unit consistency | Similar products use consistent units | | Price confirmation | Sales price, cost, and taxes have been spot-checked | | Address separation | Invoice and delivery addresses are not mixed | | Inventory quantity | Opening inventory has been physically counted and confirmed | | Accounting balances | Receivables, payables, and bank balances are confirmed by finance | If this table does not pass, do not rush to import data into the production database. Data Not Recommended For Phase One ---------------------------------- Do not move all historical data into Odoo in phase one. Temporarily avoid importing: * Customers that have been inactive for many years; * Old products that are no longer sold or purchased; * Historical quotations without future business value; * Historical invoices and payments that are already fully settled; * Custom fields from the old system that nobody maintains; * Inventory quantities with unclear sources; * Duplicate, incomplete, or unconfirmed data. More historical data does not always mean a better implementation. In phase one, it is more important that future business happens accurately in Odoo. Master Data Acceptance Standard ------------------------------- After master data preparation, the company should be able to reach these standards: | Item | Verification Method | | --- | --- | | Customers | Randomly check 10 customers for correct name, address, and contacts | | Vendors | Randomly check 10 vendors for correct payment terms and contact information | | Products | Randomly check 20 products for correct code, type, price, and taxes | | Inventory | Randomly check 10 products and compare Odoo quantity with physical count | | Users | Each role can log in with its own account | | Permissions | Employees can only use the functions required by their role | | Finance | Taxes, bank accounts, and opening balances are confirmed by finance | After master data passes this acceptance standard, move to the next chapter and rehearse the process in the test database. results matching "" =================== No results matching "" ====================== --- # Chapter 4 Contacts And Partners · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 4 Contacts And Partners](https://xp.odoohub.com.cn/en/) ================================================================= Chapter 4 Contacts And Partners =============================== Contacts are one of the most basic and most easily confused data types in Odoo. Customers, vendors, contacts, invoice addresses, and delivery addresses all belong to the contact system. Once contacts are understood clearly, Sales, Purchase, Inventory, Accounting, and Portal will be much easier to use. What Is A Contact ----------------- In Odoo, a contact can represent: * A customer company; * A vendor company; * A specific person; * An invoice address; * A delivery address; * A contact linked to an employee; * A contact linked to a portal user. So do not treat "Contacts" as only an address book. It is core master data used by Odoo business documents. Open The Customer List ---------------------- After installing the Sales application, open customers from **Sales -> Orders -> Customers**. ![Customers list](https://xp.odoohub.com.cn/en/basic/images/basic-cn-customers.png) If the Contacts application is installed, customers, vendors, and other contacts can also be maintained from the Contacts app. Create A Company Customer ------------------------- When creating a customer, choose **Individual** or **Company**. ![Contact form](https://xp.odoohub.com.cn/en/basic/images/basic-cn-contact-form.png) Common rules: | Type | Suitable Scenario | | --- | --- | | Company | Customer entity, vendor entity, invoicing party | | Individual | Contact person under a company, individual customer, business contact | If the customer is a company, create the company first, then add contact persons under that company. Do not create the purchaser, finance person, and owner of the same company as three independent customers. Customers And Vendors Are Not Two Separate Tables ------------------------------------------------- In Odoo, customers and vendors are both contacts. One company can be both a customer and a vendor. For example: * Company A buys products from us, so it is a customer; * Company A also provides maintenance services to us, so it is also a vendor. A contact used on sales orders behaves as a customer. A contact used on purchase orders or vendor bills behaves as a vendor. Do not create duplicate company records just to separate customer and vendor identities. Invoice Address And Delivery Address ------------------------------------ Many companies have this scenario: the customer headquarters pays the invoice, but goods are delivered to different warehouses or stores. The correct approach: 1. Create the customer company; 2. Add contacts or addresses under that company; 3. Set the address type as invoice address, delivery address, or other address; 4. Select the correct customer and delivery address on the sales order. Common address types: | Type | Usage | | --- | --- | | Contact | Contact person under the company | | Invoice Address | Invoicing, reconciliation, accounting contact | | Delivery Address | Warehouse delivery and logistics | | Other Address | Backup address, store, temporary address | Do not create separate customers for different delivery addresses of the same customer. Otherwise receivables and sales statistics will be split. Contact Fields -------------- At minimum, maintain these fields: | Field | Usage | | --- | --- | | Name | Customer or vendor name | | Email | Send quotations, orders, invoices, portal invitations | | Phone | Daily contact | | Address | Quotations, invoices, deliveries | | Tax ID | Finance and invoice data | | Website | Customer or vendor information | | Language | Language used in customer emails and portal content | | Tags | Customer classification, industry, level, channel | Email is very important. Without an email address, quotations, invoices, password resets, and portal invitations cannot be sent smoothly. Tags And Classification ----------------------- Contact tags are suitable for lightweight classification. Common tags: * VIP; * Wholesale customer; * Retail customer; * Agent; * Vendor; * Store customer; * Overseas customer; * Monthly settlement required; * Special pricing required. Tags are useful for filtering and statistics, but do not rely on tags for complex permissions. If data must be isolated by salesperson, department, or company, permission rules need further evaluation. Contact Deduplication --------------------- Duplicate contacts cause many problems: * Sales orders for the same customer are scattered under different records; * Receivable statistics become incomplete; * Customer portal data is inconsistent; * Finance cannot find the full history during reconciliation; * Email communication history is scattered. Deduplicate before importing customers. Focus on: | Check Item | Example | | --- | --- | | Duplicate names | Qingdao Ohm, Qingdao Ohm Network, Ohm Network Technology | | Duplicate phones | The same phone number appears under multiple customers | | Duplicate emails | The same email is linked to multiple customers | | Duplicate tax IDs | One tax ID corresponds to multiple companies | | Duplicate addresses | The same address is created as multiple delivery customers | If duplicates are found, merge or archive them first. Do not continue creating new orders on duplicate records. Relationship Between Users, Contacts, And Employees --------------------------------------------------- These three concepts are often mixed together. | Concept | Description | | --- | --- | | User | An account that can log in to Odoo | | Contact | Company, person, customer, vendor, address, and related partner data | | Employee | Employee profile in the HR application | A user usually links to one contact. After installing the Employees application, an employee can also be linked to a user. Simple distinction: * User answers "who can log in to the system"; * Contact answers "who is the customer, vendor, or address on business documents"; * Employee answers "who is this internal employee in HR records." Portal Users ------------ Portal users are also generated from contacts. After customers receive quotations, orders, or invoices, they can view related documents through the portal. Portal users are suitable for: * Customers viewing quotations; * Customers confirming orders; * Customers viewing invoices; * Customers viewing projects, tickets, or subscriptions; * Vendors viewing certain collaboration information. Portal users are not internal employee accounts. They cannot enter the backend to process business like sales, warehouse, or finance users. Address And Country ------------------- Odoo displays address formats according to country. For domestic Chinese customers, pay attention to: * Whether country/region is filled in; * Whether province, city, and detailed address are maintained separately; * Whether postal code is required; * Whether invoice address and delivery address are different; * Whether English addresses are needed for foreign trade documents. If the company needs China province-city-district linkage, maps, or logistics labels, localization modules or custom modules are usually required. Contact Acceptance Checklist ---------------------------- After contact data is prepared, use this standard: | Check Item | Passing Standard | | --- | --- | | Customer entity | One customer has only one main company record | | Contact persons | Purchaser, finance, receiving contact, and others are under the company | | Addresses | Invoice and delivery addresses are clearly separated | | Email and phone | Key contacts have email and phone | | Tax data | Customers needing invoices have complete tax information | | Tags | Customer classification is clear and tags are not abused | | Portal | Contacts needing portal access have correct email addresses | | Deduplication | No obvious duplicate customers or vendors | Contacts are the entry point for later business. Once contacts are clear, Sales, Purchase, Accounting, and Portal will run much more smoothly. Why Customers And Vendors Are Together -------------------------------------- Many new users ask why customers, vendors, and contacts are all in one place. This is the core of Odoo's contact design. Customers and vendors are both based on `res.partner`. Older versions once used fields to distinguish customers and vendors. ![Customer and vendor fields](https://xp.odoohub.com.cn/en/basic/images/9.png) In later versions, customer and vendor identities are more often reflected by business usage, customer ranking, vendor ranking, and similar fields. ![Customer and vendor ranking](https://xp.odoohub.com.cn/en/basic/images/10.png) This means one partner can be both a customer and a vendor. During implementation, do not create duplicate records just to make "one customer record and one vendor record." Doing so affects receivables, payables, and business history statistics. Use Menus And Filters To Separate Customers And Vendors ------------------------------------------------------- To help domestic customers quickly distinguish customers and vendors, menus or filters can provide separate entry points. ![Customer and vendor menu](https://xp.odoohub.com.cn/en/basic/images/8.png) This is essentially display and filtering optimization. It should not break Odoo's native contact model. Customer Codes, Aliases, And Quick Identification ------------------------------------------------- If the customer base is large, establish a customer code rule. In Odoo, the common field is reference or internal code. ![Customer code](https://xp.odoohub.com.cn/en/basic/images/30.png) Customer short names or aliases help sales, warehouse, and finance identify customers quickly. ![Customer alias](https://xp.odoohub.com.cn/en/basic/images/31.png) Professional suggestions: * Keep customer codes unique; * Do not force customer level, region, and salesperson all into the code; * Use codes for identification, and use tags or fields for classification; * Decide the coding rule before go-live and avoid frequent changes later. Company And Individual Relationship ----------------------------------- A customer can be a company or an individual. A company can have multiple contacts under it. ![Company and contact relationship](https://xp.odoohub.com.cn/en/basic/images/17.png) When an individual contact is selected on a business document, Odoo shows its relationship with the parent company. ![Sales order contact relationship](https://xp.odoohub.com.cn/en/basic/images/18.png) Technically, common fields include `is_company` and `company_type`. During development, pay attention to company and individual logic. Do not judge customer type only by name or tag. How Address Type Affects Business Documents ------------------------------------------- Contacts can represent not only the customer entity, but also invoice addresses, delivery addresses, and other addresses. ![Contact address type](https://xp.odoohub.com.cn/en/basic/images/19.png) Implementation should pay special attention to: * Whether the invoice address is used by finance; * Whether the delivery address is used by warehouse and logistics; * Whether a contact is only a communication person; * Whether private addresses involve employee and privacy permissions. Incorrect address type configuration directly affects sales orders, invoices, and delivery slips. results matching "" =================== No results matching "" ====================== --- # Chapter 3 Companies And Users · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 3 Companies And Users](https://xp.odoohub.com.cn/en/) =============================================================== Chapter 3 Companies And Users ============================= After creating a database, the first task is not to enter orders immediately. First configure the company, language, users, and permissions. These settings affect quotations, invoices, emails, reports, and daily employee operations. Open Settings ------------- In Odoo, company and user configuration usually starts from **Settings**. ![Settings page](https://xp.odoohub.com.cn/en/basic/images/basic-cn-settings.png) Common entries: * **General Settings**: language, company, document layout, units of measure, email, and related settings; * **Users & Companies**: users, companies, and multi-company access; * **Sales, Invoicing, and other app settings**: basic settings for each application. Configure company and users first, then configure Sales, Purchase, Inventory, and Accounting. Company Information ------------------- Company information appears on external documents such as quotations, sales orders, invoices, delivery slips, and email signatures. In **Settings -> General Settings -> Company**, use **Update Info** or **Manage Companies** to maintain company data. At minimum, fill in: | Field | Usage | | --- | --- | | Company name | Report header and document party | | Address | Quotations, invoices, delivery documents | | Phone and email | Customer contact and email templates | | Tax ID | Finance and invoice-related information | | Website | Displayed on external documents and customer information | | Bank accounts | May be used on invoices or payment instructions | | Company logo | Quotations, invoices, email templates | Do not casually create branches, stores, or warehouses as companies. In Odoo, a "company" usually represents a separate accounting entity. Stores are usually configured in POS or warehouses, and warehouses should be configured in Inventory. Document Layout --------------- Document layout controls the appearance of PDF files such as quotations and invoices. In Settings, look for **Document Layout** or **Configure Document Layout**. Choose a clean template first and confirm: * Is the logo clear? * Are the company name and address correct? * Is the footer contact information correct? * Are quotations and invoices suitable to send to customers after printing? * Are Chinese and English displayed correctly? Do not change document layout frequently before go-live. Quotations and invoices already sent to customers should remain consistent. Language And Time Zone ---------------------- Domestic Chinese customers usually need a Chinese interface. If there is a foreign trade team, English can also be enabled at the same time. Language settings affect: * User interface display; * System menu translations; * Email template language; * Customer portal display; * Some PDF report content. Each user can have their own language. The company default language is not the same as every user's language. It is possible to use English for foreign trade users and Chinese for domestic users in the same database. User Management --------------- A user is an account that can log in to Odoo. Open users from **Settings -> Users & Companies -> Users**. ![Users list](https://xp.odoohub.com.cn/en/basic/images/basic-cn-users.png) When creating a user, confirm at least: | Field | Description | | --- | --- | | Name | Employee display name | | Login | Usually an email address, but can also be an account such as admin | | Email | Used for notifications, password reset, and email sending | | Company | Especially important in multi-company environments | | Permissions | Determines which applications the user can access | | Language | Determines whether the user sees Chinese or English | Do not let all employees share the administrator account. The administrator account should only be used for configuration and troubleshooting. Daily business should use each employee's own account. User Types ---------- Common Odoo user types: | Type | Description | Typical Usage | | --- | --- | --- | | Internal User | Company employee who can access backend applications | Sales, purchase, warehouse, finance | | Portal User | External customer or vendor who can only access the portal | View quotations, orders, invoices, tickets | | Public User | Visitor who is not logged in | Website browsing and eCommerce browsing | During self-implementation, configure internal users first. Portal users are usually generated by customer invitation, website registration, or document sharing. Do not create a large number of portal users manually at the beginning. Permission Principles --------------------- Odoo permissions are not automatically determined by job title. They are controlled by application permissions and user groups. Simple examples: * A sales user can create and process their own sales business; * A sales administrator can see more sales configuration and reports; * An inventory user can receive, deliver, and count stock; * A finance user can handle invoices, payments, and reconciliation; * A system administrator can install applications and change system settings. Design permissions by role, not by temporary individual requests. | Role | Suggested Permissions | | --- | --- | | Sales | Sales user, customer data maintenance | | Sales manager | Sales administrator, sales reports and configuration | | Purchase | Purchase user, vendors and purchase orders | | Warehouse | Inventory user, receipts, deliveries, inventory counts | | Finance | Invoices, payments, bank reconciliation | | Owner / manager | Key report viewing and necessary approvals | | Administrator | System settings, module installation, permission maintenance | Do not grant too much access at once. Too much access can cause accidental deletion or incorrect changes. Too little access prevents employees from working. The right method is to grant what the role needs, then validate it with test processes. Multi-Company ------------- Odoo supports multi-company, but multi-company affects accounting, inventory, sales, purchase, permissions, and reports. Suitable scenarios: * There are multiple independent legal entities; * Separate financial statements are required; * There are internal transactions between companies; * Employees need to switch between companies to process business. Scenarios where multi-company is not recommended: * Only multiple stores; * Only multiple warehouses; * Only multiple departments; * Only wanting to classify customers. If the business only has stores or warehouses, prioritize POS, warehouses, locations, analytic accounts, or tags. Do not enable multi-company too early. Pre-Go-Live Check ----------------- After company and user configuration, use this checklist: | Check Item | Passing Standard | | --- | --- | | Company information | Name, address, phone, email, and tax ID are correct | | Document layout | Quotation and invoice print style is acceptable | | Language | Chinese users can see the Chinese interface | | Users | Every role has its own account | | Permissions | Employees can complete their own process and cannot operate beyond their role | | Administrator | Administrator account is only used for configuration and maintenance | | Multi-company | Whether multi-company is truly needed has been confirmed | After these settings are stable, contact and product configuration will be much safer. Where Company Information Is Used --------------------------------- Company data affects more than the interface. It also affects report headers, email templates, invoice parties, and multi-company business. Company settings entry: ![Company settings entry](https://xp.odoohub.com.cn/en/basic/images/33.png) Company basic information: ![Company information](https://xp.odoohub.com.cn/en/basic/images/34.png) ### Report Layout Odoo natively provides multiple document layout styles, such as Light, Boxed, Bold, and Striped. Customers can choose based on their brand style. ![Edit document layout](https://xp.odoohub.com.cn/en/basic/images/35.png) Document layout preview: ![Document layout preview](https://xp.odoohub.com.cn/en/basic/images/36.png) If the customer has detailed requirements for report font, size, header, or footer, native settings may not be enough. Report templates or extension modules may be required. ![Report font setting example](https://xp.odoohub.com.cn/en/basic/images/38.png) ### Accounting Localization Package Before enabling finance formally, confirm the accounting localization package. ![Accounting localization](https://xp.odoohub.com.cn/en/basic/images/37.png) Choosing an accounting package must be done carefully. After formal accounting transactions have been created, changing localization and the chart of accounts becomes difficult and usually requires evaluation by a consultant and finance team. Why Permissions Are Not A Simple Role ------------------------------------- For a small team, assigning application permissions by role is usually enough. But when customers ask for requirements such as "sales can only see their own customers," "employees cannot see cost price," or "stores must isolate data from each other," the implementation team must understand Odoo's permission structure. Odoo permissions are not one simple role field; they combine user type, application permissions, user groups, access rights, and record rules. In developer mode, you can see the user type and more detailed permission information. ![User type](https://xp.odoohub.com.cn/en/basic/images/23.png) Administrators can reset user passwords. ![Reset password entry](https://xp.odoohub.com.cn/en/basic/images/24.png) Reset password dialog: ![Reset password](https://xp.odoohub.com.cn/en/basic/images/25.png) Application permissions are usually displayed by module, such as Sales, Purchase, Inventory, and Accounting. ![Application permissions](https://xp.odoohub.com.cn/en/basic/images/26.png) Permission groups under the same application often have inheritance relationships. Higher-level groups usually include lower-level abilities. ![Permission inheritance](https://xp.odoohub.com.cn/en/basic/images/27.png) If some user groups do not inherit from each other, the interface may show multiple independent checkboxes. ![Independent groups](https://xp.odoohub.com.cn/en/basic/images/28.png) A user group itself consists of menus, views, access rights, record rules, and related settings. ![User group composition](https://xp.odoohub.com.cn/en/basic/images/29.png) For professional implementation, remember four permission layers: | Layer | Purpose | | --- | --- | | Model access rights | Control whether users can create, read, write, or delete a type of record | | Record rules | Control which records users can see, such as only their own customers | | Menu and view permissions | Control whether menu entries and views are visible | | Field permissions | Control whether specific fields are visible or editable, usually requiring development | If the customer asks for "sales can only see their own customers," "stores can only see their own orders," or "employees cannot see cost price," simple group selection may not fully solve the requirement. Permission rules or customization assessment is needed. Personalizing The Odoo Interface -------------------------------- After company, users, and permissions are stable, some customers may want to adjust interface details, such as hiding Odoo branding, changing the browser title, disabling quick create, or hiding help menus. These are interface personalization requirements, not core business processes. ![Personalization settings](https://xp.odoohub.com.cn/en/basic/images/39.png) In phase one, make sure the business process is correct before handling branding and interface details. Interface personalization can be a value-added service from the implementation partner, but it should not block go-live. results matching "" =================== No results matching "" ====================== --- # Chapter 2 Database Management · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 2 Database Management](https://xp.odoohub.com.cn/en/) =============================================================== Chapter 2 Database Management ============================= The database is the core of an Odoo system. Customers, products, orders, inventory, invoices, attachments, and system configuration are ultimately stored in the database and filestore. Customers implementing Odoo by themselves do not need to know database commands, but they must understand the test database, production database, backups, and restore operations. Otherwise, a wrong operation can be difficult to recover from. What Is An Odoo Database ------------------------ An Odoo database can be understood as an independent business environment or accounting set. A database usually contains: * Company information; * Users and permissions; * Customers, vendors, and products; * Sales, purchase, inventory, and accounting documents; * Emails, attachments, and images; * Installed modules and system configuration. Data does not automatically flow between databases. Orders in the test database do not enter production, and customers in production do not automatically appear in the test database. Test Database And Production Database ------------------------------------- During an Odoo implementation, at least distinguish the test database from the production database. | Database | Usage | Notes | | --- | --- | --- | | Test database | Test processes, configuration, imports, and user training | Can be cleaned and restarted repeatedly | | Production database | Records real business data | Do not delete, import, or test casually | | Backup restore database | Temporarily restore backups to inspect data | Do not let employees use it as production by mistake | The test database is for safe trial and error. The production database must be handled carefully. Do not test deletion, mass import, module uninstall, or permission experiments in production. Database Manager Entry ---------------------- For self-hosted Odoo, the database manager is usually available at: http://your-domain/web/database/manager The database manager usually supports: * Creating databases; * Backing up databases; * Restoring databases; * Duplicating databases; * Deleting databases. If this address returns 404 or cannot be accessed in production, the administrator may have disabled the database manager. This is a common security practice in production environments. How To Read The Database Manager -------------------------------- When you open the database manager, do not click buttons casually. Every operation on this page can affect the entire system. The following screenshots show a traditional self-hosted Odoo database management flow. Interfaces differ by version and deployment method, but the core actions are similar. When accessing a newly installed Odoo for the first time, the system may guide you to create a database. ![Create database](https://xp.odoohub.com.cn/en/basic/images/3.jpg) The database manager usually shows actions such as backup, duplicate, and delete. ![Database manager](https://xp.odoohub.com.cn/en/basic/images/4.jpg) Common backup formats include zip and dump. A zip backup usually includes attachments, while a dump focuses more on the database itself. ![Database backup format](https://xp.odoohub.com.cn/en/basic/images/5.jpg) If a third-party automatic backup module is used, it usually provides a backup configuration menu. ![Automatic backup module](https://xp.odoohub.com.cn/en/basic/images/6.jpg) Backup configuration usually includes database host, database name, port, backup format, backup directory, and automatic cleanup rules. ![Backup configuration](https://xp.odoohub.com.cn/en/basic/images/7.jpg) Automatic backup still depends on scheduled actions, so after configuration, check whether the scheduled action is enabled and running. ![Backup scheduled action](https://xp.odoohub.com.cn/en/basic/images/8.jpg) These screenshots are suitable for self-hosted or Community Edition operation scenarios. Odoo Online and Odoo.sh use different backup methods and should follow their platform capabilities. Master Password --------------- The database manager usually requires a master password. This is not the Odoo user password. It is used to create, back up, restore, duplicate, and delete databases. The master password is highly sensitive. Recommendations: * Keep it only with the system administrator or project owner; * Do not send it in WeChat groups, emails, or public documents; * Update it during employee handover; * Do not use the same password as the admin user; * Do not let normal employees know it in production. If the master password is leaked, someone may be able to download a database backup or delete a database. The risk is very high. Create A Database ----------------- Creating a database is usually used for: * New project initialization; * Building a test environment; * Demonstrating different business solutions; * Training employees. Common fields: | Field | Description | | --- | --- | | Database name | Use English letters, numbers, and underscores | | Email or login | Default administrator account | | Administrator password | Admin password for logging into Odoo | | Language | Chinese is commonly selected for domestic customers | | Country/region | Affects localization, taxes, and accounting settings | | Demo data | Useful for learning and testing, but not recommended for production | Do not load demo data into the production database. Demo data is for learning and testing, not real go-live. Back Up A Database ------------------ Backup is the lifeline of a production environment. Common backup formats: | Format | Description | Suitable Scenario | | --- | --- | --- | | zip | Contains database and attachment files | Most complete, suitable for small and medium databases | | dump | Mainly database content and may not include attachments | Suitable for technical handling of large databases | Odoo attachments, images, PDFs, and email attachments are usually stored in the filestore. If only the database is backed up but not the filestore, images and attachments may be missing after restore. At minimum, self-implementation customers should: * Back up once before production go-live; * Run automatic daily backups; * Back up before important mass imports; * Back up before major version upgrades; * Regularly download backups to a location outside the server. Restore A Database ------------------ Restoring a database means recovering a backup into an accessible Odoo database. Common use cases: * Recover after accidental deletion; * Copy production into a test database; * Migrate servers; * Build a validation environment before upgrade; * Investigate historical issues. Pay special attention to the database name during restore. Do not restore a backup onto the production database name by mistake, or production data may be overwritten. Recommended naming: Production database: company_prod Test database: company_test Backup restore database: company_restore_20260704 Clear names reduce operational mistakes. Duplicate A Database -------------------- Duplicating a database is often used to copy production into a test database. Suitable scenarios: * Validate a new process with real data; * Test a new module; * Test mass import; * Train employees; * Rehearse before an upgrade. After duplication: * Disable automatic email sending in the test database if possible, to avoid emailing real customers by mistake; * Give the test database an obvious name; * Do not connect the test database to real payment, logistics, or SMS services; * Do not treat orders in the test database as real business. Many incidents are not system problems; employees simply entered the wrong database. Delete A Database ----------------- Deleting a database is a high-risk operation. Before deletion, confirm: * A usable backup exists; * The database is a test database, not production; * The database name is confirmed; * No employees are using it; * The project owner has approved. If unsure, disable or rename the database first instead of deleting it directly. Automatic Backup ---------------- Production should not rely on manual backup. Manual backup will eventually be forgotten. Recommended backup strategy: | Item | Recommendation | | --- | --- | | Frequency | At least once per day | | Retention | Keep at least the last 7 to 30 days | | Location | Local server plus off-site backup | | Content | Database + filestore + configuration files + custom modules | | Verification | Perform restore drills regularly | A backup is not useful just because a file exists. It must be proven restorable. Odoo Online, Odoo.sh, And Self-Hosted ------------------------------------- Database management differs by deployment method. | Deployment | Database Management | | --- | --- | | Odoo Online | Hosted by Odoo officially; database manager access is restricted | | Odoo.sh | Backups, branches, and environments are managed through the Odoo.sh platform | | Self-hosted | The company or service provider handles backup, restore, and server operations | If the customer uses Odoo.sh or Odoo Online, do not copy the self-hosted database manager process. Use the backup and restore methods provided by the corresponding platform. Pre-Go-Live Database Check -------------------------- Before production go-live, confirm: | Check Item | Passing Standard | | --- | --- | | Test database | Process testing and employee training are complete | | Production database | No demo data or test documents remain | | Backup | One full backup has been completed | | Restore | Backup restore has been verified at least once | | Email | The test database will not email real customers by mistake | | Permission | Normal employees cannot access the database manager | | Naming | Test and production database names are clear | | Cutover | Old system stop-entry time has been confirmed | Database management looks technical, but it directly determines whether a project is safe. A system without reliable backup should not go live. Odoo Trial Database ------------------- To reduce the difficulty of trying Odoo and improve the customer trial experience, we provide an [Odoo SaaS](https://odoo.qingsolution.com/) trial environment. A separate Odoo trial database can be opened for the customer first. After receiving the access URL, the customer can directly enter the system and test modules such as Sales, Purchase, Inventory, Accounting, POS, and Website. This is suitable for: * Customers seeing Odoo for the first time and wanting to understand the interface; * Customers who have not decided on formal implementation and want a low-cost trial; * Letting sales, warehouse, and finance join process rehearsal first; * Testing what native Odoo can do with real business scenarios; * Preparing basic data such as customers, products, and inventory; * Comparing Community Edition, Enterprise Edition, self-hosting, and custom development. The value of a SaaS trial database is not to replace implementation, but to reduce trial-and-error cost. Customers can use it to answer key questions: | Question | What The Trial Database Helps Confirm | | --- | --- | | Is Odoo suitable for my business? | Whether the main process can run | | Which modules do I need? | Which modules are necessary in phase one and which can wait | | How much customization is needed? | Where native features differ from the business | | Can employees accept it? | Whether sales, warehouse, and finance can learn the operations | | Is data preparation difficult? | What is missing in customer, product, inventory, and finance data | The trial database is usually not recommended as a long-term production database. After the process, module scope, and data cleaning are confirmed, decide the formal deployment method: continue with a hosted solution, migrate to self-hosting, use Odoo.sh, or start a more complete enterprise implementation. From a data security perspective, the trial database should also be separated from production. During the trial phase, users can test, delete, import, and restart freely. Production must manage permissions, backups, email, payments, logistics, and financial data according to production standards. results matching "" =================== No results matching "" ====================== --- # Chapter 8 Sales And Inventory Delivery · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 8 Sales And Inventory Delivery](https://xp.odoohub.com.cn/en/) ======================================================================== Chapter 8 Sales And Inventory Delivery ====================================== After a sales order is confirmed, Odoo decides whether to create a delivery order according to product type, inventory routes, and warehouse configuration. For salespeople, what the customer bought, when it can ship, and whether enough stock exists are daily questions. For the warehouse, sales orders are an important source of outbound work. This chapter covers only sales-related delivery logic. More complete topics such as locations, routes, lots, inventory adjustments, and replenishment are explained in the Inventory section. Which Sales Affect Inventory ---------------------------- Not every sales order creates a delivery order. | Product Type | Usually Creates Delivery? | | --- | --- | | Physical product | Usually yes | | Service product | Usually no stock move | | Consumable / non-stock product | Depends on version and configuration; usually not strict stock control | | Rental product | Uses pickup and return flow | | Kit / bundle | Depends on BoM and routes | If no delivery order appears after confirmation, first check product type, whether Inventory is installed, whether the product is stock-managed, and whether routes are correct. How Delivery Orders Are Created ------------------------------- The standard stock sales flow is: Sales order confirmation -> Delivery order created -> Warehouse pick/pack/ship -> Validate delivery -> Delivered quantity updates Delivery states tell sales whether the order can ship. | State | Meaning | | --- | --- | | Waiting | Stock is insufficient or waiting for upstream operation | | Ready | Stock is available and delivery can be processed | | Done | Warehouse has completed outbound delivery | | Cancelled | Delivery order is cancelled | Sales users should not look only at the sales order state. They should also review the delivery order state. If the product requires stock delivery, a Delivery smart button appears after sales order confirmation. Sales users can open the related delivery order from that button to check warehouse progress. ![Sales order delivery button](https://xp.odoohub.com.cn/en/sale/images/18.png) Forecast Widget --------------- When Inventory is enabled, sales order lines may show inventory forecast information. It helps sales users understand whether stock is available now and whether future incoming or outgoing movements affect delivery. The forecast icon on the order line helps sales check product availability. This is very useful when judging whether the order can be delivered on time. ![Sales order stock forecast](https://xp.odoohub.com.cn/en/sale/images/17.png) Stock forecast often considers: * Current on-hand quantity. * Reserved quantity. * Confirmed sales demand. * Incoming purchases. * Manufacturing in progress. * Reordering rules. * Expected delivery date. Forecasted stock is not simply "how much is in the warehouse right now." It is a planning view that helps sales judge whether the customer promise can be met. Delivery Policy --------------- A sales order can define a delivery policy. The delivery policy may appear in the Other Info page or delivery-related area depending on version, but the business meaning is the same. ![Sales order delivery policy](https://xp.odoohub.com.cn/en/sale/images/3.jpg) | Policy | Meaning | Suitable Scenario | | --- | --- | --- | | As soon as possible | Ship available products first | Customer accepts partial delivery | | When all products are ready | Wait until everything is available | Customer requires one complete shipment | Delivery policy affects warehouse planning and customer experience. If the customer does not accept partial delivery, do not choose the "as soon as possible" policy casually. Commitment Date --------------- The sales order can record a commitment date. This date represents the company's promise to the customer. If the commitment date is earlier than the system's expected available date, Odoo shows a risk warning so sales users do not promise an impossible delivery date too easily. ![Delivery date risk warning](https://xp.odoohub.com.cn/en/sale/images/6.jpg) The commitment date works together with product sales lead time, stock availability, purchase plans, and manufacturing plans. Implementation advice: * Do not let sales promise dates that cannot be achieved. * Maintain realistic product lead times. * When stock is insufficient, check purchase and manufacturing plans. * For export or project orders, align the delivery date with contract terms. Delivered Quantity And Invoicing -------------------------------- Delivered quantity on sales order lines is very important. Order lines show ordered quantity, delivered quantity, and invoiced quantity. For products invoiced based on delivered quantities, delivered quantity directly affects invoiceable quantity. ![Delivered quantity on sales order](https://xp.odoohub.com.cn/en/sale/images/35.png) Delivered quantity affects: * Whether the customer has received goods. * Whether products invoiced on delivery can be invoiced. * Actual delivered quantity after returns. * Sales fulfillment reporting. If a product invoices delivered quantities, finance may not be able to invoice until the warehouse completes delivery. This is why sales, warehouse, and finance must work together. Buy To Order And Make To Order ------------------------------ Some products are not sold from stock. They are purchased or manufactured after customer order confirmation. Common routes: | Route | Meaning | | --- | --- | | Buy to Order | Sales confirmation triggers purchase demand | | Make to Order | Sales confirmation triggers manufacturing order | | Dropship | Vendor ships directly to the customer | | Reordering rules | Purchase or manufacturing suggestions are created when stock falls below rules | These topics cross Inventory, Purchase, and Manufacturing. Sales users should at least understand that order confirmation does not always mean stock is immediately available. Odoo may need to wait for purchase or production. How Returns Affect Delivered Quantity ------------------------------------- After a customer return, inventory return affects delivered quantity and later invoicing decisions. For example, a customer orders 10 units, receives 10 units, then returns 2 units. Delivered quantity and invoiceable quantity may need to be recalculated according to the return result. The after-sales chapter explains returns, refunds, and credit notes in more detail. For now, remember that returns are not handled by deleting the sales order. They are handled through reverse inventory operations. Implementation Advice --------------------- Recommended rollout for sales delivery: | Phase | Recommendation | | --- | --- | | Phase 1 | Use one stock product to test order confirmation, delivery, and invoicing | | Phase 2 | Test insufficient stock, partial delivery, and all-at-once delivery | | Phase 3 | Maintain product lead times and commitment dates | | Phase 4 | Introduce buy-to-order, make-to-order, dropship, and routes | | Phase 5 | Add returns, lots, serial numbers, and barcode processes | This chapter explained the relationship between sales orders and inventory delivery. The next chapter covers returns, refunds, and after-sales handling, showing how Odoo keeps business records when orders have problems. results matching "" =================== No results matching "" ====================== --- # Chapter 6 Import And Export · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 6 Import And Export](https://xp.odoohub.com.cn/en/) ============================================================= Chapter 6 Import And Export =========================== Odoo natively supports data import and export. Before go-live, companies usually need to bring customers, vendors, products, inventory, and opening accounting data into the system. After go-live, exported data is often used for checking, cleaning, and batch updates. This chapter explains how to use Odoo's native import and export functions and what risks to watch before and after import. Import is not copy and paste. Before importing, clean the data, prepare fields, test the import in a test database, and only then import into production after confirmation. Where Import And Export Are Located ----------------------------------- Odoo import and export functions usually appear in list views. Using the customer list as an example, open **Sales -> Orders -> Customers** to see the customer list. ![Customers list](https://xp.odoohub.com.cn/en/basic/images/basic-cn-import-export-customers-list.png) Click the action menu in the upper-left area to see functions such as **Import records** and **Export all**. ![Import and export menu](https://xp.odoohub.com.cn/en/basic/images/basic-cn-import-export-action-menu.png) Menus differ slightly by model. Customers, products, vendors, sales orders, purchase orders, inventory adjustments, and many other lists can usually be imported or exported in a similar way. What Data Is Suitable For Import -------------------------------- Suitable for import: * Customers; * Vendors; * Products; * Product categories; * Pricelists; * Vendor prices; * Opening inventory; * Opening receivables and payables; * Unfinished sales orders; * Unfinished purchase orders. Not recommended for phase one: * Invalid customers from many years ago; * Discontinued products; * Historical document lines that are already fully settled; * Inventory whose source cannot be confirmed; * Contacts with severe duplication; * Old system fields not confirmed by an owner. The goal of phase-one import is not to move the entire old system. It is to allow the new system to run stably from the go-live date. Preparation Before Import ------------------------- Do four things before importing: 1. Confirm the import scope; 2. Clean the Excel file; 3. Prepare a test import file; 4. Run the import in a test database first. Do not import into production for the first attempt. Even for customers and products, test in a test database first. Download Import Template ------------------------ After entering the import page, Odoo asks you to upload an Excel or CSV file. Some models provide import templates, such as the contact import template. ![Import page](https://xp.odoohub.com.cn/en/basic/images/basic-cn-import-page.png) Download the template before the first import. The template helps customers understand which fields Odoo expects and how field names should be written. The template is not mandatory. If Excel columns can be correctly matched to Odoo fields, a self-prepared file can also be used. For beginners, starting from the template is the safest. Import File Fields ------------------ Column names in the import file should match the meaning of Odoo fields. Common customer import fields: | Field | Example | | --- | --- | | Name | Qingdao Ohm Network Technology | | Company / Individual | Company | | Email | info@example.com | | Phone | 0532-xxxxxxx | | Mobile | 13800000000 | | Street | Some road, Shinan District | | City | Qingdao | | State | Shandong | | Country | China | | Tax ID | Unified social credit code | | Tags | VIP, wholesale customer | Common product import fields: | Field | Example | | --- | --- | | Product name | A001 phone case | | Internal reference | A001 | | Barcode | 697000000001 | | Product type | Goods | | Can be sold | Yes | | Can be purchased | Yes | | Sales price | 99 | | Cost | 45 | | Product category | Finished goods | | Sales tax | 13% | | Purchase tax | 13% | Confirm field meanings before import. Do not match fields casually just because names look similar. Upload File And Match Fields ---------------------------- After uploading Excel or CSV, Odoo enters the field mapping page. ![Import field mapping](https://xp.odoohub.com.cn/en/basic/images/basic-cn-import-field-mapping.png) The left side shows the import file and format settings. The right side shows the field mapping result. Check these areas carefully: | Area | What To Check | | --- | --- | | Header row | Whether the first row is used as column headers | | Encoding | Whether Chinese text is garbled; UTF-8 is usually used | | Separator | CSV files commonly use comma | | Fields | Whether Excel columns match the correct Odoo fields | | Comments | Whether there are errors, warnings, or unrecognized fields | In the example, `Name`, `Email`, and `Phone` in the file are matched to Odoo name, email, and phone fields. This mapping is correct. If a field is not matched automatically, select the corresponding field manually. Do not map uncertain columns to similar-looking fields just to make the import pass. Test First, Then Import ----------------------- After field mapping, click **Test** first. Do not click **Import** immediately. The test checks: * Whether fields exist; * Whether data format is correct; * Whether related records can be matched; * Whether required fields are missing; * Whether dates, numbers, and amounts can be parsed; * Whether obvious errors exist. After the test passes, click **Import**. If the test fails, modify the Excel file according to the error message and upload again. Before importing into production, back up first, especially for core data such as customers, products, inventory, and opening accounting balances. Product Import Example ---------------------- Products can also be imported and exported from the product list. ![Product list](https://xp.odoohub.com.cn/en/basic/images/basic-cn-import-export-products-list.png) Product import is more sensitive than customer import because products affect Sales, Purchase, Inventory, POS, Manufacturing, and Accounting. Before importing products, confirm: * Product type is goods, service, or combo; * Can be sold and can be purchased are correct; * Unit of measure is correct; * Sales tax and purchase tax are correct; * Product category has already been created; * Barcode is unique; * Internal reference is unique; * Cost and sales price have been confirmed. If products are imported incorrectly, later orders, inventory, and costs will be affected. Related Fields -------------- Related fields are the most common source of import errors. For example, product category, tax, and unit in product import, or country, state, and tags in customer import, are not just ordinary text. They must match existing records in Odoo. Recommended approach: * Create categories, taxes, units, and other basic records in Odoo first; * Use names in Excel that exactly match Odoo; * If unsure, export a sample from Odoo first; * Do not mix abbreviations, full names, and aliases in the same column. If related fields fail to match, import may fail or incorrect new records may be created. External ID ----------- External ID is a technical identifier used by Odoo to identify imported records. For beginners: * Without an external ID, import usually creates new records; * With an external ID matching an existing record, import can update that record; * External IDs are useful for repeatedly updating the same data set later. For a small first import, external IDs can be skipped. But if product prices or customer data will be updated through Excel over the long term, ask the implementation team to design external ID rules. Export Data ----------- Export is commonly used for: * Checking data in batches; * Cleaning data in Excel; * Backup and archive; * Batch modification followed by re-import; * Sharing data with other systems or people. After selecting records in a list, export from the action menu. **Export all** can also export data from the current model. ![Export selected records](https://xp.odoohub.com.cn/en/basic/images/basic-cn-import-export-list-selected.png) Pay attention to data permissions when exporting. Normal employees should not necessarily export all customer, price, or financial data. Export, Modify, And Import Back ------------------------------- A common workflow is: 1. Export products or customers from Odoo; 2. Modify prices, phone numbers, tags, or other fields in Excel; 3. Import back into Odoo to update records. This is convenient, but also risky. Notes: * Do not delete key identification fields; * Do not modify external IDs; * Do not change product coding rules casually; * Do not overwrite important existing fields with empty values; * Back up before import; * Test in the test database first. If updating prices, keep only the product identification field and price field. Do not import unrelated fields together. CSV, Excel, And Chinese Encoding -------------------------------- Odoo supports Excel and CSV. For domestic customers, Excel is recommended first because formatting is more stable. If using CSV: * Use UTF-8 encoding; * Separator is usually comma; * Chinese text should not be garbled; * Date format should be consistent; * Amounts should not mix Chinese symbols; * Numbers should not be automatically converted by Excel into scientific notation. If Chinese text becomes garbled after upload, check encoding settings first. Spot Check After Import ----------------------- After import, spot checks are mandatory. | Data | What To Check | | --- | --- | | Customers | Name, email, phone, address, tags | | Vendors | Name, payment terms, contact information | | Products | Code, type, price, cost, taxes | | Inventory | Product, warehouse, location, quantity | | Finance | Customer, vendor, amount, date | Spot checking is not only reading the import success message. Open real records and confirm that the business can use them. Common Errors ------------- | Error | Consequence | | --- | --- | | Duplicate customers | Receivables and sales history are scattered | | Duplicate products | Inventory and sales statistics become messy | | Wrong product type | Goods do not deduct stock, or services require delivery | | Wrong taxes | Invoice amount and tax amount are wrong | | Wrong unit | Inventory quantity and purchase quantity do not match | | Missing code | Later updates cannot match accurately | | Wrong date format | Document dates import incorrectly | | Empty value overwrite | Existing data is cleared | | Related field match failure | Categories, taxes, countries, and similar fields cannot link correctly | | Direct production import | Bad data enters production and rollback becomes difficult | Import failure is not scary. A successful import with wrong data is much worse. Import Acceptance Standard -------------------------- | Check Item | Passing Standard | | --- | --- | | Quantity | Imported quantity matches Excel quantity | | Fields | Key fields enter the correct position | | Relations | Categories, taxes, units, countries, and similar fields match correctly | | Deduplication | No obvious duplicate customers or products | | Spot check | Randomly opened records are correct | | Business test | Imported customers and products can create orders | | Permissions | Only suitable users can import and export sensitive data | | Backup | Backup or rollback plan exists before production import | Import and export are useful tools, but they amplify data quality. The cleaner the data, the smoother the import. The messier the data, the more likely import becomes a project incident. results matching "" =================== No results matching "" ====================== --- # Chapter 7 Taxes And Fiscal Positions · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 7 Taxes And Fiscal Positions](https://xp.odoohub.com.cn/en/) ====================================================================== Chapter 7 Taxes And Fiscal Positions ==================================== Taxes on sales order lines affect quotation totals, customer invoices, financial reports, and compliance declarations. Odoo natively handles sales tax through taxes, fiscal positions, and default taxes on products and customers. For customers, tax may look like only one field on an order line. For implementers, it connects countries, accounting accounts, invoices, and customer types. This chapter explains the sales tax and fiscal position concepts used most often in sales implementation. Industry-specific taxes such as excise duty are explained later as sales extensions. Where Sales Tax Comes From -------------------------- The tax on a sales order line usually comes from the product. | Source | Purpose | | --- | --- | | Product sales tax | Default tax used on sales orders and customer invoices | | Customer fiscal position | Maps taxes according to customer region or tax identity | | Company localization package | Preloads taxes when the database is created for a country | | Manual adjustment | Used only for special business cases | Do not let salespeople change taxes casually. Taxes should be confirmed by finance; sales users should normally only use them. Tax Configuration ----------------- Taxes are usually maintained under **Accounting -> Configuration -> Taxes**. The example below shows a tax configuration. A tax is not only a percentage. It can also include calculation method, scope, accounting impact, and display behavior. ![Tax configuration](https://xp.odoohub.com.cn/en/sale/images/82.png) Taxes affect: * Sales order tax amount. * Customer invoice tax amount. * Journal entries. * Tax reports. * Tax-included or tax-excluded display. If the company installed a localization package, Odoo creates many common taxes automatically. Do not delete native taxes casually. Archive or create new taxes when needed. Product Taxes ------------- Products usually have sales taxes and purchase taxes. | Field | Purpose | | --- | --- | | Sales Taxes | Used on sales orders and customer invoices | | Purchase Taxes | Used on purchase orders and vendor bills | If product taxes are wrong, both quotation and invoice amounts will be wrong. Before products go live, finance should help confirm taxes for key products. Do not mix sales taxes and purchase taxes. Sales taxes are for customer quotations and invoices. Purchase taxes are for vendor bills. Many companies focus only on sales price during product import and ignore taxes, then discover that invoice taxes need rework later. For many products, organize taxes by category first: * Standard tax products. * Tax-exempt products. * Export products. * Service products. * Special tax products. When product volume is large, do not check everything manually one by one. Export products, review taxes in bulk, and import corrections. Fiscal Positions ---------------- Fiscal positions map taxes and accounts according to customer, country, or tax identity. The example below shows a fiscal position. It can map the default taxes on an order to another set of taxes for a particular customer or scenario. ![Fiscal position](https://xp.odoohub.com.cn/en/sale/images/81.png) Examples: * Domestic customers use local standard tax. * Export customers use 0% tax. * EU customers follow VAT rules. * Tax-exempt customers map to exempt taxes. * Customers in different countries use different accounts. Fiscal positions can be set on the customer record or matched automatically by rules. After a fiscal position is selected on the sales order, order line taxes are replaced according to the mapping. Taxes appear on sales order lines. Salespeople do not need to understand every accounting entry, but they must know that taxes come from products and fiscal positions and should not be manually changed without reason. ![Taxes on sales order](https://xp.odoohub.com.cn/en/sale/images/17.png) What Fiscal Positions Are Good For ---------------------------------- Fiscal positions solve the problem: "the same product is sold to different customers, but tax treatment is different." | Scenario | Example | | --- | --- | | Export sales | Map local standard tax to export 0% tax | | Cross-region sales | Switch tax by customer country | | Tax-exempt customer | Map standard tax to exempt tax | | Special industry | Use special tax for selected products or customers | | Account mapping | Post revenue or tax to different accounts | Do not duplicate products for every tax scenario. Prefer fiscal positions to map taxes. For example, the same product may use standard tax for domestic sales and 0% tax for export sales. The product itself should not be duplicated into "domestic version" and "export version"; use customer or order fiscal position to map the tax. Fiscal positions can also be combined with customer data. For frequent export customers, set the default fiscal position on the customer. For occasional business, choose the fiscal position manually on the order. Tax-Included And Tax-Excluded Prices ------------------------------------ Sales quotations must make it clear whether the price includes tax. | Scenario | Common Practice | | --- | --- | | B2B sales | Tax-excluded unit price plus tax amount | | Retail | Tax-included price | | Cross-border | Often tax-excluded or 0% tax | | Stores / POS | Often tax-included price | Tax-included pricing affects what customers see and how pricelists are designed. Sales and finance must agree on one quotation basis. A common misunderstanding is: sales says "this product is 100"; finance understands it as 100 before tax; the customer understands it as 100 including tax. The system cannot explain business policy for the team. Align the external quotation basis before go-live. If multi-currency and pricelists are used, also confirm whether pricelist amounts include tax, whether the sales order PDF clearly displays tax, and whether the invoice matches the quotation. Taxes And Invoices ------------------ Taxes on the sales order flow into the customer invoice. After the invoice is confirmed, accounting impact is generated. If a confirmed invoice has the wrong tax, correcting only the sales order is not enough. Finance usually needs to follow proper correction rules, credit notes, cancellation, or re-invoicing depending on local compliance requirements. Before confirming the order and invoice, check: * Customer tax data is correct. * Product taxes are correct. * Fiscal position is correct. * Tax-included or tax-excluded price basis is correct. If a tax mistake has already entered a formal invoice, it usually cannot be fixed by simple deletion or direct edit. Finance must decide whether to reverse, reissue, cancel, or create a credit note according to local rules. This is why tax review at sales order stage matters. Implementation Advice --------------------- Recommended sales tax implementation sequence: | Phase | Recommendation | | --- | --- | | Phase 1 | Use taxes created by the localization package; do not delete them casually | | Phase 2 | Let finance confirm product sales and purchase taxes | | Phase 3 | Design fiscal positions for export, exemption, and cross-region customers | | Phase 4 | Test quotation, invoice, tax amount, and tax reports together | | Phase 5 | Evaluate special taxes such as excise duty, environmental tax, or alcohol tax separately | This chapter explained the relationship between sales taxes, product taxes, fiscal positions, and tax-included pricing. The next chapter explains sales and inventory delivery, including how sales order confirmation affects stock, delivery, and invoiceable quantities. results matching "" =================== No results matching "" ====================== --- # Chapter 11 Excise Duty · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 11 Excise Duty](https://xp.odoohub.com.cn/en/) ======================================================== Chapter 11 Excise Duty ====================== Excise Duty is an indirect tax charged on specific consumer goods such as tobacco, alcohol, fuel, and luxury products, often at production or import stage. In different countries, it may also be called Excise Tax or, informally, Sin Tax when the policy is intended to discourage consumption such as tobacco, alcohol, or gambling. | English Name | Meaning | Notes | | --- | --- | --- | | Excise Duty | Excise tax | Common official term | | Excise Tax | Specific goods tax | Common in the United States | | Sin Tax | Informal policy term | Often used for tobacco, alcohol, gambling, and similar goods | Calculation Logic ----------------- Excise duty is often charged according to a product measurement basis. For alcohol, it may depend on alcohol content. For tobacco, it may depend on pieces or weight. The exact standard depends on local tax rules. Unlike ordinary VAT, excise duty is often not simply sales amount multiplied by a percentage. It may be calculated by milliliter, liter, piece, kilogram, alcohol percentage, nicotine content, engine displacement, or other business indicators. Before implementing excise duty, clarify the tax basis first. Common design questions: | Question | Example | | --- | --- | | Tax basis | Amount, quantity, volume, weight, or concentration | | Rate tiers | Different rates for low and high concentration | | VAT interaction | Whether excise duty is included in the VAT tax base | | Product fields | Whether volume, concentration, or grade must be stored | | Reporting basis | Whether excise duty amount must be reported separately | For a clear example, consider Italy's e-liquid duty based on nicotine content. Key rate example: * E-liquid at or below 15 mg/ml, including nicotine-free products: EUR 0.15 per ml. * E-liquid above 15 mg/ml: EUR 0.20 per ml. Calculation: 1. Duty is calculated by bottle volume: duty = rate per ml x bottle volume in ml. 2. The rate is determined by whether the bottle exceeds 15 mg/ml nicotine. 3. For retail price calculation, the duty is often added to the price base first, then VAT is applied according to local rules. The examples below use 22% VAT only for demonstration. Always verify official announcements or a tax advisor, because rules differ by product and can change over time. ### Example 1: 10 ml Bottle, Low Concentration Configuration: 10 ml, 6 mg/ml. Rate: EUR 0.15 per ml. Calculation: * Excise duty = EUR 0.15 x 10 = EUR 1.50 per bottle. * If net factory price is EUR 4.00: * Price before VAT = EUR 4.00 + EUR 1.50 = EUR 5.50. * VAT = 22% x EUR 5.50 = EUR 1.21. * Final price is approximately EUR 6.71 before retailer markup. ### Example 2: 10 ml Bottle, High Concentration Configuration: 10 ml, 20 mg/ml. Rate: EUR 0.20 per ml. Calculation: * Excise duty = EUR 0.20 x 10 = EUR 2.00 per bottle. * If net factory price is EUR 4.00: * Price before VAT = EUR 4.00 + EUR 2.00 = EUR 6.00. * VAT = 22% x EUR 6.00 = EUR 1.32. * Final price is approximately EUR 7.32. Implementing In Odoo -------------------- Now use a low-concentration e-liquid product, Dinner Lady, as an example to show excise duty calculation in Odoo. Scenarios like excise duty usually cannot be solved only by a standard tax percentage. Product records often need additional attributes such as volume, concentration, whether it is a controlled consumer product, and other information that participates in tax calculation. ### Define Excise Duty Because the measurement basis differs from ordinary percentage taxes, the tax must be identified as excise-related on top of standard tax configuration. ![Excise tax definition](https://xp.odoohub.com.cn/en/sale/images/EXCISE1.png) In this example, the "Is PLI" option identifies e-liquid products. ### Create The Product Next, create a product named Lemon Tart 10 ml. ![Excise product](https://xp.odoohub.com.cn/en/sale/images/EXCISE2.png) This product has nicotine concentration of 6 mg/ml, e-liquid volume of 10 ml, and sales price of EUR 4. ### Excise Duty Calculation Create a sales order and calculate the excise duty using Italy's common 22% VAT rate. ![Excise calculation on sales order](https://xp.odoohub.com.cn/en/sale/images/EXCISE3.png) The result in Odoo matches the theoretical calculation. The key point is that the taxable quantity for excise duty is the e-liquid content, not simply the sales order quantity. For this kind of tax, do not let salespeople manually change tax amounts. A more stable approach is to let product data, tax configuration, and calculation logic determine the tax amount together. Sales users should only choose the correct product and quantity. If the customer's industry involves alcohol, tobacco, fuel, e-cigarettes, luxury goods, or other special taxes, ask finance or a tax advisor to confirm rules before sales go-live. Then decide whether the solution should use native taxes, fiscal positions, or custom tax calculation. This chapter explained how an industry-specific tax such as excise duty extends standard sales tax logic. The next chapter covers secondary units, solving the need to express auxiliary quantities in sales, purchase, and inventory. results matching "" =================== No results matching "" ====================== --- # Chapter 10 Rental · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 10 Rental](https://xp.odoohub.com.cn/en/) =================================================== Chapter 10 Rental ================= Odoo Rental brings "renting products by time" into the sales system. A rental order is still built around the sales order concept, but it adds rental period, pickup, return, rental price, and rental status information. Rental is suitable for equipment, tools, vehicles, clothing, photography gear, event supplies, and other products that must be picked up and returned. This chapter first explains the native Odoo rental flow, then helps readers decide whether complex rental scenarios need additional solution design. Rental Business Flow -------------------- The biggest difference between rental and normal sales is ownership. In a normal sale, product ownership usually transfers to the customer. In rental, the product is lent out for a period and then returns to the company. The system must record not only customer and rental fee, but also start time, end time, pickup status, and return status. A standard rental flow can be understood as: Create rental product -> Create rental order -> Confirm pickup -> Product moves to rental location -> Customer returns -> Product returns to warehouse -> Invoice ### 1\. Define A Rental Product First, define a rental product and set rental prices. In this example, the A4L product is marked as rentable. ![Rentable product](https://xp.odoohub.com.cn/en/sale/images/38.png) Then set rental prices in the rental tab. ![Rental pricing](https://xp.odoohub.com.cn/en/sale/images/39.png) ### 2\. Create A Rental Order After installing the Rental app, a Rental menu appears. Open it to create rental orders. ![Rental app](https://xp.odoohub.com.cn/en/sale/images/36.png) For example, rent an A4L to a customer for one day at a rental fee of 5,000. Create the order with the rental period and rental product. ![Rental order](https://xp.odoohub.com.cn/en/sale/images/37.png) After selecting the rental product, Odoo opens a wizard to enter the rental duration. ![Rental period wizard](https://xp.odoohub.com.cn/en/sale/images/40.png) The order unit price is calculated according to rental price and rental duration. Rental price design should confirm the billing unit in advance: hourly, daily, weekly, monthly, or different prices for different periods. Customers must understand rental period and price at quotation stage, otherwise disputes may appear at return time. ### 3\. Pick Up Products After confirming the order, click Pick Up to officially rent the product to the customer. Odoo creates and completes the rental stock transfer. ![Rental pickup](https://xp.odoohub.com.cn/en/sale/images/41.png) ![Rental transfer](https://xp.odoohub.com.cn/en/sale/images/42.png) Viewing product stock moves shows that A4L has been moved to the Rental location. ![Rental stock move](https://xp.odoohub.com.cn/en/sale/images/43.png) The Rental location is an internal location rather than a customer location. This means product ownership still belongs to the company; the product is only in rented status. This design matters. The rented product leaves the warehouse, but it is not sold to the customer. It should not move to a customer location like a normal sale and complete ownership transfer. The rental location helps the company distinguish "in warehouse", "rented out", and "returned" statuses. ### 4\. Return Products After the customer returns the product, click Return on the rental order. Odoo opens a return wizard. ![Rental return wizard](https://xp.odoohub.com.cn/en/sale/images/44.png) After confirming the return, the order state changes to returned. ![Returned rental order](https://xp.odoohub.com.cn/en/sale/images/45.png) ### 5\. Invoice After the rental order is completed, create the customer invoice. Rental invoicing still follows the sales order to customer invoice flow. ![Rental invoice](https://xp.odoohub.com.cn/en/sale/images/46.png) Rental invoicing can follow company rules: * Collect payment before pickup. * Settle by actual rental duration after return. * Invoice monthly. * Separate rental fee and deposit. * Invoice damage compensation separately. Native Odoo Rental is suitable for standard pickup, return, and invoicing. If deposits, late fees, compensation, renewals, repairs, and contract management are complex, design them on top of the native flow. Implementation Advice --------------------- Native Odoo Rental fits standard rental, return, and invoicing scenarios. If customers need deposits, overdue penalties, damage compensation, rental approvals, complex inventory statuses, equipment maintenance, or contract renewals, further process design is required. Do not start rental implementation with heavy customization. Use one or two rental products to run pickup, return, invoicing, and inventory locations first. Then evaluate whether deposits, contracts, repair, or industry enhancements are needed. This chapter explained rental products, rental orders, pickup, return, and invoicing. The next chapter moves into excise duty and shows how specific industry taxes can extend standard sales tax logic. results matching "" =================== No results matching "" ====================== --- # Chapter 6 Pricelists, Discounts, And Multi-Currency · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 6 Pricelists, Discounts, And Multi-Currency](https://xp.odoohub.com.cn/en/) ===================================================================================== Chapter 6 Pricelists, Discounts, And Multi-Currency =================================================== Pricing is one of the most sensitive parts of sales management. Customer levels, sales channels, currencies, quantities, and promotions can all affect the final quotation. Odoo natively uses pricelists, discounts, payment terms, and currency configuration to help companies move pricing rules out of manual spreadsheets and into the system. This chapter focuses on how to understand Odoo's native pricing system. The best practice is still to use native pricelists and discounts first, design the rules clearly, and only consider custom price calculation or an external pricing engine when native rules cannot express the business. Where The Price Comes From -------------------------- The unit price on a sales order line usually comes from several factors. | Factor | Explanation | | --- | --- | | Product sales price | The base price on the product record | | Pricelist | Calculates price by customer, currency, quantity, time, product, or other rules | | Discount | Discount percentage on the order line | | Tax | Determines tax-included or tax-excluded amount and tax value | | Currency | Controls quotation currency and exchange rate | | Customer conditions | Customer default pricelist, payment terms, and fiscal position | The final price seen by sales is not always just the product sales price. During implementation, explain the price source clearly; otherwise users may feel that "the system price jumps around." Enable Pricelists ----------------- Pricelists can be enabled under **Sales -> Configuration -> Settings -> Pricing**. After enabling them, users can select a pricelist on the sales order. ![Enable pricelists](https://xp.odoohub.com.cn/en/sale/images/48.png) Pricelists are suitable for: * VIP customer prices. * Wholesale prices. * Distributor prices. * Promotional prices. * Tiered pricing. * Multi-currency sales. * Product category pricing. * Quantity-based or date-based pricing. Do not copy a full product price list for every customer. Prefer pricelist rules to express price differences. Change The Pricelist On A Sales Order ------------------------------------- After changing the pricelist on a sales order, Odoo usually prompts the user to update existing order line prices. For example, the public price of an A4L is 250,000. ![Product public price](https://xp.odoohub.com.cn/en/sale/images/49.png) Then a VIP pricelist is configured with a 20% discount. ![VIP pricelist](https://xp.odoohub.com.cn/en/sale/images/50.png) After switching the quotation to the VIP pricelist, Odoo shows an Update Prices button. ![Update prices button](https://xp.odoohub.com.cn/en/sale/images/51.png) After confirming the update, order line prices are recalculated according to the new pricelist. ![Recalculated order line](https://xp.odoohub.com.cn/en/sale/images/52.png) ![Price after applying VIP pricelist](https://xp.odoohub.com.cn/en/sale/images/53.png) Use this action carefully. If sales already manually adjusted some order line prices, switching pricelists may overwrite those manual prices. Pricelist Rules --------------- Common pricelist rules include: | Rule | Example | | --- | --- | | Fixed price | A specific product is fixed at 200 for VIP customers | | Percentage discount | All products are sold at 20% off | | Cost-based markup | Cost price plus 20% | | Based on another pricelist | Discount from public price | | Minimum quantity | Buy at least 10 units to get wholesale price | | Validity dates | Promotional price valid only this month | | Product category | Apply a category-wide discount | The more complex the rules become, the more important priority design is. Otherwise sales users cannot explain why a product gets its final price. Discounts --------- A discount is an order-line-level price adjustment. Discounts are suitable for: * Temporary sales concessions. * Negotiated discount for a single order. * Clearance discount. * Customer complaint compensation. * Manually handled special price. Pricelists are better for: * Long-term customer level pricing. * Wholesale rules. * Channel pricing. * Multi-currency pricing. * Time-limited promotions. * Reusable standard rules. In simple terms: use pricelists for long-term rules, and use discounts for temporary concessions. Multi-Currency Sales -------------------- Odoo can use pricelists to manage prices in different currencies. Multi-currency sales usually also require the Accounting app to support currencies and exchange rates. Common scenarios include: * Export orders in USD, EUR, or AUD. * Customers in different countries seeing different quotation currencies. * The same product having different market prices. * Exchange rate changes affecting quotation validity. During implementation, confirm: | Question | Explanation | | --- | --- | | Quotation currency | Which currency does the customer see? | | Exchange rate source | Manual maintenance or automatic update? | | Invoice currency | Is it the same as quotation currency? | | Payment currency | Will foreign exchange gain or loss exist? | | Price validity | How long is a quotation valid when exchange rates fluctuate? | Multi-currency is not just changing a symbol. It affects quotation, invoicing, payment, and foreign exchange accounting. Tax-Excluded And Tax-Included Prices ------------------------------------ Pricelists and taxes also affect whether the customer sees tax-excluded or tax-included prices. In B2B scenarios, quotations often use tax-excluded unit prices and show tax separately. In retail or some regions, customers are more used to tax-included prices. During implementation, sales and finance should confirm: * Whether product prices are tax-included or tax-excluded. * How quotation PDFs show tax amounts. * Whether invoice tax rates match sales order tax rates. * Whether different countries or customer types use fiscal positions to map different taxes. If tax-included and tax-excluded logic is not explained clearly, customers may think the quotation and invoice amounts do not match. When Custom Pricing Is Needed ----------------------------- Native pricelists handle many common rules, but the following cases may require customization: * Price depends on real-time cost, stock, exchange rate, or an external system. * Complex formulas combine length, area, weight, and processing method. * Customer contract price must be approved before taking effect. * Pricing rules connect with rebates, commissions, or budgets. * Industry quotation requires configurator or CPQ capability. * Prices must sync from e-commerce platforms or third-party pricing systems. Before customization, ask whether the rule can be expressed through pricelists, discounts, product attributes, secondary units, or quotation templates. If the native system can express it, do not start with complex code. Implementation Advice --------------------- Design pricing in this order: 1. Confirm the product base sales price. 2. Confirm whether customer level pricing is needed. 3. Confirm whether multi-currency pricing is needed. 4. Confirm quantity tiers and promotion validity dates. 5. Finally handle special customers, special formulas, and industry quotation logic. Do not import every historical special price in the first phase. Start with price rules that are still active, explainable, and executable by the sales team. This chapter explained the basic logic of pricelists, discounts, multi-currency, and tax-included or tax-excluded prices. The next chapter continues with taxes and fiscal positions, explaining how Odoo automatically matches tax rules for different regions, customers, and products. results matching "" =================== No results matching "" ====================== --- # Chapter 8 Messages And Discuss · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 8 Messages And Discuss](https://xp.odoohub.com.cn/en/) ================================================================ Chapter 8 Messages And Discuss ============================== Odoo natively embeds communication into business documents. Sales quotations, customer invoices, project tasks, purchase orders, and contacts often have a message area on the right side, commonly called the chatter. It can send messages, record internal notes, schedule activities, manage attachments, track followers, and keep key records from document creation to completion. For companies, the chatter is not just a chat box. It is an entry point for business traceability and collaboration. It reduces information loss caused by WeChat groups, personal email, and verbal handover, and helps new colleagues quickly understand what happened on a document. This chapter explains how to use Odoo chatter, which content may notify customers, which content should remain internal, and how domestic projects can extend notifications with WeCom, Lark, and similar tools. Where The Chatter Is -------------------- On forms such as quotations, sales orders, customers, invoices, and project tasks, the chatter usually appears on the right side. ![Quotation chatter](https://xp.odoohub.com.cn/en/basic/images/basic-cn-chatter-quotation.png) Common buttons and areas: | Feature | Usage | | --- | --- | | Send Message | Send formal messages to customers, followers, or selected recipients | | Log Note | Record internal notes, usually not sent to customers | | Activities | Schedule calls, emails, meetings, to-dos, and follow-up actions | | Attachments | Upload, view, and manage attachments for the current record | | Followers | Control who follows this record and who may receive notifications | | History | View changes, communication, attachments, and activities | Different modules may display the chatter differently, but the core logic is the same. If a document has chatter, communication can be stored around that document. What Problems The Chatter Solves -------------------------------- Without chatter, internal communication often looks like this: Customer requirements are in WeChat Quotation attachments are in email Contract versions are on someone's computer Collection records are in finance Excel After-sales issues are in group chat When the owner asks for progress, everyone searches records again The value of Odoo chatter is to bring scattered information back to the business object. For example, a sales order can record: * When the quotation was sent to the customer; * Whether the customer replied by email; * Whether sales followed up by phone; * Whether internal notes mention special delivery requirements; * Whether finance uploaded a payment proof; * Whether warehouse saw delivery instructions; * Which employees followed the order; * Whether the customer viewed the document through the portal. From a management perspective, the document is no longer only fields and status. It has context. Difference Between Send Message And Log Note -------------------------------------------- This is the most important distinction for employee training. | Type | May Be External? | Typical Usage | | --- | --- | --- | | Send Message | May be sent to customers, followers, or selected recipients | Explain quotations, send order updates, answer customer questions | | Log Note | Usually internal only | Internal handover, risk notes, phone records, processing notes | Simple rule: * Use **Send Message** when the customer should see it; * Use **Log Note** for internal traceability; * If unsure whether the customer can see it, do not write sensitive content first. Examples: | Scenario | Recommended Method | | --- | --- | | "The quotation has been updated. Please confirm the attachment." | Send Message | | "Customer verbally requested delivery before Friday. Warehouse please note." | Log Note | | "This customer pays slowly. Require advance payment next time." | Log Note, with careful wording and permission awareness | | "The invoice has been issued. Please check." | Send Message | During implementation, explain this clearly. Many first-time users worry about whether internal comments will be visible to customers. This should be tested with email configuration, followers, message type, and recipients, not guessed. Relationship Between Email And Chatter -------------------------------------- The previous chapter covered email configuration. Here we connect email with chatter. If email is configured correctly, messages sent from a document are recorded in the chatter. Customer replies may also return to the same document. Sales order chatter -> Send quotation email -> Customer mailbox Customer reply -> Incoming server / catch-all -> Odoo mail routing -> Sales order chatter This chain depends on: * Outgoing mail server can send properly; * Incoming server, catch-all, or mail gateway can receive replies; * Reply address is not blocked by the email provider; * Email headers can match the original document; * Followers and recipients are set properly. If mail configuration is incomplete, chatter can still record internal notes, activities, and attachments, but customer replies may not automatically return to Odoo. For self-implementation, internal collaboration can start first, then customer reply archiving can be improved gradually. Check Recipients Before Sending ------------------------------- Odoo uses a mail composer wizard in many business objects. ![Mail composer](https://xp.odoohub.com.cn/en/basic/images/44.png) The wizard usually includes: * Recipients; * Subject; * Body; * Template; * Attachments; * Send button. The composer may work in different modes, such as comment mode and mass mailing mode. Comment mode posts the message to the current document chatter and may notify followers. Mass mailing mode is more oriented toward batch sending and may not use the same message subtype. ![Mail composer mode](https://xp.odoohub.com.cn/en/basic/images/45.png) If a customer asks, "Why did this person also receive the email?", usually check three things: * Recipients in the mail composer; * Followers of the current record; * Message subtype and notification preferences. Before sending, employees should check not only the body but also recipients and attachments, especially for quotations, invoices, contracts, and after-sales disputes. Followers --------- Followers are people who follow messages on the current record. Depending on the situation, the system may automatically add the creator, responsible person, customer, salesperson, or related users. Followers are suitable for: * Sales following their quotations and customers; * Finance following customer invoices and collection records; * Project members following task progress; * Purchase following vendor orders; * Customers receiving order and invoice updates through the portal. But more followers are not always better. | Problem | Impact | | --- | --- | | Too many notifications | Employees gradually ignore Odoo reminders | | Unclear boundary | People who should not receive messages may receive business information | Implementation advice: whoever is responsible for the document should follow it; whoever needs to collaborate should follow it; people who only occasionally view it do not necessarily need to follow. What Are Activities ------------------- Activities are Odoo to-do reminders. They are not ordinary notes. They have a responsible user, due date, and activity type. Activities can be created on records with chatter and can also be scheduled from kanban, list, or activity views. Common activity types: * Call; * Send email; * Schedule meeting; * Upload document; * Follow up quotation; * Collect payment; * Review information; * Handle after-sales issue. For example, after creating a quotation, a salesperson can schedule a follow-up call three days later. When due, the system reminds the salesperson. The value of activities is to turn "remember to follow up" into a trackable system task. Managers can also see overdue activities, opportunities needing follow-up, and invoices needing collection. How To Use Activities --------------------- Do not overuse activities. They are suitable for items with a clear owner and deadline. | Scenario | Suitable For Activity? | Description | | --- | --- | --- | | Contact customer in three days to confirm quotation | Yes | Has owner, date, and action | | Finance collects an overdue invoice next week | Yes | Builds a collection rhythm | | Project manager reviews requirement document tomorrow | Yes | Clear task and deadline | | Write a casual customer background note | No | Better as internal note | | Upload contract attachment | No | Better as attachment and note | At go-live, start with sales follow-up, finance collection, and project task activities. Do not create activities for every action from day one, or employees will feel the system keeps chasing them everywhere. Attachments ----------- The chatter can also manage attachments. Common attachments: * Customer contracts; * Quotation PDFs; * Invoice PDFs; * Payment proofs; * Delivery receipts; * Customer images; * Project files; * After-sales photos. After upload, attachments are linked to the related document. Later, when opening the order, invoice, or task, users can see the related files. Attachment management suggestions: * Upload files to the correct document, not all to the customer profile; * Use understandable filenames, such as `2026-06-quotation-confirmed.pdf`; * Upload key documents such as contracts, invoices, and signed delivery slips to business records; * Do not upload many unrelated files; * Pay attention to permissions for private or sensitive documents. Attachments are part of business evidence, not just file storage. Value Of Message History ------------------------ The greatest value of chatter is traceability. It can answer: * When was this quotation sent? * Did the customer reply? * Who changed the document? * Who internally noted a risk? * Which attachments relate to this document? * Which employee should follow up next? * Did the customer receive the portal link? * Has finance already collected payment? * What is the status of after-sales handling? These records are valuable for sales, projects, after-sales service, and finance collection. During employee handover, the new owner does not need to ask everywhere what happened before; the chatter already provides much of the context. Message Subtypes ---------------- After a team uses chatter heavily, a common question appears: why do some messages notify customers while others are internal only? This is related to Odoo mail threads, followers, and message subtypes. Technically, many Odoo models have chatter because they inherit mail thread capabilities. The right side of the form then provides send message, log note, activities, attachments, and followers. ![Chatter example](https://xp.odoohub.com.cn/en/basic/images/41.png) Odoo uses message subtypes to distinguish different kinds of messages and notifications. ![Message subtype list](https://xp.odoohub.com.cn/en/basic/images/42.png) Message subtype details: ![Message subtype details](https://xp.odoohub.com.cn/en/basic/images/43.png) Common fields: | Field | Description | | --- | --- | | Message Type | Subtype name | | Sequence | Display order | | Model | Model where the subtype applies; empty means more general | | Default | Whether it is subscribed by default when following | | Internal Only | Whether it is visible only to internal users | | Hidden | Whether it is hidden in follower settings | | Parent | Whether subscribing to the parent also subscribes to the child | Most customers do not need to modify message subtypes directly. Consultants and developers should understand them because many notification issues eventually come down to followers, subscribed subtypes, and whether a message is internal. Notification Preferences ------------------------ Odoo users can have their own notification preferences. Depending on version and configuration, notifications may appear as: * Odoo top-right notifications; * Messages in the Discuss app; * Email notifications; * Activity reminders; * Mobile app notifications. This is why the same message may send an email to one user but only show a system reminder to another. Implementation explanation: Who receives a message is decided by recipients, followers, and subtypes. How the message is notified is decided by user notification preferences and system configuration. Do not understand every notification as email. Odoo itself is a collaboration system. Email is only one notification channel. Discuss App And Chatter ----------------------- Odoo also has a Discuss app for chats, channels, and system notifications. Relationship: | Feature | Suitable Content | | --- | --- | | Document chatter | Business communication around a quotation, invoice, task, or customer | | Discuss app | Team channels, direct messages, cross-module notifications | If content relates to a specific order, write it in that order's chatter. If it is only daily team discussion, put it in a Discuss channel. This makes business evidence easier to find later. Instead of searching through massive chats, users can open the related document. WeCom And Lark Notifications In China ------------------------------------- Domestic customers often prefer receiving notifications in WeCom, Lark, DingTalk, or similar tools. Odoo's native collaboration center is still chatter, activities, and Discuss. In implementation projects, key notifications can also be pushed to enterprise office tools. Qingdao Ohm Network Technology already has WeCom and Lark related solutions for employee synchronization, OAuth login, message push, robot notifications, and similar scenarios. This chapter does not expand configuration details; it only reminds customers that if employees want to receive key Odoo messages in WeCom or Lark, these integrations can be evaluated after the native message mechanism is stable. Suitable scenarios: * Employees do not open Odoo frequently but check WeCom or Lark; * Approvals, to-dos, and exception reminders need timely delivery; * Notifications from multiple systems should be unified into company office tools; * Management wants key business reminders to arrive faster. However, message push is not a replacement for Odoo chatter. A better approach is: Odoo keeps business records and permission boundaries, while WeCom/Lark provides timely reminders. Common Usage Rules ------------------ After enabling chatter, set a few simple team rules: * Be careful with content customers may see; * Use internal notes for internal discussion, not customer messages; * Record important phone communication as a note; * Schedule follow-up activity after sending a quotation; * Record collection communication when finance follows up payment; * Name attachments clearly; * Do not add everyone as a follower; * Before employee handover, check key customer and unfinished document message history. These rules are simple but useful. When used well, chatter becomes the company's business memory. When used poorly, it becomes another pile of ignored messages. Common Issues ------------- | Issue | Common Cause | Direction | | --- | --- | --- | | Customer did not receive email | Email configuration, spam, template, or recipient issue | Check mail configuration and mail records | | Employees receive too many reminders | Too many followers or subtype subscriptions | Clean followers and notification preferences | | Internal note sent to customer | Used Send Message, or template/recipient configured incorrectly | Train employees to distinguish send message and log note | | Cannot find attachment | Uploaded to wrong document or filename is unclear | Standardize attachment naming and upload location | | Activity not handled | No owner, no due date, or no management rhythm | Define activity type and owner | | Customer reply does not enter document | Incoming server, catch-all, or mail routing not configured | Troubleshoot from the email configuration chapter | | Communication is scattered | WeChat, email, and Odoo all used randomly | Bring key business information back to the related document | When troubleshooting, do not only ask whether the system is broken. First check how the message was generated, who received it, which channel notified them, and whether an email server was involved. Implementation Advice --------------------- Messages and Discuss do not need to wait until all modules are live. Start from the scenarios that create value most easily. | Stage | Recommendation | | --- | --- | | Stage 1 | Use chatter and notes on sales quotations, customer invoices, and project tasks | | Stage 2 | Use activities for sales follow-up, finance collection, and project collaboration | | Stage 3 | Standardize followers, attachment naming, and customer-visible content | | Stage 4 | Based on employee habits, evaluate WeCom, Lark, and other reminder integrations | For beginners, remember three actions first: use Send Message for external communication, Log Note for internal traceability, and Activities for future tasks. Once the team gets used to putting key communication back into Odoo, sales, finance, project, and after-sales records naturally become clearer. This chapter covered Odoo chatter, Send Message, internal notes, activities, followers, attachments, message subtypes, and domestic message integration ideas. The next chapter moves to Reports and explains how Odoo turns daily business data into management information that can be viewed, filtered, and exported. results matching "" =================== No results matching "" ====================== --- # Chapter 1 Purchase Management · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 1 Purchase Management](https://xp.odoohub.com.cn/en/) =============================================================== Chapter 1 Purchase Management ============================= Odoo's Purchase app manages the flow from vendor request for quotation to purchase order, receipt, vendor bill, and vendor performance analysis. For many companies, purchase is where sales demand, production demand, and stock replenishment become real supplier commitments. This chapter explains the basic concepts of purchase documents, expected receipt dates, vendor lead times, purchase approval, reordering rules, vendor bills, and on-time delivery ratio. RFQ And Purchase Order ---------------------- Purchase documents are usually divided into RFQ and Purchase Order. They are essentially the same model in different states. An RFQ is a draft purchase order. A typical RFQ looks like this: ![RFQ form](https://xp.odoohub.com.cn/en/purchase/images/4.png) When creating an RFQ, users need to know the vendor, order date, products, quantities, price, taxes, and expected receipt information. After the information is complete, click **Confirm Order** to convert the draft RFQ into a purchase order. After confirmation, Odoo decides whether to create a receipt according to the product type. If the purchase lines include stockable products, Odoo automatically creates an incoming receipt. Receipt operations may use one-step, two-step, or three-step receiving depending on warehouse configuration. The detailed warehouse flow is explained in the Inventory section. A typical receipt is shown below: ![Purchase receipt](https://xp.odoohub.com.cn/en/purchase/images/5.png) Warehouse users validate the receipt, and finance creates the vendor bill according to the purchase invoicing policy. This completes the basic purchase flow. RFQ -> Purchase Order -> Receipt -> Vendor Bill -> Payment / Reconciliation Expected Receipt Date --------------------- When purchasing raw materials or goods, companies often need a purchasing plan to support sales, production, or replenishment. The RFQ can include an expected receipt date. ![Expected receipt date](https://xp.odoohub.com.cn/en/purchase/images/6.png) By default, the RFQ expected receipt date is consistent with line-level expected dates. If multiple lines have different expected dates, the document date usually follows the earliest receipt date among lines. If the document expected date is manually changed, existing line dates may be synchronized with it. Expected receipt date is not only a note for purchasing. It affects warehouse planning and sometimes production or sales commitments. Vendor Lead Time ---------------- Vendor lead time can be configured on the vendor information of a product. The unit is days. ![Vendor lead time](https://xp.odoohub.com.cn/en/purchase/images/7.png) For example, the vendor lead time for a 13-inch Mac Pro from Heisenberg Information Technology is set to 2 days. If the vendor is selected on an RFQ and the expected date is 2024-07-20, after confirmation Odoo calculates the expected receipt date as 2024-07-22. The scheduled date on the receipt is also updated. ![Lead time result](https://xp.odoohub.com.cn/en/purchase/images/8.png) Vendor lead time helps purchasing users avoid unrealistic arrival promises. In a serious implementation, vendor lead time should be maintained for key products and suppliers, especially when purchase orders support sales or manufacturing commitments. Purchase Approval ----------------- Odoo natively supports a simple purchase approval feature. It can be enabled in Purchase settings. ![Purchase approval setting](https://xp.odoohub.com.cn/en/purchase/images/po_approval.png) After enabling purchase approval, set the minimum amount that requires approval. ![Approval amount](https://xp.odoohub.com.cn/en/purchase/images/12.png) For example, if the approval threshold is 5,000, Odoo requires manager approval before an order above that amount can be confirmed. ![Approval required](https://xp.odoohub.com.cn/en/purchase/images/13.png) After the purchase manager approves it, the document becomes a confirmed purchase order. ![Approved purchase order](https://xp.odoohub.com.cn/en/purchase/images/14.png) Native Odoo purchase approval is intentionally simple. It is suitable for amount-based approval, not complex OA workflows. If the company uses WeCom internally and needs complex approvals, Qingdao Ohm's WeCom approval integration can extend this scenario. Reordering Rules ---------------- Reordering rules let Odoo create purchase orders or replenishment suggestions according to system demand. The rule defines replenishment logic for a product and location. ![Reordering rule](https://xp.odoohub.com.cn/en/purchase/images/9.png) Reordering rules are closely related to inventory. When stock falls below the minimum quantity, Odoo can suggest replenishment up to the maximum quantity. If the product uses a Buy route, the replenishment may become a purchase order or purchase suggestion. For beginner implementations, do not enable too many automatic replenishment rules at once. First verify product data, vendor information, lead time, and purchase price. Then test replenishment on a small group of products. Vendor Bills ------------ In native Odoo, if the purchase order is ready for billing, users can click **Create Bill**. ![Create vendor bill](https://xp.odoohub.com.cn/en/purchase/images/bill.png) The result is a vendor bill draft. ![Vendor bill result](https://xp.odoohub.com.cn/en/purchase/images/bill2.png) This handles basic purchase billing, but native purchase does not provide a down-payment wizard like the Sales app. In Qingdao Ohm's purchase and warehouse solution, the purchase module can be enhanced with a bill creation wizard similar to sales invoicing. After installing the purchase warehouse module: ![Purchase warehouse module](https://xp.odoohub.com.cn/en/purchase/images/purchase.png) Create Bill on the purchase order opens a wizard: ![Purchase bill wizard](https://xp.odoohub.com.cn/en/purchase/images/purchase2.png) The wizard supports: * Full vendor bill. * Percentage-based down payment bill. * Fixed-amount down payment bill. Example bill: ![Purchase down payment bill](https://xp.odoohub.com.cn/en/purchase/images/purchase3.png) This enhancement is useful when companies need purchase deposits, prepayments, or staged vendor billing. If the company only needs ordinary vendor bills, native Odoo is usually enough. On-Time Delivery Ratio ---------------------- Vendor records include an On-time Ratio that indicates vendor delivery performance. The formula is: On-time delivered quantity from this vendor in the past N days / Total ordered quantity x 100% The calculation applies to non-service products. If there is no data, the value may be shown as `-1`. The default period `N` is 365 days. To change it, enable developer mode and add or update the system parameter: purchase_stock.on_time_delivery_days ![On-time delivery parameter](https://xp.odoohub.com.cn/en/purchase/images/15.png) On-time delivery ratio is useful when comparing suppliers, reviewing vendor reliability, and deciding whether purchase lead times are realistic. Implementation Advice --------------------- For a first purchase rollout, use a simple product and one vendor to test the full chain: RFQ -> Confirm purchase order -> Receive goods -> Create vendor bill -> Validate bill Then expand to approvals, vendor lead times, reordering rules, and purchase deposits. Purchase should be implemented together with inventory and accounting, because supplier commitments affect stock availability, cost, and payables. This chapter covered the standard purchase flow, expected receipt date, vendor lead time, approval, reordering rules, vendor bills, and on-time delivery ratio. The next chapter explains how purchase receipts affect product cost, especially when average costing is used. results matching "" =================== No results matching "" ====================== --- # Chapter 2 Sales Products And Variants · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 2 Sales Products And Variants](https://xp.odoohub.com.cn/en/) ======================================================================= Chapter 2 Sales Products And Variants ===================================== Every line on a sales order depends on a product. The product decides whether it can be sold, whether inventory is needed, which price, tax, and invoicing policy apply, and how the later fulfillment flow works. If a product has differences such as color, size, capacity, or specification, product variants may also be involved. This chapter explains product design from the sales perspective: which fields affect quotations and sales orders, when variants are useful, when a normal product is enough, and how to avoid later confusion in pricing, stock, and invoicing because the product structure was not designed clearly. Product Variant Concept ----------------------- Product variants are not enabled by default in Odoo. They appear only after enabling variants in **Sales -> Configuration -> Settings -> Products**. ![Enable product variants](https://xp.odoohub.com.cn/en/sale/images/67.png) After variants are enabled, two menus become important: **Product Templates** and **Product Variants**. Technically, they correspond to two different models: `product.template` and `product.product`. Their forms look very similar. When a shared field is changed on the template or on a variant, the shared value is reflected on both sides. Only variant-specific fields exist only on variants and do not directly appear as template-level values. Variant Attributes ------------------ Variant attributes describe configurable differences of a product. For example, an iPhone may have color, storage, and version attributes. Their values may be black, 128 GB, or iPhone 15. ![Variant attributes](https://xp.odoohub.com.cn/en/sale/images/68.png) ### Attribute Display Types Odoo natively supports several display types for variant attributes. Radio button: ![Radio variant attribute](https://xp.odoohub.com.cn/en/sale/images/69.png) Pills: ![Pills variant attribute](https://xp.odoohub.com.cn/en/sale/images/70.png) Select: ![Select variant attribute](https://xp.odoohub.com.cn/en/sale/images/71.png) Color: ![Color variant attribute](https://xp.odoohub.com.cn/en/sale/images/72.png) The display type affects how the salesperson or customer chooses variants in the product configurator. It does not change the business meaning of the attribute itself. Custom Variant Attribute Values ------------------------------- Another variant usage pattern is to allow users to enter a custom attribute value. Attribute values include an "Is custom" option. After it is enabled, users can enter custom content when creating an order. For example, if the system has only black and white iPhone colors, but sales sometimes needs to enter a special color, you can add a "Custom" value and mark it as custom. ![Custom attribute value setting](https://xp.odoohub.com.cn/en/sale/images/74.png) When creating an order, the user will see an extra custom option. ![Custom option on order](https://xp.odoohub.com.cn/en/sale/images/75.png) The user can enter the required value and create the order. ![Custom value entered](https://xp.odoohub.com.cn/en/sale/images/76.png) One detail is important: although a custom value is entered, Odoo does not necessarily create a real new product variant. In the native behavior, the custom value is generally stored as information on the sales order line, while the product variant still uses the predefined "Custom" variant. If the business needs to create a real variant in the system, one method is to create it manually. Another method is to use the automatic creation capability in Qingdao Ohm's sales solution. After enabling the sales extension under **Settings -> Ohm -> Sales Features**, the related feature becomes available. ![Enable sales extension](https://xp.odoohub.com.cn/en/sale/images/77.png) Then grant the user the permission to create variants from custom attributes. ![User permission for custom variant creation](https://xp.odoohub.com.cn/en/sale/images/78.png) The attribute value list will show an additional column. ![Create variant option](https://xp.odoohub.com.cn/en/sale/images/79.png) After selecting the create-variant option, the system can automatically create the custom-attribute variant when the order is confirmed. ![Automatically created purple iPhone variant](https://xp.odoohub.com.cn/en/sale/images/80.png) This kind of enhancement should be used only when the company really needs those custom combinations to become reusable stock, pricing, or reporting objects. If the custom value is only descriptive text for one order, storing it on the order line is usually enough. Variant Creation Mode --------------------- Odoo supports three variant creation modes: | Mode | Meaning | | --- | --- | | Instantly | Create variants immediately when the product is saved | | Dynamically | Do not create all variants at product setup time; create a variant only when it is actually used | | Never | Do not create variants for this attribute combination | Once the variant creation mode has been used on a product, it can no longer be edited casually. This is why product structure should be designed before large-scale import or go-live. Variant Configuration Mode -------------------------- Variant configuration on orders supports two modes: | Mode | Meaning | | --- | --- | | Product Configurator | A guided configurator, suitable for selecting one configured product at a time | | Order Grid Entry | A grid configurator, suitable for entering multiple variant quantities at once | ![Order grid entry](https://xp.odoohub.com.cn/en/sale/images/73.png) Grid entry is useful for products such as clothes, shoes, and items with size or color combinations. Product Configurator is more suitable when the salesperson needs to build one configured product with clear options. Common Product Fields --------------------- The product form contains many settings that affect the sales flow. We start with the common fields. ### Product Type A product template can define whether the product can be sold or purchased, and it also stores product type, sales price, cost, taxes, and other information. The first concept to understand is product type. In recent Odoo versions, product types can be understood as: | Type | Meaning | | --- | --- | | Goods | Physical or consumable items. They may or may not be tracked in inventory. | | Service | Non-stock services such as consulting, support, or implementation work. | For goods, inventory tracking can be configured further. Depending on the product and version, common tracking modes include lots, serial numbers, or quantity-based stock management. In Odoo 17 and earlier versions, product types were often shown as three categories: | Older Type | Meaning | | --- | --- | | Consumable | A product that can be used without strict stock control, such as sand or water | | Service | A non-physical service, such as consulting | | Storable product | A physical product with controlled stock in and out | Because product type affects delivery, stock reservation, invoicing, and cost, it should be decided carefully during master data preparation. ### Product Category Product category defines which category the product belongs to. Categories can have parent categories and can store advanced settings such as removal strategies, inventory valuation methods, and accounting accounts. If a removal strategy is set on the product category, products under that category may follow the category strategy instead of the location-level strategy. Native strategies commonly include FIFO and LIFO. Detailed strategy behavior is explained in the inventory location and putaway/removal chapters. ### Internal Reference Internal Reference, also known as `default_code`, is usually the SKU used internally by the company. Odoo does not enforce uniqueness by default, but uniqueness can be added through technical control if required by the implementation. Below Internal Reference is Barcode, which stores the product barcode or unified product code. Barcode also does not necessarily enforce uniqueness by default. Other common sales-related fields include: | Field | Purpose | | --- | --- | | Sales Price | The standard selling price of the product | | Customer Taxes | The default sales tax used when selling the product | | Cost | Cost basis used by margin, inventory valuation, or accounting flows | | Invoicing Policy | Whether to invoice ordered quantities or delivered quantities | If more than one selling price is needed, use pricelists rather than creating duplicate products. ### Code Odoo 18 introduced another field often translated as Code. Unlike Internal Reference, this code is a computed field. It is derived from the vendor product information on the product. In simple terms: if the current partner is a vendor, the code may use the vendor product code from the vendor pricelist. Otherwise, Odoo falls back to the internal reference. ### Product Image A product can upload a default image. Images are useful for website sales, POS, rental, and product selection. For internal B2B sales, the image is not always required, but it can still help users choose the correct product quickly. ### Product Price The **Sales Price** or list price is the standard selling price of the product. In Odoo 18 and earlier versions, the display precision of sales prices was commonly controlled by the Product Price decimal precision setting, with two decimal places by default. After February 2026, the standard sales price supports higher precision, although the minimum precision still defaults to two decimal places in normal usage. Implementation Advice --------------------- Sales product design should serve the downstream process. In the first phase, do not rush to import every historical product and every old specification. Start with active products that are still sold, still stocked, or still invoiced. Product variants should also be used with restraint. Standard combinations such as color, size, and capacity are good candidates for variants. Highly customized specifications that differ for every customer or every order are usually better handled through descriptions, configurators, secondary units, or custom solution design. This chapter explained sales products, product templates, product variants, and common product fields. The next chapter moves into quotations and customer confirmation: how these products are placed into a quotation, and how templates, expiration dates, online signatures, and online payments turn a proposal into a real sales opportunity. results matching "" =================== No results matching "" ====================== --- # Chapter 2 Location Management · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 2 Location Management](https://xp.odoohub.com.cn/en/) =============================================================== Chapter 2 Location Management ============================= Locations are the foundation of Odoo inventory. If the location structure is clear, receipts, deliveries, internal transfers, stock counts, and reporting become easier to understand. If locations are designed casually, users will soon lose confidence in stock numbers. By default, multi-location management is not enabled. Go to **Inventory -> Configuration -> Settings -> Warehouse -> Storage Locations** and enable it. ![Enable storage locations](https://xp.odoohub.com.cn/en/stock/images/15.jpg) After enabling it, location management appears under **Inventory -> Configuration -> Locations**. Location Types -------------- Odoo locations have several usage types: | Location Type | Meaning | | --- | --- | | Vendor Location | A virtual location representing vendor stock | | Customer Location | A virtual location representing customer stock | | Inventory Loss | A virtual location used for inventory adjustments | | Production | A virtual location used for consuming raw materials and producing finished goods | | View | A logical parent location that cannot store stock itself | | Transit Location | A transit location for inter-company or multi-step transfers | Locations can also be marked as scrap locations or return locations. Only locations marked as return locations can be selected in the return wizard. Removal Strategy ---------------- Odoo can define a removal strategy on a location, but the feature is not visible by default. The user needs permission to manage push and pull routes. ![Route permission](https://xp.odoohub.com.cn/en/stock/images/34.png) After the permission is enabled, the warehouse configuration can show removal strategy settings. ![Removal strategy on location](https://xp.odoohub.com.cn/en/stock/images/16.jpg) Product categories can also define removal strategies. The strategy on the product category has higher priority than the one on the location. For example, purchase a batch of Play Car toys with lot number A00001. Then set LIFO on the product category and FIFO on the Stock location. Purchase another batch with lot number A00002. The stock looks like this: ![Lots in stock](https://xp.odoohub.com.cn/en/stock/images/17.jpg) When creating a sales order, because the product category uses LIFO, Odoo should prioritize lot A00002. ![LIFO selected lot](https://xp.odoohub.com.cn/en/stock/images/18.jpg) The result shows that Odoo indeed chooses stock from lot A00002 first. Odoo also supports removal based on expiration dates. To enable this, first enable lots/serial numbers and expiration dates under Inventory traceability settings. ![Expiration date setting](https://xp.odoohub.com.cn/en/stock/images/19.jpg) After that, FEFO appears as a removal strategy, meaning first-expired-first-out. ![FEFO removal strategy](https://xp.odoohub.com.cn/en/stock/images/20.jpg) Putaway Strategy ---------------- Putaway strategy answers another question: after goods enter the warehouse, where should they be stored? For example, cold-chain products may need to go to a refrigerated location, hazardous goods may need a special zone, and fast-moving goods may need a picking area. Putaway rules can help Odoo suggest the destination location during receipt or internal movement. Putaway is explained in more detail in the later putaway chapter. At the location design stage, the key point is to avoid creating too many detailed locations before the team knows how they will be used. Implementation Advice --------------------- Location design should follow real operations but remain simple enough for users. Start with: * One warehouse. * A clear Stock location. * Optional receiving, quality, packing, and output locations if the workflow requires them. * Separate scrap and return locations if after-sales or quality handling is important. Do not create a location for every shelf or bin unless barcode operations, putaway rules, or strict warehouse control really require it. This chapter explained location types, removal strategy, FEFO, and the role of putaway strategy. The next chapter explains operation types, which classify receipts, deliveries, internal transfers, and related stock operations. results matching "" =================== No results matching "" ====================== --- # Part 2 Basic Data · Odoo Implementation Manual - Qingdao Ohm Network Technology [Part 2 Basic Data](https://xp.odoohub.com.cn/en/) =================================================== Part 2 Basic Data ================= Basic data is the foundation of Odoo. Sales orders, purchase orders, inventory, accounting, POS, and manufacturing all reuse the same core records again and again. This part does more than point out where buttons are. More importantly, it helps readers understand which data should be prepared first, which fields will affect later business flows, and which settings should not be changed casually once the system is formally in use. Learning Goals -------------- After reading this part, readers should be able to: * Understand the basic application structure of Odoo; * Know the difference between a test database, production database, and backup; * Configure company information, users, languages, and common permissions; * Correctly distinguish customers, vendors, contacts, invoice addresses, and delivery addresses; * Create product records that can be used in sales, purchase, and inventory; * Use import and export functions to maintain basic data in batches; * Understand the basic roles of email, messages, activities, and reports. Recommended Configuration Sequence ---------------------------------- For a first implementation, prepare basic data in this order: 1. Company information; 2. Users and permissions; 3. Customers, vendors, and contacts; 4. Product categories and product records; 5. Warehouses, inventory, and units of measure; 6. Taxes, bank accounts, and payment terms; 7. Data import, spot checks, and corrections; 8. Email, messages, and report layout. Do not rush to enter a large number of formal business documents before basic data has been confirmed. If basic data is wrong, later orders, inventory, and accounting will also be wrong. Relationship With Later Modules ------------------------------- | Basic Data | Later Impact | | --- | --- | | Company information | Quotation, invoice, email template, report header | | Users and permissions | Which menus employees can see, and whether they can create, edit, or approve | | Contacts | Customers, vendors, delivery addresses, invoice addresses, portal accounts | | Products | Quotations, purchase, inventory, manufacturing, POS, cost and margin | | Units and categories | Prices, inventory quantities, accounting accounts, statistical reports | | Email settings | Quotation sending, customer replies, system notifications | | Report settings | Printed layouts, customer documents, internal management reports | If a company is new to Odoo, it should first complete this part, then move into Sales, Purchase, Inventory, Accounting, and other business modules. results matching "" =================== No results matching "" ====================== --- # Chapter 1 Basic Concepts · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 1 Basic Concepts](https://xp.odoohub.com.cn/en/) ========================================================== Chapter 1 Basic Concepts ======================== Warehouse management is often the first place where Odoo becomes "real" for a company. Sales orders create deliveries, purchase orders create receipts, manufacturing consumes materials and produces finished goods, and accounting may value inventory according to stock moves. Before configuring detailed routes or barcode operations, it is important to understand the basic objects used by Odoo Inventory. This chapter introduces the foundational concepts: warehouses, locations, transfers, operation types, stock moves, and stock move lines. Warehouse --------- A **warehouse** is the top-level concept in inventory management. A company can have one or many warehouses. Each warehouse contains multiple locations and operation types. In implementation, a warehouse usually represents a physical warehouse, store, branch, or large stock area that needs its own receiving and delivery process. Do not create too many warehouses too early. If the business only needs internal storage zones, locations may be enough. Location -------- A **location** is the storage unit under a warehouse. In Odoo, locations are divided into internal locations and virtual locations. Internal locations store real products. Virtual locations represent logical places such as vendors, customers, production, inventory adjustment, or transit. This design is important: Odoo records inventory by moving products from one location to another. A receipt is a movement from a vendor location to an internal location. A delivery is a movement from an internal location to a customer location. Transfer -------- Inventory operations in Odoo are completed through transfers between source and destination locations. Any receipt, delivery, or internal movement records where the product comes from and where it goes. A transfer contains multiple **stock moves**, and each stock move can contain multiple **stock move lines**. Transfer -> Stock moves -> Stock move lines Operation Type -------------- Odoo classifies transfers by **operation type**. Native operation types include receipts, internal transfers, deliveries, and additional types such as manufacturing or repair when related apps are installed. Operation types help users manage one class of transfers together. For example, warehouse users can focus on Receipts today, while delivery staff focus on Delivery Orders. Stock Move ---------- A **stock move** represents moving one product from location A to location B. It contains product, demand quantity, date, source location, destination location, and completed quantity. Stock moves are the backbone of inventory logic. Sales, purchase, manufacturing, and internal transfers all create stock moves behind the scenes. Stock Move Line --------------- When a product needs lot, serial number, package, owner, or detailed operation information, one stock move is not enough. **Stock move lines** record the more detailed execution of the stock move. For example, a stock move may say "deliver 10 units of product A." The move lines may record which lot numbers were actually delivered and from which exact location. Understanding this hierarchy helps users diagnose inventory questions: if an order looks correct but the exact lot or package is wrong, the answer is often in the move lines, not only in the transfer header. This chapter introduced the basic vocabulary of Odoo Inventory. The next chapter explains location management, including location types, removal strategies, and putaway logic. results matching "" =================== No results matching "" ====================== --- # Chapter 9 Putaway Rules · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 9 Putaway Rules](https://xp.odoohub.com.cn/en/) ========================================================= Chapter 9 Putaway Rules ======================= Putaway rules are the counterpart of removal strategies. Removal strategies decide which stock to take out first; putaway rules decide where incoming products should be stored. Putaway rules are managed under **Inventory -> Configuration -> Warehouse Management -> Putaway Rules**. Multi-location management must be enabled before using putaway rules. ![Putaway rule menu](https://xp.odoohub.com.cn/en/stock/images/putway3.png) ![Putaway rule form](https://xp.odoohub.com.cn/en/stock/images/putway4.png) Putaway rules commonly include: | Field | Meaning | | --- | --- | | Product | Which product this rule applies to | | When product arrives in | The location where the product arrives, usually a parent location | | Product category | Which category the rule applies to | | Store to | Destination location where the product should be stored | | Sub-location | Strategy for choosing a sub-location | | Storage category | Storage rules based on product or quantity | | Company | Company for multi-company environments | The sub-location field is available in newer versions such as Odoo 18. For example, suppose product P and two locations exist: `WH/L1` and `WH/L2`. If products arriving in `WH` should be stored in `WH/L2`, configure: Product: P When product arrives in: WH Store to: WH/L2 Priority Between Putaway Rules And Transfers -------------------------------------------- Users may encounter a confusing situation. Suppose transfer `WH/INT/0002` has source location BMW Location and destination location Audi Location. The user wants to move an A4L that was wrongly placed in BMW location back to Audi location. But during availability check, Odoo still generates BMW Location as destination. ![Putaway result overriding destination](https://xp.odoohub.com.cn/en/stock/images/putway.png) At first glance this seems wrong. The transfer clearly specified Audi Location as destination, but the detailed destination became BMW Location. After reviewing the source logic, the reason is putaway rules. Odoo's putaway rule priority is higher than the destination location manually set on the transfer. Because an A4L putaway rule was defined for the WH warehouse, the simple destination on the transfer no longer controls the final detailed location. ![Putaway rule causing the result](https://xp.odoohub.com.cn/en/stock/images/putway2.png) This behavior is very important for consultants. If users report that Odoo "changed the destination location by itself," check putaway rules before assuming it is a bug. Sub-Location Strategy --------------------- Sub-location strategy includes: | Strategy | Meaning | | --- | --- | | None | Do not use sub-location strategy | | Last Used | Use the most recently used location as target | | Closest Location | Use the closest location among locations linked with the storage category | Sub-location strategy and storage categories are useful for more advanced warehouse organization, especially when the warehouse has capacity rules or product families. Implementation Advice --------------------- Putaway rules should reflect real receiving habits. Start with a small set of clear rules, such as cold-chain products to a cold area or hazardous products to a special area. Avoid creating too many rules before the receiving team is trained, because unexpected destination changes can confuse users. This chapter explained putaway rules and their priority over transfer destination. The next chapter introduces storage categories, which can control capacity and allocation among sub-locations. results matching "" =================== No results matching "" ====================== --- # Chapter 10 Storage Categories · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 10 Storage Categories](https://xp.odoohub.com.cn/en/) =============================================================== Chapter 10 Storage Categories ============================= Before starting, consider this scenario. A warehouse has locations A, B, C, and D under the same parent location S. Each location can store at most 100 units of product P. A purchase order receives 200 units of P. How should Odoo be configured to respect the maximum storage capacity of each location? **Storage Category** is designed for scenarios like this. It helps Odoo decide where products can be stored according to storage capacity and rules. Storage Category ---------------- To use storage categories, enable the option under **Inventory -> Configuration -> Settings -> Warehouse -> Storage Categories**. ![Enable storage categories](https://xp.odoohub.com.cn/en/stock/images/21.png) After enabling it, go to **Inventory -> Configuration -> Storage Categories**. ![Storage category example](https://xp.odoohub.com.cn/en/stock/images/22.png) Important fields include: | Field | Meaning | | --- | --- | | Storage Category | Name of the storage category | | Max Weight | Maximum weight accepted by this category | | Allow New Product | Policy for accepting products, such as when empty, same product, or mixed products | Because the same location may support different quantities for different products, capacities are defined in the product capacity list: | Field | Meaning | | --- | --- | | Product | Product controlled by this capacity rule | | Quantity | Allowed quantity | | Unit of Measure | UoM used for the capacity | Then bind this storage category to locations. ![Bind storage category to location](https://xp.odoohub.com.cn/en/stock/images/24.png) Storage categories cannot work alone. After creating them, they must be connected with putaway rules. Bind Putaway Rules ------------------ Using Sprite as an example, create a putaway rule. ![Putaway rule with storage category](https://xp.odoohub.com.cn/en/stock/images/23.png) The rule means: when the product arrives in the Stock location, put it into the Sprite location. Because the Sprite location has four child locations A, B, C, and D, these child locations can be used for storage. After products arrive at Stock, Odoo uses the putaway rule and storage category to place the product into a suitable child location. For example, after the rules are configured, create a purchase order for 100 units of Sprite. ![Purchase order for Sprite](https://xp.odoohub.com.cn/en/stock/images/25.png) After confirmation, Odoo automatically stores the stock in child location A under the Sprite location. ![Stored in location A](https://xp.odoohub.com.cn/en/stock/images/26.png) If another purchase order is created, Odoo automatically stores it in child location B. ![Stored in location B](https://xp.odoohub.com.cn/en/stock/images/27.png) This happens because the first receipt has already reserved location A. When the second receipt is processed, Odoo detects that A is already used and moves to B. Storage Category Usage Rule --------------------------- Now consider another question: if all four locations are full, where will the fifth receipt be stored? The answer is the Stock location. ![Fallback to Stock location](https://xp.odoohub.com.cn/en/stock/images/30.png) This demonstrates an important usage rule: storage category locations are used in sequence. When no suitable location can be found, Odoo falls back to the operation type's default destination location. Over-Capacity Allocation ------------------------ Now return to the opening problem: if the incoming quantity is 200 and each child location can store 100, how can the system automatically split the receipt into two locations? Native behavior may fall back to the default location when the quantity exceeds storage category capacity. To solve this, Qingdao Ohm's inventory solution adds an automatic split option. When enabled, Odoo can split a 200-unit incoming line into two 100-unit lines and assign them to suitable destination locations. First enable the **Storage Category Split** feature in settings. ![Enable storage category split](https://xp.odoohub.com.cn/en/stock/images/33.png) Then purchase 200 units. ![Purchase 200 units](https://xp.odoohub.com.cn/en/stock/images/31.png) After confirming the purchase order, Odoo automatically splits the 200 units according to the 100 units per location rule. ![Split into suitable locations](https://xp.odoohub.com.cn/en/stock/images/32.png) Implementation Advice --------------------- Storage categories are useful when the warehouse has capacity limits by location. They are especially helpful for products stored by bin, pallet, shelf, cold area, or special capacity rules. Start with simple capacity rules and test with real receiving scenarios. If the business expects automatic splitting across locations, confirm whether native behavior is enough or whether an enhancement like storage category split is needed. This chapter explained storage categories, putaway binding, fallback behavior, and over-capacity allocation. The next chapter explains delivery method comparison for selecting carriers and rates. results matching "" =================== No results matching "" ====================== --- # Chapter 4 Test Database Rehearsal Method · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 4 Test Database Rehearsal Method](https://xp.odoohub.com.cn/en/) ========================================================================== Chapter 4 Test Database Rehearsal Method ======================================== A test database is not for "looking around the interface." It is for simulating real business. Only after real roles, realistic data, and real exceptions have been tested can the company judge whether Odoo is ready for go-live. This chapter provides a testing method suitable for beginners. Following it helps turn "it feels almost ready" into "these processes have been confirmed." What Makes Testing Effective ---------------------------- Effective testing is not an administrator clicking a few buttons casually. It should meet at least four conditions: * Use data close to real business; * Use real role accounts, not only the administrator; * Run complete processes, not only create one document; * Record issues, owners, and resolutions. If only the implementer or owner tests with the administrator account, many permission issues, handover issues, and exception processes will not be exposed. Preparation Before Testing -------------------------- Prepare a minimum data set before testing. | Data | Suggested Quantity | Usage | | --- | --- | --- | | Customers | 2 to 3 | Test quotations, sales orders, payments, reconciliation | | Vendors | 2 to 3 | Test purchase orders, receipts, vendor bills | | Products | 5 to 10 | Cover goods, services, different taxes, or different units | | Warehouses | 1 to 2 | Test receipts, deliveries, transfers, inventory counts | | Users | 1 per role | Test permissions and role processes | | Bank statement lines | 3 to 5 | Test receipts, payments, and bank reconciliation | Products can be created from the Sales application's Products menu. Do not start by importing thousands of products for testing, or the problems will be buried under data volume. ![Product form](https://xp.odoohub.com.cn/en/implementation/images/implementation-product-form.png) Test Roles ---------- Prepare at least these roles: | Role | Responsible For Testing | | --- | --- | | Sales | Customers, quotations, sales orders, sales invoice requests | | Purchase | Vendors, requests for quotation, purchase orders | | Warehouse | Receipts, deliveries, transfers, inventory counts | | Finance | Customer invoices, vendor bills, payments, bank reconciliation | | Manager | Reports, approvals, key business review | | Administrator | System settings, permission adjustment, issue investigation | Each role should log in with its own account. This is the only way to know whether permissions are enough. Process 1: Sales To Payment --------------------------- This is usually the first process most companies need to complete. Customer -> Quotation -> Sales Order -> Delivery -> Customer Invoice -> Payment -> Reconciliation When creating a quotation in Sales, test at least customer, product, quantity, price, tax, and payment terms. ![New quotation](https://xp.odoohub.com.cn/en/implementation/images/implementation-quotation-form.png) Testing steps: 1. Sales creates a customer; 2. Sales creates a quotation; 3. Sales adds products, quantities, unit prices, and taxes; 4. Sales sends or prints the quotation; 5. After customer confirmation, convert the quotation into a sales order; 6. Warehouse processes the delivery; 7. Finance creates the customer invoice; 8. Finance registers customer payment; 9. Finance checks receivables and reconciliation status. Acceptance standard: | Check Item | Passing Standard | | --- | --- | | Quotation | Customer, product, price, and taxes are correct | | Order | Status changes correctly after quotation confirmation | | Delivery | Inventory quantity decreases after delivery | | Invoice | Invoice amount matches order amount | | Payment | Customer receivable decreases | | Reports | Sales revenue and receivables can be found | Process 2: Purchase To Payment ------------------------------ The purchase process validates vendors, purchase prices, receipts, and vendor bills. Vendor -> Request for Quotation -> Purchase Order -> Receipt -> Vendor Bill -> Payment -> Reconciliation Testing steps: 1. Purchase creates a vendor; 2. Purchase creates a request for quotation; 3. Purchase adds products, quantities, and purchase prices; 4. Confirm the purchase order; 5. Warehouse receives goods; 6. Finance creates the vendor bill; 7. Finance registers vendor payment; 8. Finance checks payables. Acceptance standard: | Check Item | Passing Standard | | --- | --- | | Purchase order | Vendor, product, quantity, and price are correct | | Receipt | Inventory quantity increases after receipt | | Bill | Bill amount can match the purchase order | | Payment | Vendor payable decreases | | Reports | Payables and purchase statistics can be found | Process 3: Inventory Count And Transfer --------------------------------------- Any company that manages physical inventory must test inventory flows. Testing steps: 1. Check current stock of a product; 2. Perform an inventory adjustment; 3. Perform an internal transfer; 4. Perform a sales delivery; 5. Perform a purchase receipt; 6. Check whether inventory quantity changes as expected. Acceptance standard: | Check Item | Passing Standard | | --- | --- | | On-hand stock | The system quantity can be explained | | Inventory count | Quantity is correct after adjustment | | Transfer | Source location decreases and destination location increases | | Receipt | Inventory increases after purchase receipt | | Delivery | Inventory decreases after sales delivery | If the company uses lots or serial numbers, test traceability and serial number uniqueness separately. Process 4: Financial Reconciliation ----------------------------------- Financial testing should not only check whether invoices can be created. It must also test payments and bank reconciliation. Testing steps: 1. Create a customer invoice; 2. Register a customer payment; 3. Import or manually create a bank statement line; 4. Match the bank statement line with the payment or invoice; 5. Check whether the receivable is closed; 6. View the aged receivable report. Acceptance standard: | Check Item | Passing Standard | | --- | --- | | Invoice | Amount, taxes, and customer are correct | | Payment | Payment amount and date are correct | | Bank statement | Statement line enters the bank journal | | Reconciliation | Bank statement can match the invoice or payment | | Aging | Paid invoices no longer appear as unpaid | For domestic Chinese customers, remember that an Odoo customer invoice is an accounting receivable document, not a Chinese tax-control invoice. Confirm separately whether the company needs integration with a tax invoicing platform. Exception Flow Testing ---------------------- Testing only the happy path is not enough. Real business always has exceptions. At minimum, test these cases: | Exception Scenario | What To Verify | | --- | --- | | Quotation cancellation | Whether the canceled quotation can still be delivered or invoiced by mistake | | Partial sales delivery | Whether the undelivered quantity remains | | Customer return | Whether inventory increases and receivables are handled correctly | | Partial customer payment | Whether receivable balance is correct | | Partial purchase receipt | Whether the unreceived quantity remains | | Vendor bill amount mismatch | Whether finance can identify the difference | | Insufficient employee permission | Whether the system blocks unauthorized operations | | Incorrect product price | Whether old and new orders behave as expected after correction | Exception testing is where many problems are discovered. Do not be afraid of making the test database messy. That is what it is for. Test Issue Log -------------- Every test issue should be recorded. Do not only write "this is wrong" in a chat group; it will be forgotten quickly. Use a format like this: | No. | Module | Role | Issue Description | Expected Result | Actual Result | Solution | Owner | Status | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | T001 | Sales | Sales | Quotation tax is incorrect | Default 13% | Shows 15% | Adjust product tax | Finance | To Do | | T002 | Inventory | Warehouse | Stock did not decrease after delivery | Stock decreases | No change | Check product type | Consultant | Solved | Recommended statuses: * To confirm; * To do; * Solved; * Not handled for now. "Not handled for now" also needs a reason. For example, the issue belongs to phase-two optimization, or native Odoo does not support it and later customization is required. Test Passing Standard --------------------- Passing the test does not mean there are no issues. It means the key processes are usable and remaining issues have clear handling plans. Use this standard: | Item | Passing Standard | | --- | --- | | Main process | At least one complete Sales, Purchase, Inventory, and Finance chain has been completed | | Exception process | Cancellation, return, partial receipt, and partial payment have been tested | | Permissions | Each role can complete its own work and cannot do what it should not do | | Data | Customers, products, inventory, and accounting data are spot-checked | | Reports | Management and finance can understand key reports | | Issues | All issues required before go-live are closed | | Cutover | Formal go-live date and old-system stop rule are confirmed | If these standards are not met, do not go live directly. Difference Between Trial Run And Formal Go-Live ----------------------------------------------- After testing passes, the company can enter a trial run. A trial run is not the same as formal go-live. | Stage | Purpose | Data Requirement | | --- | --- | --- | | Test database rehearsal | Find issues and practice processes | Test data can be used | | Trial run | Validate the system with real business | Use data close to real business | | Formal go-live | Odoo becomes the only source of business data | Use official data and stop new entries in the old system | During the trial run, the old system can remain available for lookup, but do not keep double entry for a long time. If the same transaction is entered into two systems, the data will eventually fail to match. Common Pitfalls For Beginners ----------------------------- * Testing only document creation, not later delivery, invoicing, and payment; * Testing only normal flows, not cancellation, return, or partial payment; * Testing only with the administrator account, not real role accounts; * Reporting issues only in chat, without an issue list; * Using test data that is too casual and very different from real business; * Changing requirements frequently during testing, so acceptance never finishes; * Management not participating in report acceptance and discovering definition issues only after go-live. The purpose of testing is not to prove that the system is perfect. It is to discover in advance which areas need configuration, training, or phase-two optimization. Once problems are visible, the project has already moved forward. results matching "" =================== No results matching "" ====================== --- # Chapter 11 Delivery Methods · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 11 Delivery Methods](https://xp.odoohub.com.cn/en/) ============================================================= Chapter 11 Delivery Methods =========================== Odoo can integrate carriers to estimate freight, create shipments, print labels, and track packages. Once multiple delivery methods are enabled, a natural business question appears: which carrier should we choose for this shipment? Native carrier integration focuses on individual carriers. In Qingdao Ohm's logistics solution, carrier rate comparison is added so users can compare multiple delivery methods and choose the best option from a delivery order or sales order. Freight Comparison ------------------ Freight comparison helps users compare different carriers by cost and service before shipment. ### Enable Delivery Freight Comparison First, enable Delivery Extension and Sales Delivery Extension in settings. The Sales Delivery Extension is used when freight comparison is needed on sales orders. ![Enable delivery comparison](https://xp.odoohub.com.cn/en/stock/images/21.png) ### Enable User Permission After enabling the feature, also enable the carrier comparison technical feature on the user. ![Carrier comparison permission](https://xp.odoohub.com.cn/en/stock/images/22.png) ### Compare Rates On Delivery Orders After the previous steps, rate comparison can be used on delivery orders. ![Freight comparison on delivery order](https://xp.odoohub.com.cn/en/stock/images/23.png) Click Freight Comparison. ![Freight comparison wizard](https://xp.odoohub.com.cn/en/stock/images/24.png) In the comparison wizard, choose sender and recipient addresses, adjust weight and volume, and click Get Rate to retrieve carrier rates. The user can select the preferred carrier from the comparison results. The selected carrier is automatically filled back into the delivery order. ### Compare Rates On Sales Orders If users also need freight comparison on sales orders, enable Sales Delivery Extension and click Add Shipping on the sales order. ![Add shipping on sales order](https://xp.odoohub.com.cn/en/stock/images/26.png) ![Sales order freight comparison](https://xp.odoohub.com.cn/en/stock/images/28.png) The comparison behavior is almost the same as on delivery orders. After selecting the desired shipping method, Odoo fills it into the sales order. FAQ --- ### The returned rate is `-1` `-1` usually means an exception happened during rate retrieval. Check backend logs for details. Common causes include weight being zero, weight being less than the carrier minimum, or a carrier requiring weight greater than 1 kg. ### Validation error says the sales line is missing description Do not archive or delete the built-in product named Delivery Comparison Product. The comparison module may need it to create the required delivery line. Implementation Advice --------------------- Carrier comparison is useful when shipping cost changes frequently or when different carriers perform better for different routes, weights, or service levels. Start by integrating stable carriers first, then add comparison after the basic carrier flow is reliable. This chapter explained delivery method comparison. The next chapter explains inventory cost valuation, including standard price, average cost, and FIFO. results matching "" =================== No results matching "" ====================== --- # Chapter 12 Inventory Cost Valuation · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 12 Inventory Cost Valuation](https://xp.odoohub.com.cn/en/) ===================================================================== Chapter 12 Inventory Cost Valuation =================================== Odoo supports several costing and inventory valuation methods. The most common methods are Standard Price, Average Cost, and FIFO. This chapter explains where to configure costing methods and how the methods differ in real inventory operations. Costing is not only a finance topic. Product cost affects inventory value, sales margin, manufacturing cost, and management reports. Before go-live, finance, warehouse, and purchasing should agree on the cost method by product category. Configure Costing Method ------------------------ In Odoo 12 and earlier, costing method could be set directly on the product, and the system would fall back to the product category when the product did not define it. Since Odoo 13, Odoo moved this configuration to the product category. Product forms mainly reference the category setting. Costing method is configured on the product category. ![Costing method on product category](https://xp.odoohub.com.cn/en/stock/images/1.jpg) Common costing methods include: | Method | Meaning | | --- | --- | | Standard Price | Use the cost defined on the product | | Average Cost | Use weighted average cost | | FIFO | Use first-in-first-out valuation | Inventory valuation can be: | Valuation | Meaning | | --- | --- | | Manual | Accounting impact is handled manually | | Automated | Accounting entries are generated when stock moves happen | The next sections explain the three cost methods. Standard Price -------------- Create a BMW 320Li product and set its cost to 200,000. Set the BMW product category to Standard Price. ![BMW product cost](https://xp.odoohub.com.cn/en/stock/images/3.jpg) ![BMW category standard price](https://xp.odoohub.com.cn/en/stock/images/2.jpg) Then create a purchase order for 10 units at 250,000 each and receive them into stock. Because the product uses Standard Price, the cost of 320Li does not change after purchase. It remains 200,000 per unit. When checking inventory valuation, 10 units are valued at 2,000,000. ![Standard price valuation](https://xp.odoohub.com.cn/en/stock/images/4.jpg) This shows that Standard Price does not use purchase price changes to update inventory valuation. It uses the standard product cost. Standard Price is suitable when the company wants a controlled cost basis, or when purchase price changes should not automatically change product cost. Average Cost ------------ Now look at Average Cost. Use Audi A4L as an example. Set the initial cost to 0, then purchase 10 units at 210,000 each. After receipt, the cost becomes 210,000. ![Average cost first receipt](https://xp.odoohub.com.cn/en/stock/images/6.jpg) ![Average cost after first purchase](https://xp.odoohub.com.cn/en/stock/images/5.jpg) Then create a second purchase. Suppose the vendor has a promotion and each car is 20,000 cheaper. Purchase 20 units at 190,000 each. The average cost should be: (Existing stock value 2,100,000 + Incoming value 3,800,000) / (Existing quantity 10 + Incoming quantity 20) = 196,666.67 ![Average cost second receipt](https://xp.odoohub.com.cn/en/stock/images/7.jpg) Current inventory valuation: ![Average cost valuation](https://xp.odoohub.com.cn/en/stock/images/8.jpg) Average Cost changes after each receipt. The general formula is: New average cost = (Current stock value + Incoming stock value) / (Current quantity + Incoming quantity) Under Average Cost, selling one unit reduces inventory value by the same average cost. Sales delivery does not change the average cost itself. ### Internal Logic Of Average Cost In Odoo 12, `stock.move` had fields such as `remaining_qty` and `remaining_value` to store remaining quantity and value. From Odoo 13 onward, these fields were removed and Odoo introduced `stock.valuation.layer`. Stock valuation layers record the value impact of receipts, deliveries, and adjustments. They are important for tracing inventory value and explaining cost changes. FIFO ---- Finally, look at FIFO costing. Use Mercedes CLA 260L as an example. Do not set a starting cost. Purchase 10 units at 250,000 each. Inventory value becomes 2,500,000. ![FIFO first receipt](https://xp.odoohub.com.cn/en/stock/images/9.jpg) ![FIFO first valuation](https://xp.odoohub.com.cn/en/stock/images/10.jpg) Then purchase 20 units at 230,000 each. According to FIFO, the stock valuation after receipt should be: 2,500,000 + 4,600,000 = 7,100,000 ![FIFO second receipt](https://xp.odoohub.com.cn/en/stock/images/11.jpg) ![FIFO second valuation](https://xp.odoohub.com.cn/en/stock/images/12.jpg) Then sell one CLA 260 at 360,000. ![FIFO sale](https://xp.odoohub.com.cn/en/stock/images/13.jpg) According to FIFO, the outgoing unit is taken from the earliest incoming layer, whose cost is 250,000. After the sale, inventory value should be: 7,100,000 - 250,000 = 6,850,000 ![FIFO valuation after sale](https://xp.odoohub.com.cn/en/stock/images/14.jpg) Under FIFO, receipts and deliveries do not simply overwrite the product cost. Inventory value is calculated according to the sequence of valuation layers. Implementation Advice --------------------- Costing method should be decided before real transactions begin. | Scenario | Common Choice | | --- | --- | | Stable standard cost control | Standard Price | | Purchase prices fluctuate and average cost is acceptable | Average Cost | | Need first-in-first-out valuation or batch-like cost flow | FIFO | | Strict accounting integration | Automated valuation, after finance review | Do not change cost methods casually after go-live. Existing stock valuation, accounting entries, and sales margin reports may be affected. This chapter explained Standard Price, Average Cost, FIFO, and inventory valuation layers. With this, the warehouse management part has covered the core inventory flow from locations and transfers to replenishment, barcode operations, putaway, storage categories, delivery methods, and cost valuation. The next part moves into Manufacturing, where inventory is consumed and transformed into finished goods. results matching "" =================== No results matching "" ====================== --- # Chapter 1 Preparation Before Implementation · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 1 Preparation Before Implementation](https://xp.odoohub.com.cn/en/) ============================================================================= Chapter 1 Preparation Before Implementation =========================================== Many companies start an Odoo project by asking, "Which modules should we install?" This is not a bad question, but it is not enough. What really determines whether the project succeeds is often not where a button is located, but whether the business scope, data, and people are ready before go-live. This chapter does not discuss complex configuration yet. It focuses on the key things a company must clarify before starting a self-implementation. Understand The Role Of A Test Database -------------------------------------- A test database is not only for technical people. It is where business users can safely make mistakes. Every process should be tested in the test database before the company considers using Odoo as the production system. After entering Odoo, users usually see an application home page similar to the following: ![Odoo applications home](https://xp.odoohub.com.cn/en/implementation/images/implementation-apps-home.png) This page shows the installed applications, such as Sales, Invoicing, Apps, and Settings. During a self-implementation, do not enable every application immediately. Start with the smallest set of modules required by the company's main business flow. Step 1: Define The Go-Live Objective ------------------------------------ The go-live objective should be specific. Avoid broad statements such as "achieve digital management." For a small company implementing Odoo for the first time, the first objective can be simple. Good examples: * Sales orders, delivery, and invoicing are completed in Odoo; * The warehouse can see real-time inventory and pending deliveries; * Purchase orders and vendor bills can be linked; * Finance can perform bank reconciliation once a week; * Management can view sales revenue, receivables, and inventory value. Objectives that are not recommended for phase one: * Automating every process at once; * Eliminating every Excel file immediately; * Rebuilding every old report exactly as it was; * Starting with a large number of customized pages. The purpose of phase one is not perfection. It is to make the main process work. Step 2: Confirm The Main Business Flow -------------------------------------- Different companies have different core flows. Before implementation, first identify which type of company you are. | Company Type | First Main Flow | Priority Modules | | --- | --- | --- | | Trading and wholesale | Quotation -> Sales Order -> Purchase -> Receipt -> Delivery -> Invoice | Sales, Purchase, Inventory, Accounting | | Retail stores | Product -> POS checkout -> Inventory deduction -> Payment | POS, Inventory, Accounting | | Manufacturing | Sales forecast/order -> Bill of Materials -> Manufacturing -> Receipt -> Delivery | Sales, Inventory, Manufacturing, Purchase | | Service company | Customer -> Quotation -> Project/task -> Timesheet/expenses -> Invoice | CRM, Sales, Project, Timesheets, Accounting | | Cross-border eCommerce | Platform order -> Inventory -> Delivery -> Payment -> Reconciliation | Sales, Inventory, logistics integrations, Accounting | If the company has multiple business models, do not implement all of them at once. Start with the flow that contributes the most revenue and is the most stable. Step 3: Prepare Master Data --------------------------- Master data is often underestimated before an Odoo go-live. The system itself can be configured quickly, but dirty data will make every later step painful. At minimum, prepare these lists: * Company data: company name, address, tax number, phone, email, bank accounts; * User data: each user's name, email, position, and required modules; * Customer data: customer name, contacts, phone, email, invoice address, delivery address; * Vendor data: vendor name, contacts, payment terms, purchase currency; * Product data: product name, internal reference, barcode, unit of measure, sales price, cost, product category; * Inventory data: warehouses, locations, current stock quantity, lots or serial numbers; * Accounting data: opening receivables, opening payables, bank balances, taxes, chart of accounts. Do not move every field from the old system into Odoo. Keep the fields required by the business first. Additional fields can be added after the main process is stable. Step 4: Install The Minimum Required Modules First -------------------------------------------------- In Odoo, applications are installed from **Apps**. ![Apps installation page](https://xp.odoohub.com.cn/en/implementation/images/implementation-apps.png) The test database may show many applications, such as CRM, Website, Inventory, Purchase, Point of Sale, Manufacturing, and Employees. New users often want to install everything they see. This usually makes the system more complicated, not more useful. Recommended phase-one modules: * If there is a sales process, install Sales; * If there is a purchase process, install Purchase; * If inventory must be managed, install Inventory; * If payments and invoicing are needed, install Invoicing or Accounting; * If there are retail stores, install Point of Sale; * If production or assembly is required, install Manufacturing. For phase one, avoid installing too many marketing, HR, website, or automation modules unless they are part of the current main business flow. Step 5: Set Company, Users, And Language ---------------------------------------- Basic configuration usually starts from **Settings**. ![Settings page](https://xp.odoohub.com.cn/en/implementation/images/implementation-settings.png) Handle these items first: * Is the company information correct? * Has the document layout been configured? * Does the system language match user habits? * Have users been invited? * Are permissions assigned by job role? * Do units of measure, currencies, and taxes match the business? Do not let every employee use the administrator account. The administrator account should be used for configuration and maintenance. Daily business testing should be done with normal user accounts. Step 6: Define Permission Roles ------------------------------- Permissions should be designed by job role, not assigned randomly by individual. Common roles can be separated as follows: * Owner or manager: views reports and approvals, but may not enter daily documents; * Sales: customers, quotations, sales orders; * Purchase: vendors, requests for quotation, purchase orders; * Warehouse: receipts, deliveries, internal transfers, inventory adjustments; * Finance: invoices, payments, reconciliation, reports; * Store staff: POS checkout, returns, session closing; * Administrator: system settings, application installation, user permissions. The principle is simple: enough permission to do the job, but not more than necessary. Too much access increases the risk of accidental deletion or incorrect changes. Too little access prevents the process from running. Step 7: Prepare Test Cases -------------------------- Test cases do not need to be complicated, but they must reflect real business. Each module should have at least three types of tests: * Normal process: for example, create a quotation, confirm the order, deliver, invoice, and receive payment; * Exception process: for example, cancel an order, partially deliver, return goods, or refund; * Permission process: verify what normal employees can and cannot do. If all testing is done only by the administrator, it is not real testing. Pre-Go-Live Check ----------------- Before formal go-live, confirm at least the following: * Company information, taxes, currencies, and bank accounts are configured; * Customers, vendors, and products have been imported and spot-checked; * Opening inventory and opening accounting balances are confirmed; * Key users have logged in and completed their own process tests; * At least one complete Sales, Purchase, Inventory, and Accounting chain has been tested; * Important reports are understandable and the data definitions are confirmed; * Administrator account, backup method, and email sending are confirmed; * The cutover date between the old system and Odoo is clear. Common Pitfalls --------------- * Trying to make Odoo exactly the same as the old system from day one, causing unnecessary customization; * Importing uncleansed data, resulting in many duplicate products, customers, and vendors; * Finance joining the project too late, causing reconciliation and reporting definitions to be inconsistent; * Testing only with the administrator account and not with real employee permissions; * Not testing returns, refunds, cancellations, partial receipts, or partial deliveries in the test database; * Not defining the exact date when Odoo becomes the official system. When To Ask For A Consultant ---------------------------- For standard Sales, Purchase, Inventory, and Accounting flows, customers can first follow this manual and test by themselves. However, the following situations should be evaluated with a consultant or developer: * Multi-company, multi-warehouse, and multi-currency are implemented at the same time; * Integrations are required with eCommerce platforms, logistics providers, payment systems, or external accounting systems; * A large amount of historical data must be migrated; * Complex approvals, price calculations, commissions, or rebates are needed; * Native reports cannot satisfy management or finance reporting definitions; * Permissions must be extremely detailed, such as field-level or store-level restrictions. Odoo is flexible, but flexibility does not mean every requirement should be customized on the first day. The first principle of self-implementation is: make the native flow work first, then decide where optimization is truly worthwhile. results matching "" =================== No results matching "" ====================== --- # Chapter 5 Product Basics · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 5 Product Basics](https://xp.odoohub.com.cn/en/) ========================================================== Chapter 5 Product Basics ======================== Odoo natively uses one product record system to connect Sales, Purchase, Inventory, Manufacturing, POS, eCommerce, and Accounting. When a company implements Odoo for the first time, product data is often one of the most important and most underestimated types of master data. A product is not just a "product name." Product type affects whether inventory is deducted. Product category affects reporting and accounting rules. Units affect purchase and stock quantities. Barcodes affect POS and warehouse scanning. Prices and taxes affect quotations, invoices, and margins. This chapter explains how to understand native Odoo product data and how to design product master data before go-live. Why Products Matter ------------------- In Odoo, the same product can appear across many business steps: Sales quotation -> Sales order -> Delivery -> Invoice -> Payment Purchase RFQ -> Purchase order -> Receipt -> Vendor bill -> Payment Inventory count -> Transfer -> Lots and serial numbers -> Cost valuation POS checkout -> Website shop -> Manufacturing BOM -> Project service invoicing If product data is wrong, the impact is not limited to one page. It affects the whole business chain. Common consequences: * Physical goods are created as services, so inventory does not decrease after sale; * Service items are created as goods, so the system asks the warehouse to deliver them; * Unit settings are wrong, so purchase receipt and sales delivery quantities do not match; * Taxes are wrong, so invoice amounts and tax amounts are wrong; * Product categories are messy, so sales analysis, inventory valuation, and accounting accounts are hard to separate; * Variants are abused, causing the number of products to explode and making selection difficult; * Barcodes are duplicated, causing POS or warehouse scanning errors. Product master data should be designed carefully before go-live. It is not recommended to create products temporarily while entering formal orders. Open The Product List --------------------- After installing the Sales application, open products from **Sales -> Products -> Products**. ![Product list](https://xp.odoohub.com.cn/en/basic/images/basic-cn-products.png) Products can also be opened from Purchase, Inventory, POS, Manufacturing, eCommerce, and other modules. Different entries use the same product data behind the scenes. Create A Product ---------------- Click **New** to create a product. ![Product form](https://xp.odoohub.com.cn/en/basic/images/basic-cn-product-form.png) For phase one, maintain the key fields first. Do not fill every field from the beginning, and do not import a large amount of unconfirmed data just to make the product list look complete. Product Template And Product Variants ------------------------------------- Before understanding products, distinguish two concepts: | Concept | Description | Example | | --- | --- | --- | | Product template | Shared data for a product family | T-shirt | | Product variant | Specific attribute combination under a template | Red/M T-shirt, Blue/L T-shirt | If a product has no color, size, or specification differences, it can be used as a normal product. If it has attributes such as color, size, capacity, or material, variants may be considered. Variants are suitable for: * Clothing color and size; * Phone capacity and color; * Food specifications; * Material thickness and dimensions; * Different packaging specifications of the same item. Do not abuse variants for: * One customized item per customer; * Different specifications for every order; * Only making product names shorter; * Many attribute combinations but very few actually sold; * Classification only, not inventory or price differentiation. Variants affect sales, purchase, inventory, barcodes, images, prices, and statistics. If unsure in phase one, first run the process with normal products, then plan variants. Basic Product Fields -------------------- | Field | Description | Recommendation | | --- | --- | --- | | Product name | Internal and external display name | Required; keep naming stable | | Sales | Whether the product can appear on sales orders | Enable for sellable items | | Purchase | Whether the product can appear on purchase orders | Enable for purchasable items | | Product type | Goods, service, or combo | Affects inventory and business process | | Sales price | Default price on sales orders | Spot-check before go-live | | Cost | Used for cost and margin analysis | Confirmed by finance or purchase | | Sales tax | Tax on customer invoices | Confirmed by finance | | Purchase tax | Tax on vendor bills | Confirmed by finance | | Category | Product grouping and accounting/inventory rules | Do not put everything into the default category | | Internal reference | Internal code or SKU | Should be unique | | Barcode | POS, warehouse scanning, quick search | Required if scanning is used | Product codes, names, and categories should be standardized before import. Avoid having the same product written as "iPhone Case," "IPHONE shell," and a local-language variant at the same time. Product Type ------------ Product type determines whether the product participates in inventory and how later business documents flow. | Type | Suitable Scenario | Impact | | --- | --- | --- | | Goods | Stocked products, raw materials, finished goods | Participates in receipts, deliveries, inventory counts, and inventory analysis | | Service | Consulting, installation, freight, labor service | Usually does not generate stock moves | | Combo | Packages or bundle sales | Suitable for specific bundle scenarios | If a product needs inventory management, it should usually be **Goods**. If it is consulting, installation, freight, labor, or another item that does not require stock movement, it should usually be **Service**. Important judgment: what the customer calls a "product" is not always a stockable product. Installation fees, freight, design fees, and service fees may appear on quotations, but they should not make the warehouse deliver anything. Can Be Sold And Can Be Purchased -------------------------------- The **Sales** and **Purchase** options on the product form decide whether the product is used in the corresponding process. | Selection | Suitable Scenario | | --- | --- | | Sales only | Sold but not purchased, such as service products | | Purchase only | Purchased but not sold, such as office supplies | | Both Sales and Purchase | Trading goods that can be bought and sold | | Neither | Paused or internal reference data | If a product cannot be selected on a sales order, first check whether Sales is enabled. If it cannot be selected on a purchase order, first check whether Purchase is enabled. For products that are no longer used, do not delete them directly. Disable Sales and Purchase or archive the product to avoid affecting historical orders and reports. Sales Price, Cost, And Margin ----------------------------- Sales price is the default unit price on sales orders. Cost is used for margin analysis, inventory valuation, and business decisions. Common ownership: | Field | Confirmed By | Impact | | --- | --- | --- | | Sales price | Sales or operations | Quotation and order amount | | Cost | Purchase, warehouse, or finance | Margin, inventory value, cost analysis | | Sales tax | Finance | Customer invoice tax amount | | Purchase tax | Finance | Vendor bill tax amount | Do not let sales maintain cost alone, and do not let finance ignore product taxes. Product price, cost, and taxes should be spot-checked before go-live. If the company has complex pricing, such as customer-level prices, wholesale prices, member prices, channel prices, or tiered prices, use pricelists instead of creating duplicate products. Product Categories ------------------ Product category is not just a category name. It can also affect inventory valuation, accounting accounts, and reporting statistics. For phase one, consider categories such as: * Finished goods; * Raw materials; * Packaging materials; * Services; * Freight; * POS goods; * Spare parts; * Consumables. Do not put every product into one "All" category. Later inventory and finance analysis will become hard to separate. Category design suggestions: | Principle | Description | | --- | --- | | Not too broad | If everything is in one category, reports cannot analyze properly | | Not too detailed | One category per product creates high maintenance cost | | Discuss with finance | Categories may affect accounts and inventory valuation | | Discuss with warehouse | Categories affect inventory statistics and replenishment judgment | | Discuss with sales | Categories affect sales analysis and product filtering | If inventory valuation and accounting integration are enabled, product categories become more important. Finance must confirm them before go-live. Units Of Measure ---------------- Product units affect sales quantities, purchase quantities, inventory quantities, and prices. Common units: * Piece; * Box; * Kilogram; * Meter; * Set; * Hour; * Time. Before go-live, confirm: | Question | Example | | --- | --- | | Are sales unit and inventory unit the same? | Sold by box, stocked by piece | | Are purchase unit and inventory unit the same? | Purchased by kilogram, stocked by gram | | Is packaging needed? | One box contains 24 pieces | | Is a second unit needed? | Fabric managed by both meters and kilograms | Do not change units casually. After sales, purchase, or inventory documents exist, changing units affects the interpretation of historical quantities. For stock products, unit rules should be finalized before production go-live. If the business has complex unit conversion, do not solve it only by writing notes in the product name. Evaluate Odoo units, packaging, or a custom solution first. Packaging And Barcodes ---------------------- Barcodes are commonly used for: * POS checkout; * Warehouse receiving scan; * Warehouse delivery scan; * Inventory counts; * Quick product search. One barcode should not correspond to multiple products, otherwise scanning becomes confusing. Packaging is useful for scenarios such as "how many pieces in a box" or "how many units in a pack." For example, the inventory unit may be piece, while purchase and sales often happen by box. In this case, packaging or unit conversion should be planned, instead of only writing "24 pieces per box" in the product name. Before go-live, confirm: | Check Item | Description | | --- | --- | | Barcode uniqueness | One barcode corresponds to one product or one variant | | Barcode source | Manufacturer barcode, internal barcode, or newly generated code | | Packaging rules | Whether boxes, packs, pallets, and quantities are fixed | | POS display | Whether stores need images and short names | | Warehouse scanning | Whether receiving, delivery, and inventory count use scanning | Sales Tab And Invoicing Policy ------------------------------ Sales-related fields on the product form affect sales orders and invoices. Common invoicing policies: | Invoicing Policy | Description | Suitable Scenario | | --- | --- | --- | | Ordered quantities | Invoice based on confirmed sales order quantity | Standard product sales, advance invoicing | | Delivered quantities | Invoice based on actual delivered quantity | Partial delivery, service delivered before invoicing | Different businesses should use different invoicing policies. For example, a service project may want to invoice based on delivered milestones, while standard goods may invoice based on ordered quantity. If the customer often ships and invoices partially, test the product invoicing policy together with the sales flow. Purchase And Vendor Prices -------------------------- Purchasable products usually need vendor information. Vendor prices can record: * Vendor; * Minimum purchase quantity; * Purchase price; * Lead time; * Vendor product code; * Vendor product name; * Currency. This information affects default prices and lead times on purchase orders. If the company wants automatic replenishment, purchase by vendor, or purchase price analysis, sales price alone is not enough. Inventory Tracking And Replenishment ------------------------------------ If goods enter inventory management, tracking and replenishment should also be considered. Common questions: | Question | Description | | --- | --- | | Is inventory managed? | Not every product needs stock quantity | | Is lot tracking needed? | Common for food, medicine, and materials | | Is serial number tracking needed? | Common for equipment, phones, and valuable goods | | Is safety stock needed? | Notify or replenish when stock is below a level | | Is automatic purchase needed? | Whether shortage should trigger purchase demand | These topics are explained in the Inventory chapters. In the product chapter, remember one point: inventory behavior is not decided only by warehouse operations. Product master data already determines many inventory behaviors. Routes, Replenishment, And Manufacturing ---------------------------------------- After installing Inventory, Purchase, Manufacturing, and related apps, route and replenishment settings may appear on products. They decide whether the system should suggest purchase, manufacturing, transfer, or make-to-order replenishment when there is demand or shortage. Common route meanings: | Route | Business Meaning | Common Scenario | | --- | --- | --- | | Buy | Needs purchase from vendor | Trading goods, raw materials | | Manufacture | Needs manufacturing order | Finished goods, semi-finished goods | | Replenish on Order | Replenish only after sales demand exists | Non-stocked or customized products | | Dropship | Vendor ships directly to customer | Goods not passing through company warehouse | Do not judge routes only by field name. Evaluate the actual delivery method. The same product may be delivered from stock for normal sales, purchased on order for special customers, or dropshipped in cross-border business. Wrong routes may cause purchase suggestions or manufacturing orders not to generate, or may trigger incorrect warehouse flows. If the product is related to manufacturing, further confirm BOMs, routings, semi-finished goods, raw material units, and scrap logic. If product master data is unclear, MRP planning is usually inaccurate. Products And Accounting Rules ----------------------------- Products affect finance, but in real projects it is usually not recommended to configure complex accounting accounts on every product. A more common approach is to manage accounting rules through product categories first, then adjust a few special products separately. Finance should confirm: | Item | Impact | | --- | --- | | Sales tax | Customer invoice tax amount | | Purchase tax | Vendor bill tax amount | | Income account | Sales revenue collection | | Expense account | Purchase cost or expense collection | | Inventory valuation account | Used when automatic inventory valuation is enabled | | Costing method | Standard cost, average cost, FIFO, and related cost logic | If the company only wants to run Sales, Purchase, and Inventory first, confirm taxes, categories, and costs. If phase one includes inventory valuation and automated accounting entries, product categories and accounting accounts must be designed before large amounts of inventory are entered. Products In POS And Website Shop -------------------------------- If the company uses POS or Website/eCommerce, products also affect front-end display. POS commonly cares about: * Whether the product is available in POS; * Whether barcode is correct; * Whether product image is clear; * Whether product category helps cashiers find it quickly; * Whether price and tax are correct; * Whether it participates in promotions, member prices, or gift card rules. Website shop commonly cares about: * Whether the product is published on the website; * Product images and details; * Variant selection; * Inventory display; * Freight and weight; * SEO information; * Whether it participates in coupons, promotions, and member prices. If the same product is used in backend sales, POS, and website, align naming, images, prices, and inventory strategy in advance. Product Images -------------- Product images are not required, but they are helpful for POS, website shops, and sales presentation. Recommendations: * Upload images for POS and website products when possible; * Internal consumables can skip images; * Use moderate image sizes and avoid very large originals; * Keep image style consistent for similar products. Bigger images are not always better. Oversized images may slow down website and POS loading. Product Coding Rules -------------------- Product code is also called internal reference or SKU. Codes should be unique, stable, and readable. Recommended principles: * One product or variant has one code; * Do not put too much meaning into the code; * Do not frequently change codes that are already used; * Use the same code across systems when possible; * Deduplicate before import. Not recommended: * Using vendor codes directly as internal codes, because different vendors may duplicate them; * Using product name abbreviations as unique codes, which easily conflicts later; * Putting color, size, vendor, year, and category into one very long code; * Having no code and identifying products only by name. If the company connects to eCommerce, POS, barcode warehouse, external ERP, or accounting systems, coding rules are especially important. Product Data Design Sequence ---------------------------- When preparing product data for the first time, follow this sequence: 1. Define product scope and remove clearly inactive or invalid data; 2. Standardize product names and internal references; 3. Distinguish goods, services, and combos; 4. Confirm can be sold and can be purchased; 5. Design product categories; 6. Confirm units and packaging; 7. Confirm sales price, cost, sales tax, and purchase tax; 8. Prepare barcodes and images; 9. Decide whether variants are needed; 10. Decide whether routes, replenishment, lots, or serial numbers are needed; 11. Import into the test database and spot-check. Do not import all historical products at the beginning. It is better to import the valid products that are still being sold, purchased, and stocked. results matching "" =================== No results matching "" ====================== --- # Chapter 5 Quality Checks · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 5 Quality Checks](https://xp.odoohub.com.cn/en/) ========================================================== Chapter 5 Quality Checks ======================== Quality checks help companies verify production quality during manufacturing. Instead of relying only on manual memory or paper inspection records, Odoo can attach quality checkpoints to manufacturing operations so operators must complete checks before finishing work. This chapter introduces a simple manufacturing quality check flow: enable quality checks, create a quality control point, create a manufacturing order, and complete the work order after the quality check passes. Enable Quality Checks --------------------- First, enable quality checks in Manufacturing settings. ![Enable quality checks](https://xp.odoohub.com.cn/en/chapter5/images/1.png) Quality checks should be enabled only when the company really wants inspections to be part of the production process. If the team only needs occasional comments, a full quality workflow may be more than necessary. Create A Quality Control Point ------------------------------ After enabling the feature, the Quality app appears on the home screen. Open the Quality app and create a quality control point. ![Create quality control point](https://xp.odoohub.com.cn/en/chapter5/images/2.png) Important fields include: | Field | Meaning | | --- | --- | | Product | The product that requires quality inspection | | Operation | Select Manufacturing for production quality checks | | Work Center | The work center where the inspection should happen | The control point tells Odoo when a quality check should be generated. Create A Manufacturing Order ---------------------------- Create a new manufacturing order for the product. ![Manufacturing order](https://xp.odoohub.com.cn/en/chapter5/images/3.png) After opening the work order, Odoo asks the operator to perform the quality check. ![Quality check on work order](https://xp.odoohub.com.cn/en/chapter5/images/4.png) Only after the quality check passes does the Done button appear. ![Done after passing quality check](https://xp.odoohub.com.cn/en/chapter5/images/5.png) This behavior ensures that operators cannot complete the production step while skipping the required quality check. Implementation Advice --------------------- Quality checks should be designed with production managers and quality teams together. Do not create too many checks at the beginning. If every step requires too much input, operators may treat the system as a burden and bypass it. Start with the most important control points: * Key production operations. * High-risk products. * Products with customer quality requirements. * Steps where defects are expensive to fix later. This chapter introduced quality checks during manufacturing. The next chapter explains kit production and how Qingdao Ohm's solution extends traceability for kits that do not have real stock in native Odoo. results matching "" =================== No results matching "" ====================== --- # Chapter 1 Basic Concepts · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 1 Basic Concepts](https://xp.odoohub.com.cn/en/) ========================================================== Chapter 1 Basic Concepts ======================== This chapter introduces the basic concepts of Odoo Accounting. Three pillars support the accounting system: **Chart of Accounts**, **Journals**, and **Taxes**. If a company wants to create invoices in Odoo, these three areas must be configured first. Accounting Dashboard -------------------- When opening the Accounting app, the first screen is the **Accounting Dashboard**. ![Accounting dashboard](https://xp.odoohub.com.cn/en/account/images/AC1.png) The dashboard lists the journals currently available in the system. Each journal card gives users quick access to common operations such as invoices, bills, bank transactions, and configuration. Fiscal Localization ------------------- When a database is created, Odoo asks for the company's country. When Accounting is installed, Odoo installs the accounting localization package for that country. The current localization package can be checked under Accounting settings. ![Fiscal localization](https://xp.odoohub.com.cn/en/account/images/AC2.png) This setting disappears after the first journal entry is created, including draft entries. Localization packages usually provide default accounts, taxes, fiscal positions, reports, and other country-specific accounting data. Do not remove them casually unless finance has reviewed the impact. Accounting Roles ---------------- Common internal accounting roles include: | Role | Responsibility | | --- | --- | | Account Assistant | Organizes customer/vendor invoices, handles bank statements, and tracks payment validation | | Account Manager | Validates customer/vendor bills, processes payments, and generates ledger reports | | CFO | Reviews trial balance, profit and loss, analytic accounting, and budgets | Common external roles include: | Role | Responsibility | | --- | --- | | Chartered Accountant | Audits financial statements, makes adjustments, and finalizes closed accounting records | | Auditor | Reviews whether transactions are authentic and reasonable | | Authority | Government or regulatory body checking tax and financial compliance | The relationship between company finance roles and regulators can be illustrated as: ![Accounting roles](https://xp.odoohub.com.cn/en/account/images/AC5.png) Accounts And Chart Of Accounts ------------------------------ The chart of accounts can be reviewed from the accounting dashboard or Accounting configuration. ![Chart of accounts entry](https://xp.odoohub.com.cn/en/account/images/AC3.png) The account list shows all accounts available for the company. ![Account list](https://xp.odoohub.com.cn/en/account/images/AC4.png) Existing accounts can be adjusted when needed, but account type changes must be handled carefully. ### Account Types Common account types include: | Type | Meaning | | --- | --- | | Equity | Owner or shareholder equity | | Fixed Assets | Long-term assets such as buildings and vehicles | | Liability | Obligations the company must pay later, such as vendor bills | | Current Assets | Short-term assets such as customer receivables | | Bank and Cash | Bank accounts and cash assets | | Income | Revenue from company operations | | Expense | Costs and expenses from company operations | ### Reconciliation An account can allow reconciliation. ![Allow reconciliation](https://xp.odoohub.com.cn/en/account/images/AC6.png) Reconciliation means journal items on this account can be matched with payments or bank statement lines. Accounts that allow reconciliation should normally be receivable or payable accounts. ### Updating Accounts If account settings need to be updated, import/update is often safer for bulk changes. Do not change account types casually. For example, changing a Receivable account into a Payable account can cause invoice errors such as: Any journal item on a receivable account must have a due date and vice versa. Journals -------- A **journal** records the result of business transactions. In Odoo, common journal types include: | Journal Type | Meaning | | --- | --- | | Sales | Customer invoice journal | | Purchase | Vendor bill journal | | Bank and Cash | Payment and bank transaction journal | | Miscellaneous | Other journal entries | All journal entries appear in the General Ledger. The Accounting Dashboard mentioned earlier displays the available journals. ### Configure Journals Click the More button on a journal card to configure the journal. ![Configure journal](https://xp.odoohub.com.cn/en/account/images/AC8.png) The journal configuration form contains different settings depending on journal type. ![Journal form](https://xp.odoohub.com.cn/en/account/images/AC9.png) For a Sales journal, common settings include: * Default income account. * Dedicated credit note sequence. * Short code. ![Sales journal settings](https://xp.odoohub.com.cn/en/account/images/AC10.png) Advanced settings include a lock option. If enabled, users cannot reset posted entries back to draft. ![Journal lock setting](https://xp.odoohub.com.cn/en/account/images/AC11.png) Purchase journals are similar to sales journals, but the default account is usually an expense account. ![Purchase journal settings](https://xp.odoohub.com.cn/en/account/images/AC12.png) Miscellaneous journals are simpler and mainly include a short code setting. ![Miscellaneous journal](https://xp.odoohub.com.cn/en/account/images/AC13.png) Bank and cash journals have additional settings: * Bank account. * Suspense account, used before bank transactions are reconciled. * Profit account for cash difference gains. * Loss account for cash difference losses. * Dedicated payment sequence. * Account number. * Bank statement source: manual, import, or automatic synchronization. ### Change Journal Order To change the display order of journals on the dashboard, drag journal rows in the journal list. ![Change journal order](https://xp.odoohub.com.cn/en/account/images/AC14.png) ### Creation Principle Odoo allows many journals, but sales and purchase journals should usually be kept minimal. For ordinary sales and purchase flows, Odoo often uses the first suitable sales or purchase journal. Other strategies, such as binding journals with sales teams, can be designed separately when needed. Opening Balances ---------------- Opening balances can be imported with an Excel template. Before importing opening balances, confirm the chart of accounts, partners, receivable/payable accounts, and fiscal year opening date with finance. This chapter introduced the accounting dashboard, localization, roles, chart of accounts, journals, and opening balance considerations. The next chapter explains customer and vendor invoicing. results matching "" =================== No results matching "" ====================== --- # Chapter 7 Kit Production · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 7 Kit Production](https://xp.odoohub.com.cn/en/) ========================================================== Chapter 7 Kit Production ======================== Serial-Based Kit Traceability ----------------------------- Native Odoo kit BoMs do not create real stock for the kit product itself. The kit is exploded into its components during delivery or consumption. This is efficient, but it creates a traceability challenge in some scenarios: the business may still want to track which component lots or serial numbers were used for a specific kit sold to the customer. Based on this need, Qingdao Ohm's manufacturing solution adds kit traceability support. This chapter explains the usage flow. Product Setup ------------- Suppose the company sells an assembled computer. Its BoM contains two components: a keyboard and a monitor. Set the BoM type to Kit. ![Kit BoM](https://xp.odoohub.com.cn/en/chapter5/images/6.png) Set the assembled computer route to Manufacture. ![Manufacture route](https://xp.odoohub.com.cn/en/chapter5/images/7.png) In native Odoo, a kit does not normally become stock as a finished product. The components are what actually move through inventory. Sales Order ----------- Create a sales order for the assembled computer. ![Sales order for kit](https://xp.odoohub.com.cn/en/chapter5/images/8.png) The sales order line includes a kit lot or serial field. Enter the serial number of the assembled computer and confirm the order. This creates a traceable relationship between the sold kit identity and its later component lots. Delivery -------- Open the delivery order. The assembled computer is split into its components for delivery. ![Kit components on delivery](https://xp.odoohub.com.cn/en/chapter5/images/9.png) Enter the lot or serial number for each component, then validate the delivery. Component Traceability ---------------------- After delivery, open the lot or serial record of the assembled computer. The related component lots are shown. ![Component lots linked to kit](https://xp.odoohub.com.cn/en/chapter5/images/10.png) The component lot also shows the related finished product serial number. ![Finished kit linked from component](https://xp.odoohub.com.cn/en/chapter5/images/11.png) With this enhancement, even though the kit product does not have real inventory in native Odoo, the business can still trace which components were used for each sold kit. Implementation Advice --------------------- Kit traceability is useful when customers need after-sales support, warranty analysis, or component recall tracking for bundled or assembled products. Before enabling this kind of enhancement, confirm: * Whether the kit product needs its own visible serial number. * Which components require lot or serial tracking. * Whether the warehouse team can reliably enter component lots during delivery. * Whether after-sales users need to search from kit to components or from component to kit. This chapter explained serial-based kit traceability. The next part moves into Accounting, where invoices, payments, statements, journals, and financial reports connect with sales, purchase, inventory, and manufacturing. results matching "" =================== No results matching "" ====================== --- # Chapter 2 Invoicing · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 2 Invoicing](https://xp.odoohub.com.cn/en/) ===================================================== Chapter 2 Invoicing =================== This chapter explains how Odoo creates customer invoices and vendor bills, how invoice accounts are determined, how credit notes work, and how payment terms and invoice numbering should be understood. Customer Invoices ----------------- Start with a sales order. ![Sales order before invoice](https://xp.odoohub.com.cn/en/account/images/AC15.png) After confirming the order, create an invoice. The account used on invoice lines is determined by product and accounting configuration. ![Customer invoice](https://xp.odoohub.com.cn/en/account/images/AC16.png) Odoo checks accounting properties in this order: 1. Product income or expense account. 2. Product category account. 3. Journal default account. If the product does not define an income account, Odoo uses the product category setting. If the product category is also empty, the journal default setting may be used. ### Product Invoicing Policy As explained in the Sales section, product invoicing policy determines when a sales order can be invoiced. | Policy | Meaning | | --- | --- | | Ordered quantities | Invoice can be created without delivery | | Delivered quantities | Delivery must be completed before invoiceable quantity appears | On sales order lines, green text usually indicates that the line can be invoiced. Otherwise, it is not yet invoiceable. ### Notes Sales order lines can include sections and notes. Sections and notes are usually carried into invoice lines together with the nearest product line. Credit Notes ------------ If the company needs to refund a customer, create a **Credit Note** from the posted invoice. Open the invoice and click Credit Note. ![Create credit note](https://xp.odoohub.com.cn/en/account/images/AC17.png) Confirm the generated credit note. ![Credit note result](https://xp.odoohub.com.cn/en/account/images/AC18.png) Then complete the refund payment if money needs to be returned to the customer. ### Use A Different Sequence From INV The sales journal includes a setting to use a dedicated credit note sequence. ![Dedicated credit note sequence](https://xp.odoohub.com.cn/en/account/images/AC20.png) This lets refunds use a sequence different from ordinary customer invoices. ### Partial Refunds In Odoo 16 and earlier, refunds supported partial refund behavior. ![Partial refund in older versions](https://xp.odoohub.com.cn/en/account/images/AC22.png) In Odoo 17, partial refund was removed from this wizard and only full refund behavior is available in that specific flow. ![Refund in Odoo 17](https://xp.odoohub.com.cn/en/account/images/AC23.png) When version differences matter, test the exact target version before writing the final customer procedure. OCR Invoice Recognition ----------------------- Odoo can upload received invoices by scanning. Multiple invoices can be uploaded together, automatically split, and converted into vendor bills. ![OCR invoice upload](https://xp.odoohub.com.cn/en/account/images/AC24.png) To use OCR, enable it under **Accounting -> Settings -> Digitization**. ![Enable OCR](https://xp.odoohub.com.cn/en/account/images/AC25.png) With Documents, one file containing multiple invoices can be split into separate documents, then converted into vendor bills. Vendor Bills ------------ Vendor bills work similarly to customer invoices, but in the opposite direction. A supplier PDF can be uploaded, and Odoo can generate a vendor bill. ![Vendor bill from OCR](https://xp.odoohub.com.cn/en/account/images/AC26.png) Vendor bills affect payables, while customer invoices affect receivables. Payment Terms ------------- Payment terms define when the customer should pay. Create payment terms under **Accounting -> Configuration -> Payment Terms**. ![Payment terms menu](https://xp.odoohub.com.cn/en/account/images/AC27.png) If the company field is empty, the payment term can be used by all companies. If a company is set, only that company can use it. For example, create a payment term: 40% immediately and 60% after 30 days. ![Payment term setup](https://xp.odoohub.com.cn/en/account/images/AC28.png) In Odoo 16, payment term line types included Balance. In Odoo 17, this line type was removed. Create a customer invoice using this payment term. ![Invoice with payment term](https://xp.odoohub.com.cn/en/account/images/AC29.png) Review the generated journal entry. ![Journal items from payment term](https://xp.odoohub.com.cn/en/account/images/AC30.png) The journal items show two due-date lines: one due immediately and one due 30 days later. Customer Due Amounts -------------------- Customer due amounts can be viewed from partner reports, such as aged receivable. ![Aged receivable](https://xp.odoohub.com.cn/en/account/images/AC31.png) This helps finance follow up overdue balances. Default Terms And Conditions ---------------------------- Payment terms and conditions can be displayed on customer invoices. Odoo supports either text displayed on the invoice or an online terms link. Configure this under **Accounting -> Settings -> Customer Invoices -> Default Terms and Conditions**. ![Default terms and conditions](https://xp.odoohub.com.cn/en/account/images/AC32.png) Invoice Numbers --------------- By default, invoice numbers are continuous. If a gap appears in invoice numbering, the next invoice number may be displayed in red in list view. ![Invoice numbering gap](https://xp.odoohub.com.cn/en/account/images/2.png) The customer invoice journal contains invoice number configuration. ![Invoice number settings](https://xp.odoohub.com.cn/en/account/images/AC44.png) In Odoo 16 and earlier, invoice numbering used sequence objects. Odoo 17 changed the mechanism. This chapter is based on Odoo 17 behavior. By default, invoice numbers use a format such as: INV/2019/0001 The next number is generated by increasing the largest current sequence pattern. For example, if the current invoice is `INV/2019/001`, the next number becomes `INV/2019/002`. If the prefix is changed to `FACT`, and the database contains both `INV/2019/001` and `FACT/2019/001`, the next generated invoice may become `FACT/2019/002`. This may or may not match business expectations. Example: create two invoices in the customer invoice journal. ![Two invoices](https://xp.odoohub.com.cn/en/account/images/AC45.png) Rename `INV/2024/00002` to `SINV/2024/00001`. ![Rename invoice sequence](https://xp.odoohub.com.cn/en/account/images/AC46.png) Now both `INV` and `SINV` exist. The next invoice becomes `SINV/2024/00002`. ![Next invoice sequence](https://xp.odoohub.com.cn/en/account/images/AC47.png) Invoice numbering increments according to the most recently generated sequence pattern. ### Journal-Code-Based Invoice Numbering If the company wants invoice numbering to be strictly bound to the journal code rather than this semi-smart pattern, Qingdao Ohm's accounting solution adds journal-based invoice numbering. First enable the accounting extension in Ohm settings. ![Enable accounting extension](https://xp.odoohub.com.cn/en/account/images/48.png) Then enable journal-based invoice numbering under Accounting settings. ![Journal-based numbering option](https://xp.odoohub.com.cn/en/account/images/AC49.png) After that, new invoice numbers remain tied to the journal code. ![Journal-based invoice number](https://xp.odoohub.com.cn/en/account/images/AC50.png) This chapter covered customer invoices, credit notes, OCR, vendor bills, payment terms, terms and conditions, and invoice numbering. The next chapter explains customer and vendor payments. results matching "" =================== No results matching "" ====================== --- # Chapter 4 Customer Statements · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 4 Customer Statements](https://xp.odoohub.com.cn/en/) =============================================================== Chapter 4 Customer Statements ============================= For customers in regions such as Australia, India, and New Zealand, companies often need to send customer statements. Odoo installs the **Customer Statements** localization module, `l10n_account_customer_statements`, for some localizations. After installation, users can print a customer's statement from the customer record. ![Customer statement print](https://xp.odoohub.com.cn/en/account/images/AC51.png) The native module provides basic statement printing, but it is limited to the month of the print date. For example, if today is November 30, the statement covers November 1 to November 30. If printing on December 1, the statement only shows December 1 and does not include previous months. Send Statements By Email ------------------------ To make customer statement sending easier, Qingdao Ohm's customer statement solution adds email sending. Users can manually send statements to selected customers. ![Send statement by email](https://xp.odoohub.com.cn/en/account/images/STATEMENT.png) ![Statement email wizard](https://xp.odoohub.com.cn/en/account/images/STATEMENT2.png) Send Statements By Scheduled Action ----------------------------------- Many companies need to send customer statements periodically. The statement solution adds a scheduled action so the system can send statements regularly. ![Statement scheduled action](https://xp.odoohub.com.cn/en/account/images/STATEMENT3.png) By default, the scheduled action sends last month's statement to all customers based on the current date. To send a specified month, pass the `month` parameter. model.send_statements(month=-2) To send statements to specified customers, pass `partner_ids`. model.send_statements(partner_ids=[1, 2, 3]) Add Terms To Statements ----------------------- If the company wants to add notes or terms to customer statements, it can be configured in Qingdao Ohm's accounting solution. Go to **Accounting -> Settings -> Customer Statements**. ![Customer statement terms setting](https://xp.odoohub.com.cn/en/account/images/AC52.png) Enter the desired terms and content. The printed statement then shows the content. ![Statement with terms](https://xp.odoohub.com.cn/en/account/images/AC53.png) Implementation Advice --------------------- Customer statements are useful when customers buy repeatedly and pay periodically. Before enabling automated sending, confirm: * Which customer group should receive statements. * Which month or period should be included. * Whether statements should be sent manually or by schedule. * Which email template and sender should be used. * Whether statement terms or payment instructions are required. This chapter explained customer statement printing, email sending, scheduled sending, and statement terms. The next chapter explains journal sequence rules and inalterability errors. results matching "" =================== No results matching "" ====================== --- # Part 9 Website · Odoo Implementation Manual - Qingdao Ohm Network Technology [Part 9 Website](https://xp.odoohub.com.cn/en/) ================================================ Part 9 Website ============== Odoo Website is not only a page builder. In a full implementation, it is also the customer-facing entrance for portals, eCommerce, online quotations, online payments, newsletter subscription, shared documents, and self-service order tracking. For many companies, the website is where internal ERP data becomes visible to customers. This means implementation work must consider more than page design: portal permissions, access tokens, multi-company URLs, email templates, product images, and customer-facing order behavior all affect whether the experience feels professional and trustworthy. This part explains common website and portal scenarios in Odoo. We start from the customer portal, then cover eCommerce, access tokens, mailing lists, and sales portal signatures. Where native Odoo already works well, we keep the standard workflow. Where real projects need more control, we introduce optional Qingdao Ohm extensions as implementation accelerators. results matching "" =================== No results matching "" ====================== --- # Chapter 1 Inter-Company Purchasing · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 1 Inter-Company Purchasing](https://xp.odoohub.com.cn/en/) ==================================================================== Chapter 1 Inter-Company Purchasing ================================== Odoo supports business flows between multiple companies in the same database. This chapter introduces the typical inter-company purchasing scenario: one company creates a sales order, purchase order, invoice, or vendor bill, and Odoo automatically creates the corresponding document in the related company. This workflow is useful when a group has internal suppliers, internal customers, shared warehouses, or a purchasing center. Instead of asking users to manually enter the same transaction twice, Odoo can create the linked document automatically according to the selected inter-company rule. Enable Inter-Company Rules -------------------------- To use inter-company flows, first enable the multi-company setting. Go to **Settings > General Settings > Companies**, then enable the inter-company transactions option. ![Enable inter-company transactions](https://xp.odoohub.com.cn/en/chapter7/images/1.png) After selecting the option, click **Save**. ![Save settings](https://xp.odoohub.com.cn/en/chapter7/images/2.png) You can also configure inter-company behavior from the company settings page. ![Company inter-company settings](https://xp.odoohub.com.cn/en/chapter7/images/3.png) > Developer mode may be required to see all technical configuration options. Odoo supports several inter-company rule types: | Rule | Business Meaning | | --- | --- | | Synchronize invoices and bills | A customer invoice in one company can create a matching vendor bill in another company, and vice versa. | | Synchronize sales orders | A sales order to an internal company can create a purchase order draft in that company. | | Synchronize purchase orders | A purchase order from one company can create a sales order in the supplier company. | | Synchronize sales and purchase orders | Both sales-to-purchase and purchase-to-sales synchronization rules are enabled. | The correct choice depends on where your users naturally start the transaction. If the purchasing company starts from a purchase order, use purchase order synchronization. If the selling company starts from a sales order, use sales order synchronization. Synchronize Invoices And Bills ------------------------------ Synchronizing invoices and bills means that when Company A creates a customer invoice or vendor bill involving Company B, Odoo can automatically create the opposite accounting document in the related company. For example, assume Qingdao Ohm Network Technology enables an invoice and bill synchronization rule. When Qingdao Heisenberg Information Technology creates a customer invoice to Qingdao Ohm Network Technology, Odoo automatically creates a vendor bill under Qingdao Ohm Network Technology, with Qingdao Heisenberg Information Technology as the supplier. ![Customer invoice in one company](https://xp.odoohub.com.cn/en/chapter7/images/4.png) ![Generated vendor bill in the other company](https://xp.odoohub.com.cn/en/chapter7/images/5.png) This is especially useful for internal service fees, management fees, or cross-company sales where both sides need accounting documents but users should not maintain two records manually. Before using this flow in production, confirm that the chart of accounts, taxes, fiscal positions, journals, and partner records are correctly configured in both companies. Synchronize Sales Orders ------------------------ Synchronizing sales orders means that when one company creates a sales order to Company A, Odoo automatically creates a purchase order draft in Company A. If you want Odoo to confirm the generated purchase order automatically, enable the auto-validation option under the inter-company rule. Using Heisenberg as an example, when Heisenberg creates a sales order to Ohm Network, the system creates a purchase quotation under Heisenberg's purchasing menu. ![Sales order for an internal customer](https://xp.odoohub.com.cn/en/chapter7/images/6.png) ![Generated purchase quotation](https://xp.odoohub.com.cn/en/chapter7/images/7.png) This flow works well when the selling company is the operational starting point. The sales team confirms the internal sale, and the buying company receives a purchase document that can continue into receipt, bill control, and stock movement. Synchronize Purchase Orders --------------------------- Synchronizing purchase orders means that when one company creates a purchase order to Company A, Odoo automatically creates a sales order under Company A. For example, if Heisenberg creates a purchase order to Ohm Network, Odoo creates a sales order in Ohm Network with Heisenberg as the customer. ![Purchase order to an internal supplier](https://xp.odoohub.com.cn/en/chapter7/images/8.png) ![Generated sales order in the supplier company](https://xp.odoohub.com.cn/en/chapter7/images/9.png) This flow is often easier for companies where procurement is the starting point. Buyers place an internal purchase order, and the supplier company can process the generated sales order like a normal customer order. Synchronize Sales And Purchase Orders ------------------------------------- This option combines the previous two order synchronization rules. It allows Odoo to synchronize both sales-order-driven and purchase-order-driven flows. Use this carefully. In a real implementation, you should decide which company owns the starting document for each business process. If users create documents on both sides without clear rules, duplicate orders and confusing confirmations can appear quickly. Synchronize Lot And Serial Numbers Between Sales And Purchase ------------------------------------------------------------- By default, Odoo does not synchronize lot or serial numbers between companies in all practical inter-company scenarios. This means that if Company A is the supplier of Company B and delivers Product P with Serial Number S, that serial number may not automatically appear on Company B's purchase receipt. In that case, Company B still needs to enter the lot or serial number manually, just as it would when buying from an external supplier. This is acceptable for simple products, but it becomes tedious for high-value goods, regulated products, warranty-managed products, or serialized equipment. To solve this practical gap, our [General Solutions](https://xp.odoohub.com.cn/en/sections/SECTION10.html) include an inter-company rule extension. Go to **Settings > Ohm > Sales Features** and enable **Inter-Company Rule Extension**. After the module is installed, the lot and serial numbers used on the sales delivery order can be synchronized to the purchase receipt. ![Enable inter-company rule extension](https://xp.odoohub.com.cn/en/chapter7/images/10.png) With this extension, the receiving user can verify the physical lots or serial numbers against the purchase receipt directly, instead of entering each one again. This keeps the native Odoo process as the foundation while making the inter-company warehouse operation smoother for real business use. In this chapter, we reviewed the standard inter-company rules for invoices, bills, sales orders, and purchase orders. The next part moves from internal company collaboration to website and portal scenarios, where customers, vendors, and public users interact with Odoo from the outside. results matching "" =================== No results matching "" ====================== --- # Chapter 12 Secondary Units · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 12 Secondary Units](https://xp.odoohub.com.cn/en/) ============================================================ Chapter 12 Secondary Units ========================== What Is A Secondary Unit? ------------------------- In an ERP system, "quantity" and "unit of measure" look like very basic concepts. Sell 10 pieces, purchase 5 boxes, receive 3 rolls, deliver 20 sheets: one quantity plus one unit seems enough. But in many real industries, one quantity dimension is not enough. Examples: * Ladders are sold by piece, but the business also needs to record how many meters each piece is. * Fabric is purchased by roll, while purchasing and warehouse teams also care how many meters each roll contains. * Boards move by sheet, but quotation or analysis may need square meters. * Cartons ship by box, while customers and warehouse teams also care how many units are inside each box. * Processed parts are managed by piece, while quotation or production also cares about unfolded area, processing length, or weight. In these scenarios, piece, roll, box, and sheet are the main units used by Odoo's standard sales, purchase, inventory, and invoicing processes. Meter, square meter, inner quantity, unfolded quantity, and processing quantity are auxiliary business dimensions that are also important. We usually call this auxiliary dimension a secondary unit. It can also be understood as an auxiliary unit or business specification unit. ### Secondary Unit Does Not Replace The Main Unit The secondary unit is not meant to replace Odoo's native unit of measure system. Odoo standard units mainly support the core quantity basis: * Sales order quantity. * Purchase order quantity. * Stock move quantity. * Invoice quantity. * Quantity used for cost and inventory valuation. These quantities should usually remain stable, consistent, and accountable. Secondary unit solves another problem: when the business needs to record another auxiliary dimension at the same time, how should the system express it? Example on a sales order: Sales quantity: 4 pieces Secondary quantity per piece: 2.5 meters Total secondary quantity: 10 meters The Odoo main quantity is still 4 pieces. Sales, inventory, and invoicing can continue to run by piece. The 10 meters expresses the length that the customer cares about, the internal handover specification, or the auxiliary dimension needed for reporting. ### Why Not Use Native Unit Conversion For Everything? Odoo native unit conversion is very useful for standard conversions within the same unit category: * 1 box = 24 units. * 1 meter = 100 centimeters. * 1 ton = 1,000 kilograms. But secondary units often are not such simple conversions. They may not belong to the same unit category as the main quantity, and each product may have its own business rule. For example, "one piece" can mean completely different lengths, areas, or unfolded quantities for different products. "One roll" may have a different length that must be entered during purchase or receipt. If this is forced into native unit conversion, several problems may appear: * Main stock quantity basis becomes unstable. * Sales, purchase, and invoicing quantities become unclear. * Business specifications differ by product and are hard to express consistently. * Quotation, warehouse, and customer communication still require many notes. A safer approach is to keep the main unit for Odoo's standard processes and use secondary units as an independent auxiliary business dimension. What Problems Secondary Units Solve ----------------------------------- Secondary units are suitable when the main quantity supports business flow but cannot fully express business specifications. Typical value includes: * Sales orders can show purchase quantity and specification quantity at the same time. * Purchase orders can record supplier delivery specifications. * Inventory transfers can keep planned quantity and actual auxiliary quantity. * Reports can analyze length, area, inner quantity, and other business dimensions. * Notes, spreadsheets, and manual communication are reduced. The core value is not "one more field." It turns business information from unstructured notes into structured data that can be validated, calculated, transferred, and reported. Implementation Pattern ---------------------- Qingdao Ohm's secondary unit solution is a business enhancement built on top of Odoo's native unit system. It does not replace native UoM, and it does not change Odoo's standard sales, purchase, inventory, and invoicing quantity chain. Instead, it adds a configurable, validated, calculated, and transferable auxiliary quantity dimension outside the main quantity. It can be summarized as: Main quantity: standard system quantity Example: 10 pieces, 5 rolls, 3 boxes Secondary quantity: auxiliary business quantity per main unit Example: 2.5 meters per piece, 80 meters per roll, 24 units per box Total secondary quantity: main quantity x standardized secondary quantity Example: 10 pieces x 2.5 meters per piece = 25 meters This pattern fits companies whose main quantity can support Odoo's standard process, but whose daily business still needs to record specification, length, area, inner quantity, or processing quantity. Core Features ------------- ### 1\. Product-Level Secondary Unit Configuration The solution supports enabling secondary quantity on products and configuring rules: * Whether secondary quantity is enabled. * Secondary unit, such as meter, square meter, unit, package, and so on. * Minimum secondary quantity allowed per main unit. * Maximum secondary quantity allowed per main unit. * Secondary quantity step. * Secondary quantity rounding method. Product-level configuration turns business experience into system rules. For example, if a product length must increase by 0.5 meters, the system can standardize the input according to configuration and avoid inconsistent manual values. ![Product-level secondary unit configuration](https://xp.odoohub.com.cn/en/sale/images/SEC_UNIT_1.png) ### 2\. Secondary Quantity On Sales Orders Users can enter secondary quantity on sales order lines. ![Secondary quantity on sales order](https://xp.odoohub.com.cn/en/sale/images/SEC_UNIT_2.png) Example: Sales quantity = 10 rolls Secondary quantity per roll = 10 meters Total secondary quantity = 100 meters The sales quantity is still the Odoo standard quantity of 10 rolls. The secondary quantity helps express specification, quotation basis, customer confirmation, or report analysis. This keeps the standard sales process while making the sales document more accurate. ### 3\. Secondary Quantity On Purchase Orders Purchase order lines can also use secondary quantity. Purchase quantity = 6 rolls Secondary quantity per roll = 80 meters Total secondary quantity = 480 meters ![Secondary quantity on purchase order](https://xp.odoohub.com.cn/en/sale/images/SEC_UNIT_3.png) Purchasers can enter the main quantity according to the supplier's delivery method and record auxiliary quantity at the same time. This is very useful for fabric, rolls, boards, packaging materials, and similar industries. If needed, purchase secondary quantity can continue into the receipt process and reduce information gaps between purchasing and warehouse teams. ### 4\. Secondary Quantity On Inventory Transfers Inventory supports secondary quantity at both planned transfer and actual operation levels. Example: Planned delivery = 10 boxes Secondary quantity per box = 24 units Planned total secondary quantity = 240 units Actual completed = 8 boxes Secondary quantity per box = 24 units Actual total secondary quantity = 192 units ![Secondary quantity on inventory transfer](https://xp.odoohub.com.cn/en/sale/images/SEC_UNIT_4.png) The warehouse can complete operations by main quantity while keeping auxiliary specification information. For companies that need to check length, area, inner quantity, or packaging specification, this reduces offline records and manual communication. ### 5\. Secondary Quantity In On-Hand Stock And Reports Inventory can show secondary quantity in on-hand stock and reports. On-hand stock = 100 rolls Secondary quantity per roll = 80 meters Total secondary quantity on hand = 8,000 meters ![Secondary quantity in inventory report](https://xp.odoohub.com.cn/en/sale/images/SEC_UNIT_5.png) Users can review secondary quantity in inventory, sales, and purchase reports, supporting analysis by business specification. ### 6\. Inventory Adjustment Support During inventory adjustments, the system can also record and validate secondary quantity. Counted quantity = 50 rolls Secondary quantity per roll = 80 meters Counted total secondary quantity = 4,000 meters ![Secondary quantity in inventory adjustment](https://xp.odoohub.com.cn/en/sale/images/SEC_UNIT_6.png) The counting team can check both main quantity and auxiliary specification, improving inventory data completeness and accuracy. Business Value -------------- The secondary unit solution solves a data-structure problem, not just a field problem. It provides value by: * Making product specifications more structured than plain notes. * Letting sales, purchase, and inventory documents carry richer business information. * Reducing manual conversions and repeated communication. * Supporting min/max, step, rounding, and validation rules. * Creating a unified base for pricing, reporting, and industry extensions. * Improving business fit without disturbing Odoo's standard process. For many companies, the hard part is not whether a system exists, but whether the system can express the details of real operations. Secondary units make Odoo closer to those details. Summary ------- Qingdao Ohm Network Technology's secondary unit solution is a reusable Odoo enhancement refined from multiple industries. It lets companies keep Odoo's standard main quantity system while flexibly recording length, area, inner quantity, packaging specification, processing quantity, and other auxiliary business quantities. The standard process remains stable, while business documents become more complete. If a company later needs pricing by secondary quantity, invoicing by secondary quantity, manufacturing integration, report expansion, or external system integration, it can continue evolving from the general solution. At this point, Part 3 Sales Management has covered sales overview, products, quotations, orders, invoicing, pricing, taxes, inventory delivery, returns, rental, excise duty, and secondary units. The next part moves into Purchase Management and explains how companies handle procurement from sales demand, stock replenishment, and vendor collaboration. results matching "" =================== No results matching "" ====================== --- # Chapter 2 eCommerce · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 2 eCommerce](https://xp.odoohub.com.cn/en/) ===================================================== Chapter 2 eCommerce =================== Odoo eCommerce connects the public website, product catalog, sales orders, payments, invoices, and customer communication into one workflow. When a customer places an order online, Odoo can create the sales order, confirm payment, send emails, and prepare downstream operations such as delivery and invoicing. In real projects, the website may represent only one brand, or it may be part of a multi-company and multi-website database. This chapter focuses on several practical eCommerce settings that often matter after the storefront is already running: order confirmation templates, invoice email templates, and website form messages. Order Confirmation Email Template --------------------------------- After a customer places an order in the online store, Odoo sends an order confirmation email according to the default confirmation template configured by `sale.default_confirmation_template`. ![Order confirmation template](https://xp.odoohub.com.cn/en/web/images/shop2.png) In Odoo 17, a practical limitation is that this order confirmation template does not have a convenient company-specific setting similar to the invoice template setting described below. This can be inconvenient in multi-company environments because each company or website may need its own confirmation email style, subject, signature, and domain information. Our [Ohm Website Sale Solution `mommy_website_sale`](https://odoohub.com.cn/) adds this option. Users can define different order confirmation templates for different companies. ![Company-specific confirmation template](https://xp.odoohub.com.cn/en/web/images/shop3.png) After saving the configuration, each company can use its own email template when sending website order confirmations. This avoids situations where the customer buys from one brand but receives an email that looks like it came from another website. Invoice Template ---------------- After the customer completes checkout and payment, Odoo can automatically send an invoice to the email address registered by the customer. The setting is available under **Settings > Invoicing > Automatic Invoicing**. ![Automatic invoicing setting](https://xp.odoohub.com.cn/en/web/images/shop1.png) Automatic invoicing is useful when the eCommerce business requires fast post-payment document delivery. It also helps reduce manual work for finance users, especially for high-volume online orders. ### Multi-Company Invoice Email Templates When one database contains multiple websites, email template control becomes more important. Native email templates are not always enough for every multi-company branding requirement. If the second website uses a different domain, title, logo, and customer communication style, customers may still receive the first website's invoice template, which feels unprofessional. Our [Ohm Website Sale Solution `mommy_website_sale`](https://odoohub.com.cn/) adds support for multi-company invoice templates. After installing the module, different companies can use different invoice email templates. This is especially useful for group companies, multi-brand operations, and databases that host several storefronts. Customer Messages ----------------- Odoo Website can use forms to collect customer messages, inquiries, registration information, and service requests. ![Website form message](https://xp.odoohub.com.cn/en/web/images/23.png) When adding form fields, pay attention to the email field type. If the selected field type is email, the value must be a valid email address. Do not keep the default placeholder value, otherwise Odoo may raise the following error: invalid website_form_signature This usually means the submitted form values do not match the expected signed form structure. In implementation, always test public website forms as a real visitor after editing fields, especially when fields are added, removed, renamed, or changed to another type. This chapter covered several practical eCommerce settings around order confirmation, invoice emails, and customer message forms. The next chapter explains access tokens, which are the mechanism Odoo uses when documents need to be safely shared through portal links. results matching "" =================== No results matching "" ====================== --- # Chapter 6 Reordering Rules · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 6 Reordering Rules](https://xp.odoohub.com.cn/en/) ============================================================ Chapter 6 Reordering Rules ========================== Odoo can automatically create purchase or replenishment suggestions according to system demand. The mechanism is called reordering rules. Companies can define different rules by product, location, and stock level to support inventory management. This chapter explains the basic fields, replenishment logic, and how shortage or incoming demand affects recommended quantities. Basic Concept ------------- A reordering rule defines how Odoo replenishes a product. Common fields include: | Field | Meaning | | --- | --- | | Product | Product controlled by the rule | | Location | Location where the rule applies | | On Hand | Current on-hand quantity | | Forecasted | Forecasted quantity considering demand and incoming stock | | Route | Preferred route used by the rule | | Min Quantity | Lower stock threshold | | Max Quantity | Target quantity after replenishment | | To Order | Quantity waiting to be ordered | | Unit | Unit of measure | Reordering rules are especially useful for products that should be replenished automatically instead of waiting for manual observation. Replenishment Logic ------------------- Suppose pork needs to be purchased. A reordering rule is configured as follows: ![Reordering rule example](https://xp.odoohub.com.cn/en/stock/images/12.png) The minimum quantity is 10 kg, the maximum quantity is 100 kg, and current stock is 0. When the user clicks Replenish, Odoo creates a purchase order for 100 kg. ![Purchase generated by replenishment](https://xp.odoohub.com.cn/en/stock/images/13.png) If 50 kg of pork is used to produce buns, and the stock falls below 100 kg, for example to 55 kg, Odoo creates a new purchase order. ![Replenishment after consumption](https://xp.odoohub.com.cn/en/stock/images/14.png) The purchase quantity is 100 kg. If the stock falls below 10 kg, the same logic still aims to replenish up to the maximum quantity. ![Replenishment below minimum](https://xp.odoohub.com.cn/en/stock/images/15.png) This shows that Odoo replenishment commonly uses the rule's maximum quantity as the target stock quantity. Incoming And Shortage Quantity ------------------------------ Now consider another situation: stock is insufficient and other business documents are already waiting for this product to arrive, such as sales, manufacturing, or internal transfers. Odoo may calculate replenishment using both shortage demand and the rule's maximum quantity. For example, an internal transfer moves 100 kg of pork from Stock to Demo. Current stock is only 5 kg, so the transfer cannot be completed. ![Internal transfer shortage](https://xp.odoohub.com.cn/en/stock/images/16.png) Odoo then generates a purchase quantity of 195 kg. ![Purchase quantity with shortage](https://xp.odoohub.com.cn/en/stock/images/17.png) The logic is: Purchase quantity = shortage / incoming demand + maximum rule quantity - on-hand quantity In the example: 100 kg + 100 kg - 5 kg = 195 kg Implementation Advice --------------------- Reordering rules should not be enabled blindly for all products. Start with stable, frequently purchased products whose demand pattern is easy to understand. Before using automatic replenishment, confirm: * Product type and route are correct. * Vendor information is maintained. * Purchase unit of measure is correct. * Minimum and maximum quantities are realistic. * Lead time is maintained for important suppliers. * Users understand the difference between on-hand quantity and forecasted quantity. If the company also uses manufacturing, sales delivery commitments, or multi-warehouse replenishment, test reordering rules with real scenarios before go-live. This chapter explained reordering rules and replenishment logic. Later warehouse chapters continue with barcode operations, putaway rules, storage categories, delivery methods, and inventory cost valuation. results matching "" =================== No results matching "" ====================== --- # Chapter 1 POS Product Management · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 1 POS Product Management](https://xp.odoohub.com.cn/en/) ================================================================== Chapter 1 POS Product Management ================================ Products are the foundation of POS operation. Before cashiers can sell an item in the POS interface, the product must be configured correctly in Odoo: it must be available in POS, have the right product type, price, category, barcode, variants, and in some cases combo options. This chapter explains how to prepare products for POS sales. Create POS Products ------------------- To make a product available in POS, open the product form and enable **Available in POS**. ![Available in POS](https://xp.odoohub.com.cn/en/pos/images/product1.png) After this option is enabled, the product can be loaded into the POS frontend according to the selected POS configuration and product filters. ### Quick Create POS Products Odoo also provides a quick product creation flow directly from the POS interface. In the POS screen, click the product creation menu in the upper-right corner. ![Create product from POS](https://xp.odoohub.com.cn/en/pos/images/product2.png) Odoo opens a quick product creation dialog. Users can scan a barcode to add the product quickly. ![Quick product creation dialog](https://xp.odoohub.com.cn/en/pos/images/product3.png) If the scanned barcode exists in the global database, Odoo can automatically fill in the matched product name, price, and product image. Users can still adjust the values according to their actual business needs. This feature is useful for small stores that add new retail items frequently and do not want every product to be created from the backend product form first. Product Types ------------- POS products can use different product types: | Type | Meaning | | --- | --- | | Goods | Stockable products that can affect inventory. | | Service | Non-stock service products, such as labor, booking fees, or service charges. | | Combo | A product composed of several selectable items, such as meal sets or bundled products. | Choosing the correct product type matters because it affects stock movement, accounting, delivery, and how the product behaves in POS. Product Variants ---------------- Product attributes can create variants in different ways: | Variant Creation Mode | Meaning | | --- | --- | | Instantly | Variants are created immediately in the product catalog. | | Dynamically | Variants are created when the attribute combination is used in a sales document. | | Never | No product variants are created. | > Once a product attribute has been used, its variant creation mode can no longer be changed. For retail POS, variants are common for size, color, flavor, material, and packaging. The key is to keep the product structure simple enough for cashiers to search and sell quickly. Combo Products -------------- A combo product allows users to combine multiple products into one sellable product. Common examples include restaurant meal sets, bundled computer packages, gift boxes, and promotional sets. ### Define Combo Choices First, define combo choices under **Products > Combo Choices**. ![Combo choices](https://xp.odoohub.com.cn/en/pos/images/product4.png) Combo choices define what options the cashier or customer can select when selling the combo product. ### Define The Combo Product Then configure the combo product on the product form: 1. Set the product type to **Combo**. 2. Select the relevant combo choices. ![Combo product setup](https://xp.odoohub.com.cn/en/pos/images/product5.png) ### Extra Price Different combo choices can have different extra prices. ![Combo extra price](https://xp.odoohub.com.cn/en/pos/images/product6.png) This is useful when the base set has standard options, but some premium choices require an extra charge. POS Categories -------------- Odoo supports POS categories that are separate from ordinary product categories. On the product form, open the POS tab and select the POS category. ![POS category on product](https://xp.odoohub.com.cn/en/pos/images/product7.png) POS categories control how products are displayed in the POS interface. A well-designed category structure makes cashier operation faster and reduces search time. ### Parent And Child POS Categories POS categories can also have parent-child relationships. Go to **Settings > POS Categories**, open a POS category, and set its parent POS category. ![POS category hierarchy](https://xp.odoohub.com.cn/en/pos/images/product8.png) You can also set category colors to make the POS interface easier to read. This chapter introduced POS product availability, quick product creation, product types, variants, combo products, and POS categories. The next chapter explains kiosk and self-ordering, where customers interact with the POS flow directly. results matching "" =================== No results matching "" ====================== --- # Chapter 3 Access Tokens · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 3 Access Tokens](https://xp.odoohub.com.cn/en/) ========================================================= Chapter 3 Access Tokens ======================= Access tokens are a small but important part of Odoo portal and website behavior. They allow a document to be opened from a shared link even when the visitor does not have normal backend access rights to that document. In daily implementation work, access tokens appear most often in shared quotations, sales orders, invoices, subscriptions, helpdesk tickets, and portal documents. Users may not see the technical model behind them, but they experience the result: a customer receives a link, clicks it, and opens the correct portal page. What An Access Token Does ------------------------- An access token is usually a unique value stored on a document and included in the shared URL. When the link is opened, Odoo checks whether the token in the URL matches the token on the document. If the token is valid, Odoo can show the frontend portal page even if the visitor is not logged in as an internal user. If the token is missing, expired, or invalid, Odoo redirects the visitor to the login page or refuses access. This mechanism allows Odoo to balance two needs: | Need | How The Token Helps | | --- | --- | | Convenience | Customers can open a shared document from email without navigating the backend. | | Security | The document is not public by default; the URL must contain the correct token. | | Portal usability | External users can approve, sign, pay, or review documents from the website front end. | Native Behavior --------------- In native Odoo, a shared document commonly has one access token. Once generated, the token remains available until it is refreshed or replaced by the system. This is easy to understand and works well for many ordinary portal flows. For example, a quotation can be sent to a customer, and the customer can open the quotation page, review the details, sign it, or pay online if the relevant options are enabled. The limitation is that a single token is not enough when a company wants more precise control. For example: | Scenario | Native Single-Token Limitation | | --- | --- | | Share the same order with multiple people | Everyone may use the same link, so individual tracking is weak. | | Give different recipients different validity periods | The document-level token cannot easily represent different expiration dates. | | Revoke one recipient's access only | Refreshing the document token may invalidate access for everyone. | Implementation Notes -------------------- When explaining access tokens to customers, avoid treating them as ordinary passwords. A token link is closer to a controlled share link: anyone who has the valid link may be able to open the related portal page, depending on the model and controller logic. In implementation, pay attention to these points: | Point | Recommendation | | --- | --- | | Email delivery | Make sure the outgoing email domain and link domain are correct, especially in multi-company websites. | | Portal permissions | Do not give external users unnecessary backend access just to let them see a document. | | Link forwarding | Remind customers that forwarded links may expose the same portal document to others. | | Expiration control | Use an extension if the business requires per-recipient validity periods. | | Testing | Test shared links in a private browser window to simulate a real external visitor. | Enhanced Token Management ------------------------- For projects that require multiple tokens, recipient-level control, or expiration dates, Qingdao Ohm's portal extension can add token management on top of the native portal flow. With enhanced token management, users can generate separate tokens for different partners, define expiration dates, and manage existing tokens from a technical list or the related sales order. This keeps the standard Odoo portal as the base while giving companies more control over shared documents. Access tokens are not usually the first thing users notice in an Odoo website project, but they are one of the foundations behind a reliable customer portal. In the next chapter, we move from shared document links to mailing lists, another common website feature used to build long-term customer communication. results matching "" =================== No results matching "" ====================== --- # Part 10 Point of Sale · Odoo Implementation Manual - Qingdao Ohm Network Technology [Part 10 Point of Sale](https://xp.odoohub.com.cn/en/) ======================================================= Part 10 Point of Sale ===================== Point of Sale, usually called POS, is Odoo's front-office application for shops, restaurants, retail counters, showrooms, and other scenarios where cashiers need to sell quickly. It connects product management, pricing, payments, receipts, invoicing, loyalty programs, self-ordering, and stock movements. In an implementation project, POS is often more sensitive than ordinary backend workflows because users operate it in front of customers. Product loading speed, receipt layout, payment method setup, cashier permissions, printer compatibility, and stock deduction all affect the real checkout experience. This part introduces practical POS configuration topics, including POS products, kiosk self-ordering, receipts and invoices, payment methods, pricelists, loyalty programs, ePOS printing, sales display optimization, and automatic delivery for lot or serial-tracked products. results matching "" =================== No results matching "" ====================== --- # Chapter 9 Returns, Refunds, And After-Sales Handling · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 9 Returns, Refunds, And After-Sales Handling](https://xp.odoohub.com.cn/en/) ====================================================================================== Chapter 9 Returns, Refunds, And After-Sales Handling ==================================================== The sales process is not only quotation, delivery, and payment. It also needs to handle customer returns, exchanges, refunds, discounts, and after-sales disputes. Odoo natively distributes these actions across Sales, Inventory, and Accounting: the sales order records the original transaction, inventory returns handle physical goods, and accounting credit notes handle financial reduction. If the company does not design the return and refund process in advance, users may delete orders, manually change quantities, or refund offline. The result is that sales, inventory, and finance no longer match. This chapter explains how returns and refunds should be understood in Odoo, and which rules should be established during self-implementation. Separate Returns From Refunds ----------------------------- Return and refund are not the same thing. | Action | Object Handled | App | | --- | --- | --- | | Return | Physical goods move from customer back to warehouse | Inventory | | Refund | Invoiced amount is reduced or paid back to customer | Accounting | | Exchange | Return old goods and deliver new goods | Inventory + Sales | | Allowance | Customer receivable is reduced without goods return | Accounting | In real business, these actions may happen together or separately. For example, the customer returns one product and receives money back: that is return plus refund. The customer keeps the product but requests a lower price: that is allowance, and may not involve a physical return. Common After-Sales Scenarios ---------------------------- | Scenario | Recommended Handling | | --- | --- | | Cancel before delivery | Cancel the sales order and related delivery order | | Return after delivery, before invoice | Use inventory return, then adjust later invoicing | | Return after delivery and invoice | Inventory return plus accounting credit note | | Refund without return | Create credit note or allowance | | Exchange | Return original product and deliver new product | | Customer refused delivery | Handle returned goods and order cancellation according to logistics status | Do not solve every after-sales problem by deleting the order. Confirmed, delivered, and invoiced orders are business facts. Use reverse business documents to handle them. It is helpful to define simple after-sales categories first: | Category | Example | Main Concern | | --- | --- | --- | | Customer-caused return | Wrong purchase, duplicate order, no longer wanted | Whether return is allowed and who pays freight | | Product quality issue | Damage, failure, wrong specification | Quality inspection, exchange, or refund | | Wrong shipment | Wrong product or quantity | Warehouse responsibility, replacement, or return | | Price dispute | Missed discount or wrong negotiated price | Credit note or price adjustment | | Logistics issue | Refusal, lost parcel, delay | Carrier responsibility and stock status | Categories are not meant to add bureaucracy. They help the company later analyze whether returns are caused by product quality, warehouse mistakes, logistics, or sales commitments. Sales Order Cancellation ------------------------ If an order has not been delivered or invoiced, cancellation is relatively simple. When cancelling a sales order, Odoo tries to cancel related deliveries. The sales order has a Cancel button. Before clicking it, check whether smart buttons already show delivery, invoices, or other downstream documents. ![Cancel sales order](https://xp.odoohub.com.cn/en/sale/images/28.jpg) If the order has been delivered or invoiced, cancellation is no longer only a sales action: * Delivered goods may require inventory return. * Issued invoices may require credit notes. * Received payments may require refund or customer balance treatment. * Triggered purchase or manufacturing documents may need downstream handling. Before cancellation, sales users should review smart buttons for delivery, invoices, purchase, manufacturing, or project records. Inventory Returns ----------------- Inventory returns are usually started from the original delivery order. This lets Odoo know which delivery, products, and quantities are being returned. Delivered quantity on sales order lines is affected by returns. After a return, the system should update the real fulfillment situation through reverse stock operations, not by deleting the original order. ![Delivered quantity](https://xp.odoohub.com.cn/en/sale/images/35.png) Returns affect: * Customer location stock decreases. * Warehouse stock increases. * Product availability changes. * Lot or serial number traceability. * Inventory valuation and cost. If lots or serial numbers are enabled, the returned lot or serial number must be checked. Otherwise after-sales, quality, and inventory records become difficult to trace. Returned goods should not always go directly back to sellable stock. Design return handling according to condition: | Returned Condition | Recommendation | | --- | --- | | Good and resellable | Return to normal stock | | Needs inspection | Return to inspection location | | Repairable | Move to repair or after-sales location | | Not sellable | Move to scrap or defective location | For a simple first phase, returning to the main warehouse may be enough. If return volume is high, design inspection and scrap flows in the Inventory app later. Refunds And Credit Notes ------------------------ In Odoo Accounting, refunds are usually handled through credit notes. If the order has already been invoiced, refund handling should enter the finance process. Sales users can track related documents from the order or invoice, but should not bypass accounting and directly change amounts. ![Sales order invoice entry](https://xp.odoohub.com.cn/en/sale/images/30.png) Credit notes can be used to: * Reduce an issued customer invoice. * Handle return and refund. * Process allowance. * Correct invoicing mistakes. * Offset future receivables from the customer. If the order has not been invoiced, a credit note is usually unnecessary. If it has been invoiced, do not only change sales order quantity. Use formal accounting reversal documents. Refund amount also varies: * Full refund. * Partial refund. * Refund product amount but not freight. * Refund price difference. * Allowance without return. * Refund to original payment method. * Keep as customer credit for next purchase. Finance and customer service should define these rules together. Sales users initiate after-sales requests, but should not decide accounting reductions alone. Exchange Flow ------------- An exchange can be understood as two actions: Return original product -> Deliver new product During implementation, check the business rules: * Is the new product the same price? * Is a price difference required? * Is a new invoice required? * Does the original product return to sellable stock, repair stock, or scrap? * Is quality inspection required? A simple exchange can be handled through return plus new delivery. More complex after-sales flows may involve Helpdesk, Repairs, Quality, or other modules. Where To Keep After-Sales Records --------------------------------- After-sales communication should not live only in chat groups. At minimum, key records should be kept in the chatter of related Odoo documents. Examples: * When the customer requested return. * Return reason. * Who approved refund. * Return tracking number. * Whether the warehouse received goods. * Whether finance issued the credit note. * Whether replacement delivery was sent. If after-sales volume is large, Helpdesk, Repairs, or Quality can be introduced. Still, sales orders and invoices remain important traceability entries. A practical structure is: sales order records the original transaction, delivery order records goods returned, invoice or credit note records financial reduction, and chatter records communication and approval. Then management, finance, customer service, and warehouse all see the same business facts. Native Flow And Customization Boundaries ---------------------------------------- Odoo native features can support most basic return and refund flows: sales orders, inventory returns, credit notes, replacement deliveries, and chatter records. The following cases may require deeper process design or customization: * Complex after-sales approvals. * Strict return reason statistics. * Customer portal return/exchange requests. * E-commerce platform after-sales integration. * Automatic repair order or quality check creation. * Complex refund rules, handling fees, or partial refunds. * After-sales performance and quality analysis reports. The recommendation remains: first run the native reverse flow, then decide whether Helpdesk, Repairs, Quality, or e-commerce after-sales interfaces are needed. Implementation Advice --------------------- Before launching returns and refunds, the company should define: | Question | Recommendation | | --- | --- | | Who can approve returns? | Sales manager, customer service manager, or finance | | Which location receives returns? | Normal stock, inspection stock, or scrap stock | | When is refund allowed? | Rules differ for paid, invoiced, and undelivered orders | | Should return reasons be tracked? | At least record reasons for later improvement | | Where are after-sales communications kept? | Prefer sales orders, invoices, or after-sales tickets | This chapter clarified the relationship between returns, refunds, exchanges, credit notes, and after-sales records. The next chapter moves into rental, where products are not sold once, but rented by time and returned later. results matching "" =================== No results matching "" ====================== --- # Chapter 3 POS Receipts And Invoices · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 3 POS Receipts And Invoices](https://xp.odoohub.com.cn/en/) ===================================================================== Chapter 3 POS Receipts And Invoices =================================== > This article is based on Odoo 18 and Qingdao Ohm's POS solution module [`mommy_pos`](https://apps.odoo.com/apps/modules/18.0/mommy_pos) > . Receipts are the customer's proof of purchase in a POS transaction. For registered customers, POS can also create invoices. This chapter explains receipt headers and footers, automatic printing, receipt reprinting, receipt preview, receipt language settings, and POS invoicing. Receipts -------- To configure POS receipts in Odoo, go to **Point of Sale > Settings > Point of Sale**, select a POS store, and scroll to the **Bills & Receipts** section. ![Receipt settings](https://xp.odoohub.com.cn/en/pos/images/pos_reciept1.pdf) ### Custom Receipt Header And Footer To customize the receipt header and footer, enable the custom header and footer option, then enter the text you want to display. ![Custom receipt header and footer](https://xp.odoohub.com.cn/en/pos/images/pos_receipt2.png) After saving, return to the POS frontend. When the receipt is printed, the custom header and footer are shown. ![Printed receipt with custom text](https://xp.odoohub.com.cn/en/pos/images/pos_receipt3.png) ### Automatic Printing Odoo supports automatic receipt printing during payment. Enable **Automatic Receipt Printing** in the POS settings. ![Automatic receipt printing](https://xp.odoohub.com.cn/en/pos/images/pos_receipt4.png) > This may require ePOS support, depending on the printer and deployment method. ### Reprint Receipts Normally, receipts are printed when payment is completed. If the customer loses the receipt and needs another copy, load the paid order first, then click **Print Receipt**. ![Reprint receipt](https://xp.odoohub.com.cn/en/pos/images/pos_receipt5.png) ### Receipt Preview In native Odoo, the receipt is usually shown after payment is completed. In some projects, users want to preview the receipt before payment, especially when checking discounts, taxes, customer information, or custom receipt text. Our POS general solution adds a receipt preview option. First, enable receipt preview in the POS store settings. ![Enable receipt preview](https://xp.odoohub.com.cn/en/pos/images/Receipt1.png) After this setting is enabled, when users select products and enter the payment screen, the current receipt preview appears on the right side. ![Receipt preview on payment screen](https://xp.odoohub.com.cn/en/pos/images/Receipt2.png) ### Receipt Language Native Odoo receipts use the language selected by the current user. This works in most cases, but some stores need a different receipt language from the cashier's interface language. For example, the cashier may use Chinese, while the receipt should be printed in Spanish. Our solution adds support for selecting the receipt language in the POS store settings. ![Receipt language setting](https://xp.odoohub.com.cn/en/pos/images/Receipt3.png) After saving the setting, return to the POS frontend and preview the receipt. ![Receipt in selected language](https://xp.odoohub.com.cn/en/pos/images/Receipt4.png) Invoices -------- For registered customers, Odoo supports invoicing from the POS. ### Configuration First, define the default journal for POS invoices. In POS settings, scroll to the accounting section and set the default journal. ![Default invoice journal](https://xp.odoohub.com.cn/en/pos/images/pos_receipt6.png) ### Invoice A Customer From POS After the default journal is configured, users can invoice the customer from the POS frontend. ![Create invoice from POS](https://xp.odoohub.com.cn/en/pos/images/pos_receipt7.png) ### Backend Invoicing Users can also create an invoice from the POS backend. Go to **Point of Sale > Orders > Orders**, find the order that needs invoicing, and click the invoice button. ### QR Code Invoicing Customers may also scan the QR code on the receipt to request an invoice. After scanning, they fill in the required information, click the invoice button, and download the invoice. This chapter covered POS receipt configuration and POS invoicing. The next chapter explains payment methods, which determine how cashiers collect money during checkout. results matching "" =================== No results matching "" ====================== --- # Chapter 3 Operation Types · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 3 Operation Types](https://xp.odoohub.com.cn/en/) =========================================================== Chapter 3 Operation Types ========================= An **operation type** is Odoo's classification for transfers. Different business operations can use different operation types, so users can manage receipts, deliveries, and internal transfers separately. This chapter explains operation type properties, automatic merge behavior, lot display logic on receipts, stock moves, move lines, and negative stock. The example below shows an operation type. ![Operation type example](https://xp.odoohub.com.cn/en/stock/images/10.png) Basic Properties ---------------- ### Operation By default, Odoo commonly uses these operation categories: | Operation | Meaning | | --- | --- | | Receipt | Move products from vendor or other external location into internal stock | | Delivery | Move products from internal stock to customer or other external location | | Internal Transfer | Move products between internal locations | When additional apps are installed, more types may appear, such as manufacturing, repair, or rental operations. ### Preferred Sequence Each operation type can define a sequence that controls the numbering rule of transfers under that type. ### Sequence Prefix The sequence prefix defines the prefix used for generated transfer numbers. ### Return Type The return type defines the reverse operation type. For example, the reverse of a receipt is usually a delivery-type operation, and the reverse of a delivery is usually a receipt-type operation. ### Backorder Operation Backorder operation defines the default action when the transfer cannot be fully completed. | Option | Meaning | | --- | --- | | Ask | Show a wizard asking whether to create a backorder | | Always | Create the backorder automatically | | Never | Ignore the remaining quantity without asking | Backorder policy should match business habits. If partial receipt or partial delivery is common, users should understand how backorders are created and followed up. Automatic Merge --------------- When Odoo creates a new transfer, it may check whether a similar unfinished transfer already exists. Similar transfers usually share: * Same source and destination location. * Same operation type. * Same procurement group. * Not printed. * State in draft, confirmed, waiting, partially available, or assigned. If the transfer has a partner and the source or destination location is a transit location, the partner may also need to match. When similar transfers exist, Odoo may add move lines to the existing transfer rather than creating a new one. ### Stop Automatic Merge In real operations, some companies want every business action to create a separate transfer instead of merging into an existing one. Qingdao Ohm's warehouse solution adds a control field on the operation type to prevent merging. ![Disable merge option](https://xp.odoohub.com.cn/en/stock/images/11.png) After enabling the "always new" option, Odoo no longer merges similar transfers. It creates a new transfer every time. Lot Field Logic On Receipts --------------------------- Receipt operation types can include two options: * Create New Lots/Serial Numbers. * Use Existing Lots/Serial Numbers. These options affect which field appears on the transfer. Create New Lots shows a text field for entering a new lot number. Use Existing Lots shows a many-to-one field so users can choose or create an existing lot record. The text lot field appears when: * Lot tracking is enabled. * The operation type allows creating new lots. * The transfer is not yet done. In other cases, the lot is usually selected from existing lot records. Stock Moves And Sales Delivery Policy ------------------------------------- The sales delivery policy affects delivery order state. The two options on sales orders, "as soon as possible" and "when all products are ready", correspond technically to move types `direct` and `one`. Delivery order state is closely related to stock move states. When Odoo determines the transfer state, it sorts move lines by state and quantity. Common state priority includes: * `confirmed` * `partially_available` * `waiting` * `assigned` If the first move uses the "when all products are ready" policy, it becomes the most important move. Odoo uses it to determine whether the whole transfer is confirmed, waiting, or ready. If some moves are ready while the first important move is not, the whole transfer may still not show as ready. For business users, the practical meaning is simple: if the sales order says "ship when all products are ready," one unavailable product can hold the whole delivery. If the sales order says "deliver as soon as possible," Odoo can let available products move earlier. Stock Move Lines ---------------- Each stock move can have stock move lines. Some operation types do not show detailed operations by default. To manually show them, enable detailed operations on the operation type. ![Show detailed operations setting](https://xp.odoohub.com.cn/en/stock/images/35.png) After enabling it, the transfer form shows the detailed operations tab. ![Detailed operations tab](https://xp.odoohub.com.cn/en/stock/images/36.png) This field may be removed in later Odoo versions, so treat it as version-sensitive when documenting or customizing. Negative Stock -------------- Odoo can allow negative stock. If a user forces a SKU from one location to another even though the source location has insufficient stock or does not contain the specified lot/serial number, the operation may still succeed. The source location then gets negative quantity to balance the artificial movement. Negative stock can be useful for emergency processing, but it can also hide operational problems. If the company does not want negative stock, consider using a negative-stock restriction module such as the OCA `stock_no_negative` module, after confirming compatibility with the target Odoo version. Implementation Advice --------------------- Operation types should be designed around real warehouse processes: * Receipts for vendor incoming goods. * Deliveries for customer shipments. * Internal transfers for stock movement between zones. * Separate operation types only when users need different sequences, routes, permissions, or process rules. This chapter explained operation types and how they affect transfers. The next chapter in this first batch covers reordering rules, where Odoo creates replenishment according to stock levels and demand. results matching "" =================== No results matching "" ====================== --- # Chapter 5 Sales Portal · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 5 Sales Portal](https://xp.odoohub.com.cn/en/) ======================================================== Chapter 5 Sales Portal ====================== The sales portal is where customers review quotations and sales orders from the website front end. It allows customers to check order details without entering the backend, and it can also support online signature or payment depending on the sales configuration. This chapter focuses on the conditions that allow a customer to sign a sales order in the portal. Sales Order Signature --------------------- Customers can sign a quotation or sales order from the portal page. ![Portal sales order signature](https://xp.odoohub.com.cn/en/web/images/22.png) For a portal sales order to be signable, the following conditions must be met: | Condition | Explanation | | --- | --- | | The quotation is sent | The quotation is in the sent state, so the customer can review and accept it. | | Or draft signature is allowed | If the sales setting allows signing draft quotations, a draft quotation may also be signed. | | The quotation is not expired | Expired quotations should not be accepted unless the validity is extended. | | Signature is required | The quotation must be configured to require signature. | | No signature exists yet | Once the customer has signed, the same signature action should not be repeated. | In a standard sales flow, the salesperson prepares the quotation, sends it to the customer, and the customer opens the portal link from email. If online signature is enabled, the customer signs the quotation on the portal page. Odoo then records the signature and continues the sales confirmation flow according to the configured options. Implementation Notes -------------------- Online signature is useful when the business wants customer confirmation to be traceable inside Odoo. It is especially suitable for B2B quotations, service agreements, rental orders, and customized product sales. Before enabling it for production, confirm these settings: | Area | What To Check | | --- | --- | | Quotation validity | Make sure the expiration date policy matches the sales team's quotation process. | | Email links | Test that the customer receives a correct portal link and can open it externally. | | Portal access | The customer should use the portal page, not backend access, unless they are an internal user. | | Signature requirement | Decide whether signature should be required for all quotations or only selected templates. | This chapter covered the basic conditions for portal sales order signature. Together with the previous portal and access token chapters, it completes the core customer-facing website flow: share the document, open it safely, and let the customer confirm it online. results matching "" =================== No results matching "" ====================== --- # Chapter 6 Customer Loyalty · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 6 Customer Loyalty](https://xp.odoohub.com.cn/en/) ============================================================ Chapter 6 Customer Loyalty ========================== Odoo includes loyalty and promotion tools that can help businesses increase customer retention, encourage repeat purchases, and run marketing campaigns directly from POS. These programs can include coupons, gift cards, loyalty cards, promotions, eWallets, discount codes, buy-X-get-Y rules, and next-order coupons. This chapter introduces how to activate loyalty features and configure a coupon program. Activate Customer Loyalty ------------------------- First, activate the loyalty feature in POS settings. Enable **Promotions, Coupons, Gift Cards & Loyalty Program**. ![Enable loyalty programs](https://xp.odoohub.com.cn/en/pos/images/loyalty1.png) After this option is enabled, Odoo allows you to create different program types for POS and related sales flows. Configure Loyalty Programs -------------------------- Odoo supports the following loyalty program types by default: | Program Type | Typical Use | | --- | --- | | Coupons | Generate and share coupon codes manually. | | Gift Cards | Sell or issue gift cards that customers can redeem later. | | Loyalty Cards | Let customers accumulate points and redeem rewards. | | Promotions | Apply promotional benefits based on rules. | | eWallet | Store customer balance for future purchases. | | Discount Code | Apply a discount through a code. | | Buy X Get Y | Give a reward when the customer buys specific products or quantities. | | Next Order Coupons | Generate a coupon that can be used on a future order. | Different program types have different rules and rewards. The correct choice depends on whether the business wants to reward current orders, future orders, customer membership, or stored value. ### Coupons Coupons are used to manually generate and share coupon codes. They can be configured flexibly with conditions and rewards. ![Coupon program](https://xp.odoohub.com.cn/en/pos/images/loyalty2.png) Coupons can only be redeemed through coupon codes. Points generated in the current order can only be used in that current order. #### Conditions Before using a coupon, configure its conditions. ![Coupon conditions](https://xp.odoohub.com.cn/en/pos/images/loyaty3.png) Common conditions include: 1. Minimum quantity or minimum purchase quantity required to use the coupon. 2. Product scope, product type, or product tags where the coupon applies. 3. Custom domains for more precise filtering. #### Rewards Reward types include free products and discounts. ![Coupon rewards](https://xp.odoohub.com.cn/en/pos/images/loyalty4.png) For free product rewards, you can define which products or product tags are eligible for the reward. For point redemption, configure how many points are required to obtain the reward, and whether remaining points should be cleared after redemption. This chapter introduced POS loyalty activation and the basic coupon program structure. The next chapter covers ePOS printing, which is a practical deployment topic for stores using compatible thermal printers. results matching "" =================== No results matching "" ====================== --- # Part 11 Settings · Odoo Implementation Manual - Qingdao Ohm Network Technology [Part 11 Settings](https://xp.odoohub.com.cn/en/) ================================================== Part 11 Settings ================ Odoo settings affect the entire system. Some settings are business-facing, such as document layout and language formats. Others are technical or security-related, such as attachment sharing, IP whitelist restrictions, and system parameters. In implementation work, settings should not be treated as a miscellaneous area. Many customer-facing details, including printed quotation layout, receipt language, date format, public links, and login security, are controlled here. This part introduces several common configuration topics and explains how to use them safely. results matching "" =================== No results matching "" ====================== --- # Chapter 8 POS Sales · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 8 POS Sales](https://xp.odoohub.com.cn/en/) ===================================================== Chapter 8 POS Sales =================== POS users need a fast and readable product selection area. If too few products are displayed, cashiers must rely heavily on search. If too many products are loaded, the interface may become harder to operate or slower on some devices. This chapter introduces a sales display enhancement from the Qingdao Ohm POS solution. Change The Default Number Of Displayed Products ----------------------------------------------- When POS loads, native Odoo loads only 100 products by default, excluding discount and tip products. Search is available, but in stores with many products, cashiers may still prefer to see more items directly. Native Odoo does not provide a setting for the number of products shown in the product area. Our POS solution adds control over the product display limit. ![POS product display limit setting](https://xp.odoohub.com.cn/en/pos/images/8.png) By setting the limit, you can control how many products are displayed in the POS cashier product area. ![POS product display result](https://xp.odoohub.com.cn/en/pos/images/9.png) This enhancement is useful for retail stores with many frequently sold products, especially when cashiers work faster by browsing categories instead of typing product names. This chapter covered the POS product display quantity enhancement. The next chapter explains automatic delivery for products tracked by lot or serial number. results matching "" =================== No results matching "" ====================== --- # Chapter 7 ePOS Printing · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 7 ePOS Printing](https://xp.odoohub.com.cn/en/) ========================================================= Chapter 7 ePOS Printing ======================= Odoo supports two common POS printer connection patterns: direct printing and printing through an IoT Box. Directly supported thermal printers can print without an IoT Box, while other printers may require additional integration. Reference documentation: https://www.odoo.com/documentation/17.0/applications/sales/point_of_sale/configuration/epos_printers.html This chapter uses an EPSON TM-T82III thermal printer as an example to explain the direct ePOS printing setup. 1\. Enable ePOS Printer In Odoo ------------------------------- In Odoo POS settings, enable the ePOS printer option. ![Enable ePOS printer](https://xp.odoohub.com.cn/en/pos/images/1.png) Enter the IP address of the thermal printer. 2\. Force HTTPS With A System Parameter --------------------------------------- Go to **Settings > Technical > Parameters > System Parameters** and create the following parameter: key: point_of_sale.enforce_https value: True These are the main settings required in Odoo. The remaining steps are printer and browser configuration. 3\. Create A Self-Signed Certificate ------------------------------------ Use the account and password printed by the ePOS self-test page to log in to the printer web interface. The default address may be `192.168.192.168`. After configuration, the printer and the PC should be on the same local network. For example, assume the PC IP is `192.168.1.55` and the printer IP is `192.168.1.123`. After logging in to the printer, open the certificate list menu and create a self-signed certificate. ![Create self-signed certificate](https://xp.odoohub.com.cn/en/pos/images/2.png) 4\. Import The Certificate Locally ---------------------------------- After exporting the self-signed certificate, double-click it to install the certificate into the system's root certificate store. ![Import certificate](https://xp.odoohub.com.cn/en/pos/images/3.png) After the certificate is installed, restart the browser so the change takes effect. If the previous steps are correct, visiting the printer address again should show the certificate as trusted. ![Trusted printer certificate](https://xp.odoohub.com.cn/en/pos/images/4.png) 5\. Solve Browser Cross-Origin Issues ------------------------------------- After installing the certificate, you may still encounter browser cross-origin errors because the printer is on the local network while the Odoo server is usually on another domain. ![Browser cross-origin issue](https://xp.odoohub.com.cn/en/pos/images/5.png) Different browsers handle this differently. Using Microsoft Edge as an example, one workaround is to copy the desktop Edge shortcut and add the following startup parameters in its properties: --disable-web-security --user-data-dir=C:\edgeDevData ![Edge shortcut parameters](https://xp.odoohub.com.cn/en/pos/images/6.png) Use this approach carefully and only for the POS workstation that needs printer access. Do not use a browser with disabled web security for normal internet browsing. 6\. Enable ePOS-Print On The Printer ------------------------------------ By default, the ePOS-Print function may not be enabled on the printer. Open the printer's ePOS settings page and enable ePOS-Print. [ePOS-Print setting](https://xp.odoohub.com.cn/en/pos/images/7.png) If all steps are completed correctly, the POS print button should be able to print receipts through the thermal printer. This chapter covered the practical ePOS printing setup. The next chapter explains a POS sales display enhancement for stores that need to control how many products are shown in the POS product area. results matching "" =================== No results matching "" ====================== --- # Chapter 1 General Settings · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 1 General Settings](https://xp.odoohub.com.cn/en/) ============================================================ Chapter 1 General Settings ========================== General settings are the starting point for many visible details in Odoo. A small configuration here may affect every printed quotation, invoice, delivery slip, or report in the database. This chapter focuses on document layout and the save/discard button style. Document Layout --------------- In Odoo settings, you can configure the layout of printed documents, including style, font, company slogan, logo, and related visual elements. The path is **Settings > General Settings > Companies > Configure Document Layout**. ![Document layout setting](https://xp.odoohub.com.cn/en/chapter9/images/layout.png) After opening the configuration wizard, the page looks like this: ![Document layout wizard](https://xp.odoohub.com.cn/en/chapter9/images/layout2.png) Document layout affects common business reports such as quotations, sales orders, invoices, purchase orders, and delivery documents. During implementation, this is usually one of the first areas customers notice because it appears directly on documents sent to customers and suppliers. > Technically, the document layout wizard is based on the `base.document.layout` model. However, because the layout model is transient, the actual values are stored on matching fields of `res.company`. Therefore, when customizing document layout data, it is usually safer to extend the company model rather than relying on the transient layout model. Traditional Save And Discard Buttons ------------------------------------ Starting from Odoo 16, the style of the save and discard buttons changed to icon-style upload and restore buttons. Some users prefer the older button style because it is more explicit for training and daily operation. If a project needs to restore a traditional save/discard experience, evaluate whether the requirement is only a user habit issue or a real usability need before customizing. For most implementations, we recommend keeping native Odoo UI behavior unless the customer has a strong operational reason. This reduces future upgrade risk and keeps user training aligned with standard Odoo. This chapter introduced general settings that affect document layout and basic user interface habits. The next chapter explains language settings and date formats. results matching "" =================== No results matching "" ====================== --- # Chapter 9 Reports · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 9 Reports](https://xp.odoohub.com.cn/en/) =================================================== Chapter 9 Reports ================= Odoo natively provides two common types of reporting capabilities. The first type is printable PDF documents for customers or internal archive, such as quotations, invoices, and delivery slips. The second type is analytical reports inside the system, such as sales analysis, purchase statistics, inventory analysis, aged receivables, pivot tables, and charts. When many companies first use Odoo, they understand "reports" as rebuilding every old system or Excel report. This is usually not the best path. Odoo is better used by first relying on native reports, filters, groups, favorites, exports, pivot views, and charts to clarify data definitions, then deciding whether a few truly valuable reports need customization. This chapter explains how to use native Odoo reporting and why native solutions are usually more stable, cheaper, and easier to upgrade. First Distinguish Two Report Types ---------------------------------- In Odoo implementation, "report" usually means at least two things. | Type | Examples | Main Usage | | --- | --- | --- | | Printable reports | Quotation, sales order, invoice, delivery slip, purchase order, labels | External sending, internal archive, printing with goods | | Analytical reports | Sales analysis, inventory analysis, purchase analysis, aged receivables, profit analysis | Management decisions, daily checks, business review | These two types are handled differently. Printable reports focus on layout, logo, header and footer, terms, field display, and PDF appearance. Analytical reports focus on data definition, filters, grouping dimensions, date range, and permissions. If a customer says they need a report, the consultant should not jump into a development quote immediately. First ask: is this a customer-facing document or internal business analysis? Is it viewed every day or only occasionally? Can native lists filter it out, or does it require cross-module calculations? What Native Odoo Reports Can Do ------------------------------- Native Odoo reporting is more complete than many customers expect. | Capability | Usage | | --- | --- | | Reporting menus in modules | View built-in statistics such as sales, purchase, inventory, and finance analysis | | Search | Quickly find records by customer, product, status, date, and more | | Filters | Show only data meeting conditions, such as this month's orders or unpaid invoices | | Group By | Summarize by salesperson, customer, product category, month, and other dimensions | | Favorites | Save common filters for quick reuse | | List view | View detailed data and export Excel or CSV | | Pivot view | Similar to a spreadsheet pivot table, suitable for multi-dimensional summaries | | Graph view | Use bar, line, or pie charts to see trends quickly | | PDF printing | Output standard documents such as quotations, invoices, and delivery slips | | Document layout | Manage company logo, header, footer, colors, and basic layout | For self-implementation, learn these native capabilities first. Many "custom report requirements" are really just unfamiliarity with filters, grouping, pivot views, and favorites. Common Printable Reports ------------------------ Different modules have their own printable reports. | Module | Common Reports | | --- | --- | | Sales | Quotation, sales order | | Purchase | Purchase order, request for quotation | | Inventory | Delivery slip, receipt slip, picking slip, inventory labels | | Accounting | Customer invoice, vendor bill, payment receipt, aged report | | POS | Receipt, session closing report | | Manufacturing | Manufacturing order, work order, bill of materials | For a first go-live, do not rebuild every document to match the old system. A safer approach is to confirm the 3 to 5 most commonly used documents first, such as quotation, invoice, delivery slip, purchase order, and receipt slip. These documents should first satisfy: understandable, correct fields, correct company information, and acceptable to customers. Layout can be optimized later. Document Layout --------------- Document layout controls the basic appearance of PDF documents such as quotations and invoices: logo, colors, header, and footer. Configure it from **Settings -> General Settings -> Company -> Document Layout**. ![Document layout settings](https://xp.odoohub.com.cn/en/basic/images/basic-cn-report-layout-settings.png) Confirm: * Is the logo clear? * Are company name, address, phone, and email correct? * Does the document color fit the company brand? * Is footer information correct? * Are Chinese and English displayed correctly? * Are quotation, invoice, and delivery slip readable after printing? Document layout is a global basic setting. Do not change it frequently, especially after quotations and invoices have already been sent to customers. Where Analytical Reports Are ---------------------------- Most Odoo applications provide a Reporting menu to analyze and visualize business data. Common entries: | Module | Common Analysis | | --- | --- | | Sales | Revenue, salesperson performance, product sales, customer sales | | CRM | Lead count, opportunity stage, win rate, sales team performance | | Purchase | Purchase amount, vendor purchase, purchase lead time | | Inventory | Stock quantity, inventory value, receipts/deliveries, product moves | | Accounting | Receivables/payables, aging, profit and loss, balance sheet, cash flow | | POS | Store sales, cashier, product sales, payment methods | | Project | Task status, timesheets, assignee, project progress | Report names differ by module, but usage is similar: enter the report, then analyze with filters, groups, charts, pivot views, and exports. Search, Filter, And Group ------------------------- Before using native reports, become familiar with the search bar. Odoo search usually supports three operations: | Function | Usage | Example | | --- | --- | --- | | Search | Find records by keywords | Customer name, product name, order number | | Filter | Limit data range | This month's orders, unpaid invoices, completed tasks | | Group By | Summarize by dimension | Salesperson, customer, month, product category | For example, if the owner asks for this month's sales amount by salesperson, a custom report may not be needed. Open Sales Analysis, filter this month, group by salesperson, and view amount totals. If finance asks which customers still have unpaid invoices, open the invoice list, filter unpaid, and group by customer. The key is not always development. The key is knowing where the data is, which conditions to filter by, and which dimension to group by. Save Common Queries As Favorites -------------------------------- Many reports customers view daily are not complex. They only use fixed conditions. Examples: * This month's sales orders; * My opportunities to follow up; * Overdue unpaid invoices; * Today's pending deliveries; * Products below safety stock; * Quotations from a sales team; * POS sales from a store. Use favorites to save these query conditions. Next time, the user can open the same view without reselecting filters. Favorites are very valuable. They turn "the consultant teaches the customer how to click" into "the customer clicks once and sees it." For self-implementation, this native capability is often underestimated. Pivot Tables And Charts ----------------------- Lists are good for details. Pivot tables and charts are better for summaries. Pivot tables are suitable for: * Summarizing sales by month, salesperson, and product category; * Counting purchase amount by vendor and product; * Viewing receivables by customer and payment term; * Viewing inventory value by warehouse and product category; * Viewing timesheets by project and assignee. Charts are suitable for: * Whether sales are rising or falling; * Which product category contributes most; * Which sales team performs better; * Which months have abnormal inventory changes; * Which payment methods have the largest share. If customers are used to Excel pivot tables, explain Odoo pivot views as "pivot tables inside the system." Many scenarios do not need to export to Excel. Export To Excel --------------- Odoo supports exporting Excel or CSV from list views. Suitable scenarios: * Temporary analysis; * Sharing with external people; * Comparing with old systems; * Finance checking; * Batch checking master data; * Data cleaning before go-live. Do not rely on export for daily management for the long term. If the same table must be exported and manually processed every day, it usually means one of two things: * Native filters, grouping, favorites, and pivot views are not being used well; * This report has become a fixed management need and should be redesigned as an in-system report or dashboard. Export is a useful helper, but it should not become the company's daily management process. Data Definition Matters More Than Layout ---------------------------------------- The most important part of a report is not style, but data definition. For example, "sales amount" can mean: * Quotation amount; * Confirmed sales order amount; * Invoiced amount; * Paid amount; * Tax excluded amount; * Tax included amount; * Based on order date; * Based on invoice date; * Based on payment date; * Excluding canceled orders; * Including or excluding freight and discounts. If the definition is not clear first, even a beautiful report will be considered inaccurate. Confirm key indicators first: | Indicator | Questions To Confirm | | --- | --- | | Sales amount | Order, invoice, or payment? Tax included or excluded? | | Gross margin | Where does cost come from? Standard cost, average cost, or actual cost? | | Inventory value | Which costing method? Is inventory valuation enabled? | | Receivables | Invoice balance or customer balance? Which date is used for aging? | | Purchase amount | Purchase order or vendor bill? Tax included or excluded? | The owner, sales, finance, and warehouse may understand the same word differently. The first step of report implementation is aligning language. Why Native Solutions Come First ------------------------------- The best reporting solution is usually to use native Odoo first. | Native Advantage | Description | | --- | --- | | Lower upgrade risk | Native views, search, reporting menus, and QWeb reports upgrade more easily | | Consistent permissions | Native reports follow Odoo model access, record rules, and company permissions | | Real-time data | Directly based on business data without extra synchronization | | Lower learning cost | Once users learn filters, groups, and favorites, they can reuse them across modules | | Lower maintenance cost | No extra report engine or plugin to maintain | | Easier troubleshooting | Data source, fields, and permissions are inside Odoo | There are many report plugins, BI plugins, drag-and-drop report designers, and external dashboards on the market. They are not unusable, but they should not be the first choice. Common issues: * Extra plugins increase maintenance cost; * Plugin compatibility depends on specific Odoo versions; * Plugins may rewrite native report engines or frontend components; * Upgrades require separate migration and testing; * Permissions, company, currency, language, multi-website, and other rules may not match native Odoo logic; * External BI needs data synchronization and may show numbers different from Odoo; * If the plugin author stops maintenance, later upgrades can be blocked. Our recommendation: use native first, customize only when native is not enough; if QWeb and native views can solve it, do not introduce heavy report plugins first; if filters and groups can solve it, do not start development immediately. When Custom Reports Are Needed ------------------------------ Consider customization when: * A fixed format is required; * Government, customs, or platform requires a specific format; * PDF documents must match an industry layout; * Management needs a cross-module dashboard; * Native fields cannot satisfy the statistical definition; * Complex calculations are needed, such as rebates, commissions, or margin allocation; * Data from multiple systems must be combined; * Different templates must be generated by customer, channel, country, or business type. Before customization, confirm: | Question | Description | | --- | --- | | Who reads it? | Owner, finance, sales, warehouse, or customer | | What is shown? | Indicators and fields | | How is it calculated? | Statistical definition | | How often is it viewed? | Real-time, daily, monthly | | Data source | Sales, inventory, finance, or external systems | | Output format | PDF, Excel, chart, dashboard | | Permission boundary | Who can see it and who cannot | | Upgrade impact | Whether native reports are modified or third-party plugins are required | Report requests without definitions should not be developed immediately. Write the definition first, then evaluate native features, QWeb customization, server actions, view extension, or external BI. Boundary Of Printable Report Customization ------------------------------------------ Printable reports are usually based on QWeb templates. QWeb is Odoo's native PDF reporting technology and is suitable for quotations, invoices, delivery slips, purchase orders, and similar documents. Suitable light adjustments: * Add fields; * Adjust header text; * Modify footer terms; * Adjust logo and company information; * Add customer reference, contact person, or delivery notes. Needs careful evaluation: * Rebuilding the entire layout; * One template per customer; * Complex multi-language, multi-currency, multi-company templates; * Many conditional branches and complex calculations; * PDF merge, encryption, preview, stamping, cloud printing, and similar extensions. Light adjustments are usually stable. Heavy customization must consider future upgrades and maintenance. Do not block the native upgrade path just to make Odoo look exactly like the old system. Different Report Styles By Customer ----------------------------------- Standard Odoo usually configures document layout by company. This is the safest phase-one approach. In some projects, customers may want different report styles, company slogans, headers, footers, or special terms for different customers under the same company. This requirement usually belongs to report enhancement or customization. In Ohm Network's base solution, custom report configuration can provide more detailed report style control. It does not replace native Odoo reports; it enhances the native report mechanism. First, enable custom report configuration permission in user settings. ![Enable custom report configuration](https://xp.odoohub.com.cn/en/basic/images/report1.png) Then create custom report configuration from technical settings. ![Custom report configuration](https://xp.odoohub.com.cn/en/basic/images/report2.png) Next, assign a report configuration on the customer record. ![Customer report configuration](https://xp.odoohub.com.cn/en/basic/images/report3.png) When printing that customer's document, the specified style is used. ![Custom report result](https://xp.odoohub.com.cn/en/basic/images/report4.png) This is suitable for: * One company serving multiple branded customers; * Different customers requiring different footers or terms; * Foreign trade customers needing different languages and styles; * Group companies needing one system with different external documents; * Agents or channel customers requiring dedicated document formats. Implementation advice remains the same: run the process with native reports first, then configure or customize report differences that truly create value. Do not build separate reports for every customer from the beginning. Implementation Advice --------------------- Report implementation can follow this sequence: | Stage | Recommendation | | --- | --- | | Stage 1 | Use native PDF documents and document layout; confirm key documents such as quotations, invoices, and delivery slips are usable | | Stage 2 | Teach users search, filters, grouping, favorites, and export | | Stage 3 | Use Reporting menus, pivot views, and charts to answer daily business questions | | Stage 4 | Confirm key indicator definitions with management, sales, and finance | | Stage 5 | Customize or enhance only reports that native features cannot satisfy and that have clear value | For self-implementation customers, do not start with big screens, dashboards, or drag-and-drop designers. First let each role see the data they need every day in Odoo, then let management confirm a few key indicators, and finally discuss complex reports. This chapter covered native Odoo reports, PDF documents, search and filters, grouping and favorites, pivot views, charts, export, report definitions, and customization boundaries. At this point, the basic data, email, messages, and reports in Part 2 are mostly ready. The next part moves into Sales Management and begins the complete business flow from quotation to order. results matching "" =================== No results matching "" ====================== --- # Chapter 3 Quotations And Customer Confirmation · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 3 Quotations And Customer Confirmation](https://xp.odoohub.com.cn/en/) ================================================================================ Chapter 3 Quotations And Customer Confirmation ============================================== The native Odoo sales process usually starts from a quotation. A quotation is a commercial proposal for the customer. It contains the customer, products, prices, taxes, payment terms, expiration date, delivery information, and terms. Only after the customer accepts it does the quotation become a sales order and move into delivery, invoicing, and payment. Many companies treat quotations as nothing more than draft sales orders when they first implement Odoo. That can work, but it wastes Odoo's native capabilities around quotation templates, online signature, online payment, optional products, quotation expiration, and customer portal confirmation. This chapter explains how to make quotations reusable, traceable, and confirmable by customers. Relationship Between Quotation And Sales Order ---------------------------------------------- In Odoo, quotation and sales order are the same kind of business document in different states. Draft quotation -> Quotation sent -> Customer confirmation -> Sales order -> Delivery / Invoice / Payment Common states can be understood as: | State | Meaning | | --- | --- | | Quotation | An internal sales proposal being edited | | Sent | Already sent to the customer by email, portal, or another method | | Sales Order | Customer accepted the offer and the commercial transaction is confirmed | | Cancelled | The quotation or order has been cancelled | | Locked / Done | The order should no longer be edited casually and is treated as completed or archived | During implementation, users should understand that quotation-stage changes are normal, but after confirmation the document should be handled more carefully because downstream deliveries, invoices, purchases, or manufacturing requirements may already exist. Create A Quotation ------------------ Go to **Sales -> Orders -> Quotations** and click New. The screen below shows a typical quotation. The header contains buttons such as Send by Email, Confirm, and Cancel, and the status bar shows that the document is still in the quotation stage. ![Quotation screen](https://xp.odoohub.com.cn/en/sale/images/17.png) A quotation usually includes: * Customer. * Invoice address. * Delivery address. * Products and quantities. * Unit price, discount, and taxes. * Pricelist and currency. * Payment terms. * Quotation expiration date. * Salesperson and sales team. * Terms, notes, and attachments. If the quotation is created from a CRM opportunity, the customer, salesperson, and opportunity source can usually flow into the quotation. This keeps the sales pipeline and later order connected. The order lines are the most important area. The salesperson must confirm product, description, quantity, unit price, taxes, and subtotal. The untaxed amount, tax, and total amount at the bottom are the quotation result that the customer cares about most. Quotation Expiration -------------------- Quotation expiration tells the customer before which date the offer is valid. It is useful when: * Raw material prices fluctuate heavily. * Exchange rates affect price. * A promotion has a deadline. * Sales wants to encourage faster customer confirmation. * A project quotation needs to be re-evaluated after some time. You can configure a default expiration period in Sales settings, and you can also adjust it on a single quotation. Do not keep quotations valid forever. If an expired quotation can still be confirmed without review, price disputes are very likely. Quotation Templates ------------------- Quotation templates are useful when the company repeatedly sells similar packages. Examples include: * Standard implementation service packages. * Website development packages. * Equipment sales plus installation. * Annual maintenance services. * Common product bundles. * Standard rental packages. Templates can prepare product lines, descriptions, optional products, and terms in advance. When sales chooses a template, Odoo can quickly generate standard quotation content. The value of a quotation template is not only saving time. More importantly, it keeps the quotation language and scope consistent across different salespeople. Do not make templates too granular. Packages such as "Website Standard", "Website Professional", or "Odoo Basic Implementation Package" are good candidates. A unique project for one customer should not become a separate template by default. Useful template content includes: | Content | Purpose | | --- | --- | | Standard product lines | Reduce missing lines | | Standard descriptions | Standardize scope and service boundaries | | Optional products | Encourage add-on selection | | Default expiration | Control quotation risk | | Standard terms | Avoid every salesperson writing terms manually | If the sales process is not stable yet, skip templates in the first phase. After the sales team repeatedly uses similar quotations, turn the mature structure into templates. Optional Products ----------------- Optional products are suitable for add-on suggestions. For example, when a customer buys a printer, the quotation can recommend cartridges and maintenance services. When a customer buys equipment, the quotation can recommend installation and training. When a customer buys software, it can recommend implementation or support services. Optional products are not forced into the order at the beginning. They are shown as add-ons that customers can choose. When a customer confirms the quotation through the portal, they can decide whether to add them. This feature can improve order value, but it should not be abused. Optional products should be related to the main product; otherwise the quotation becomes noisy. The difference is simple: order lines are included in the quotation by default; optional products are extra choices. If the customer selects an optional product when accepting the quotation, Odoo can add it to the order. During implementation, the sales manager should first define several standard combinations: * Main equipment plus installation service. * Software subscription plus implementation service. * Rental product plus insurance or deposit. * Product sale plus extended warranty. * E-commerce item plus accessory pack. In this way, optional products become part of the sales strategy instead of random product dumping. Online Signature And Online Payment ----------------------------------- Odoo can let customers confirm quotations through the portal. Common confirmation methods include: | Method | Suitable Scenario | | --- | --- | | Online signature | Customer signs and confirms the quotation, suitable for B2B service or project sales | | Online payment | Customer pays and confirms the order, suitable for deposits or standard products | | Signature + payment | Higher-value orders or cases that need clear customer commitment | | Internal manual confirmation | Traditional offline confirmation, phone confirmation, or separately signed contract | Online signature and online payment are different mechanisms. Signature means the customer accepts the terms. Payment means money is collected or authorized. Whether to use them depends on the company's transaction habits and payment process. If online payment is enabled, payment providers must be configured first. After payment confirmation, the salesperson usually receives a notification and the order moves into the next process. Online signature is more suitable for B2B quotations that need explicit customer acceptance, such as implementation services, equipment sales, and project contracts. Online payment is more suitable for standard products or deposit-based flows where the customer can pay directly. The two can be used together, but do not enable them just because they look advanced. If customers are used to offline stamped contracts, start with PDF quotation and email confirmation. If customers are comfortable with portal operations, gradually enable online signature and online payment. Customer Portal Confirmation ---------------------------- After a quotation is sent, the customer can open it through an email link or through the customer portal. The portal can let the customer: * View quotation details. * Download the PDF. * Accept or reject the quotation. * Sign online. * Pay online. * Add optional products. * View later orders and invoices. Portal experience is closely related to email configuration. The email configuration and chatter chapters explained this foundation earlier. Here they connect with Sales: whether the quotation email reaches the customer, whether the link opens correctly, and whether customer replies return to the document all affect the sales experience. The Customer Preview button helps salespeople see what the customer will see. Before formally sending a quotation, preview it at least once to confirm that the amount, terms, and buttons are correct. ![Customer preview entry](https://xp.odoohub.com.cn/en/sale/images/17.png) If the company uses portal confirmation, also test: * Whether the customer receives the quotation email. * Whether the portal page opens after the customer clicks the link. * Whether an unauthenticated customer can view it through the access token. * Whether the online signature button appears. * Whether the online payment button appears. * Whether the order state changes correctly after acceptance. * Whether the salesperson receives the reminder. These items relate to the earlier basic-data chapters on email configuration, chatter, and portal access tokens. Sales is not isolated. Quotation confirmation often exposes whether the basic settings are complete. What To Check Before Sending A Quotation ---------------------------------------- Before sending a quotation, sales should check: * Customer name, invoice address, and delivery address are correct. * Product name, quantity, and unit of measure are correct. * Unit price, discount, and taxes are correct. * Pricelist and currency are correct. * Payment terms and quotation expiration are reasonable. * Delivery lead time and commitment date are achievable. * Attachments and terms are not missing. * The PDF layout is acceptable for customers. These are not project delivery checklists. They are daily sales habits. Once a quotation is sent, it represents a commercial commitment from the company. If the customer has high expectations for quotation PDF format, first adjust logo, colors, and footer through native document layout. Then evaluate whether light QWeb customization is needed. Do not make the first phase too heavy by trying to copy the old system's quotation format exactly. A quotation can also be printed directly as a PDF, which is useful for archive or offline signing. ![Print quotation](https://xp.odoohub.com.cn/en/sale/images/31.png) The PDF style is determined by document layout and report templates. In the first phase, at least make sure the company logo, address, phone number, footer, product lines, and amounts are clear. ![Quotation PDF](https://xp.odoohub.com.cn/en/sale/images/32.png) CRM Integration --------------- If the company uses CRM, it is recommended to create quotations from opportunities. This preserves: * Lead source. * Opportunity stage. * Sales activities. * Customer communication history. * Quotation amount. * Won or lost reason. Sales can still create quotations directly in the Sales app. However, from a management perspective, CRM-to-quotation gives a more complete chain and makes conversion rate and pipeline analysis easier. Implementation Advice --------------------- Do not enable every advanced quotation feature in the first go-live phase. A practical rollout sequence is: | Phase | Recommendation | | --- | --- | | Phase 1 | Run standard quotations, email sending, PDF layout, and customer confirmation | | Phase 2 | Configure expiration dates, payment terms, and standard terms | | Phase 3 | Use quotation templates and optional products to improve efficiency | | Phase 4 | Enable online signature or online payment according to customer habits | | Phase 5 | Connect CRM, subscriptions, projects, inventory, and accounting | This chapter covered quotation creation, sending, expiration, templates, optional products, online signature, online payment, portal confirmation, and CRM integration. The next chapter explains what happens after the customer confirms the quotation: how a sales order moves through delivery, invoicing, cancellation, locking, and status management. results matching "" =================== No results matching "" ====================== --- # Chapter 5 Invoicing Policy And Down Payments · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 5 Invoicing Policy And Down Payments](https://xp.odoohub.com.cn/en/) ============================================================================== Chapter 5 Invoicing Policy And Down Payments ============================================ After a sales order is confirmed, companies usually care most about these questions: when can we invoice the customer, how much can we invoice, should we invoice ordered quantities or delivered quantities, and how should deposits or down payments be handled? Odoo handles these questions through product invoicing policies, the Create Invoice action on the sales order, down payment invoices, and pro-forma invoices. Invoicing is not only a sales department topic. It affects accounts receivable, revenue recognition, inventory delivery, project services, and the customer payment experience. This chapter explains Odoo sales invoicing policy and down payment logic so the company can align quotation, delivery, invoicing, and payment before go-live. Two Core Invoicing Policies --------------------------- Odoo natively supports two core invoicing policies. The invoicing policy is usually maintained on the product. When creating an invoice from a sales order, Odoo uses the product invoicing policy and the current delivery status to determine the invoiceable quantity. ![Product invoicing policy](https://xp.odoohub.com.cn/en/sale/images/16.png) | Policy | Meaning | Suitable Scenario | | --- | --- | --- | | Invoice ordered quantities | After the sales order is confirmed, the ordered quantity can be invoiced | Standard products, prepayment, contract amount invoicing | | Invoice delivered quantities | Invoice based on actual delivered quantity after delivery | Partial delivery, bulk materials, actual-delivery settlement | The default invoicing policy can be configured in Sales settings, and each product can also be adjusted separately. Default settings generally affect new or updated products; existing products should still be reviewed one by one. Invoice Ordered Quantities -------------------------- Invoice ordered quantities is straightforward. Confirm quotation -> Sales order -> Create invoice -> Confirm invoice -> Register payment This method is suitable when: * The customer can be invoiced immediately after order confirmation. * The company collects payment before delivery. * The product is a standard service fee. * The contract amount is fixed. * Settlement does not need to wait for warehouse delivery. The advantage is a simple process and earlier invoicing. The drawback is that if the actual delivered quantity changes later, the company may need a refund, credit note, or additional invoice. Invoice Delivered Quantities ---------------------------- Invoice delivered quantities links invoicing with delivery results. Confirm quotation -> Sales order -> Delivery / fulfillment -> Create invoice -> Invoice delivered quantity This method is suitable for: * Partial deliveries. * Cases where actual delivery may differ from ordered quantity. * Materials, liquids, food, or other products settled by actual quantity. * Services that should be invoiced after delivery. * Project, timesheet, milestone, or other delivery-driven work. If a product is set to invoice delivered quantities but nothing has been delivered yet, the sales order may have no invoiceable quantity. When a user asks why an invoice cannot be created, check the product invoicing policy and delivered quantity first. Create A Regular Invoice ------------------------ After confirming the sales order, click **Create Invoice**. Odoo opens a wizard. If Regular Invoice is selected, Odoo creates a draft customer invoice based on the current invoiceable quantity. ![Create invoice wizard](https://xp.odoohub.com.cn/en/sale/images/19.png) A regular invoice creates a draft invoice according to invoiceable quantity. After finance confirms it, the invoice enters the formal accounts receivable flow, and customer payment can be registered. The To Invoice list in the Sales menu can show sales orders that already meet invoice conditions. Finance or sales managers can use it as a focused worklist for invoicing. ![Sales orders to invoice](https://xp.odoohub.com.cn/en/sale/images/30.png) Keep these distinctions clear: * A sales order is not an accounting invoice. * A draft invoice is not yet formal receivable. * Only a confirmed invoice enters accounting. * Registering payment records the customer's payment. * Bank reconciliation and final payment status also depend on accounting configuration. Sales users do not need to master every accounting detail, but they should know that sales order, invoice, and payment are three different stages. Down Payments ------------- Down payments are suitable when the customer pays part of the amount first, and the remaining balance is settled later according to delivery or final settlement. When choosing a down payment percentage or fixed amount, Odoo creates a down payment invoice. ![Down payment setting](https://xp.odoohub.com.cn/en/sale/images/22.png) When creating an invoice, Odoo offers: | Option | Meaning | | --- | --- | | Down payment percentage | Invoice a percentage of the sales order total, such as 30% | | Down payment fixed amount | Invoice a fixed deposit amount, such as 5,000 | | Regular invoice | Create a normal invoice based on invoiceable quantities | Down payments are common in: * Custom products. * High-value equipment. * Implementation projects. * Cross-border orders. * Rental deposits. * Orders where customer credit risk requires payment first. After the down payment invoice is confirmed and paid, Odoo deducts the down payment when the final invoice is created later, avoiding duplicate collection. The example below is a down payment invoice. It represents a partial payment collected in advance, not necessarily the final settlement. ![Down payment invoice](https://xp.odoohub.com.cn/en/sale/images/23.png) A 100% Down Payment Is Not The Final Invoice -------------------------------------------- One detail from Odoo's official behavior is easy to miss: a 100% down payment is not the same as completing final invoicing for the sales order. It is still a down payment process. Odoo may still need a final invoice later to complete the sales order's settlement relationship. So if the company simply wants to issue the full invoice once, it should usually use a regular invoice. If the business truly means full prepayment first, delivery later, and final settlement later, then a 100% down payment can be appropriate. This distinction should be explained clearly during implementation. Otherwise finance may wonder why the system still allows invoice creation after the customer has already paid 100%. When the final invoice is created, Odoo automatically deducts previous down payments to avoid collecting twice. ![Down payment deduction](https://xp.odoohub.com.cn/en/sale/images/27.png) Pro-Forma Invoice ----------------- A pro-forma invoice is usually used to let the customer preview payment information or provide import/export documents before formal invoicing. It is not a formal accounting invoice. It is useful when: * An export customer needs a Pro-forma Invoice before payment. * The customer's internal approval requires a payment document. * Commercial documents are needed before goods are shipped. * The company does not want to create formal receivable yet. Do not confuse a pro-forma invoice with a formal invoice. It can be a commercial preview document, but the document that enters accounts receivable is still the customer invoice. Relationship Between Sales Invoicing And Inventory -------------------------------------------------- Invoicing policy affects how sales and inventory work together. | Product Invoicing Policy | Inventory Impact | Invoicing Impact | | --- | --- | --- | | Ordered quantities | Delivery does not affect invoiceable quantity | Usually invoiceable after order confirmation | | Delivered quantities | Delivery quantity must be completed | Invoiceable quantity appears after delivery | If inventory is enabled, confirming a sales order usually creates a delivery order. After the warehouse completes delivery, delivered quantity updates and finance invoices according to the policy. If the company sells services, delivered quantity may come from manual delivery, project milestones, timesheets, or another service delivery mechanism. Delivered quantity and invoiced quantity on the sales order line are key indicators for deciding whether the next invoice can be created. ![Delivered and invoiced quantities](https://xp.odoohub.com.cn/en/sale/images/35.png) Implementation Advice --------------------- Invoicing policy should not be decided by sales alone. Finance and business owners must confirm it together. Recommended patterns: | Product Type | Common Recommendation | | --- | --- | | Standard stock item | Ordered or delivered quantities, depending on cash-before-delivery policy | | Partial-delivery item | Usually delivered quantities | | Custom product | Down payment plus final invoice | | Service product | Ordered quantity, timesheet, or milestone according to service delivery | | Implementation project | Down payments, stage payments, or milestone invoicing | | Export order | Often combines pro-forma invoice, down payment, and final invoice | This chapter clarified sales invoicing policies, regular invoices, down payments, 100% down payment behavior, pro-forma invoices, and the relationship between invoicing and inventory delivery. The next chapter looks at pricelists, discounts, and multi-currency pricing, solving sales pricing across different customers, markets, and currencies. results matching "" =================== No results matching "" ====================== --- # Chapter 2 Language Settings · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 2 Language Settings](https://xp.odoohub.com.cn/en/) ============================================================= Chapter 2 Language Settings =========================== Language settings in Odoo affect more than translation. They can also control date formats, time formats, separators, and other locale-related display behavior. This is important for companies that operate across countries or serve users who expect different date and number formats. Date And Time In Languages -------------------------- Open the language settings to configure date formats. ![Language date format](https://xp.odoohub.com.cn/en/chapter9/images/2.png) In the language configuration, you can define how dates are displayed. Common format symbols include: | Symbol | Meaning | | --- | --- | | `%Y` | Year | | `%m` | Month | | `%d` | Day | For example, different countries may prefer `YYYY-MM-DD`, `DD/MM/YYYY`, or `MM/DD/YYYY`. Choosing the correct format reduces misunderstanding in quotations, invoices, delivery dates, and reports. When implementing a multilingual database, always test date and number display under each major user language. A format that looks natural to one user group may be confusing to another. This chapter covered language-based date formatting. The next chapter explains attachment sharing, which is useful when external users should access selected attachments without seeing the whole document. results matching "" =================== No results matching "" ====================== --- # Chapter 5 Technical Settings · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 5 Technical Settings](https://xp.odoohub.com.cn/en/) ============================================================== Chapter 5 Technical Settings ============================ Technical settings are usually maintained by implementers or administrators rather than daily business users. They include language formats, system parameters, model settings, automation, and other configuration items that affect how Odoo behaves behind the scenes. This chapter introduces language format configuration from the technical settings perspective. Language Formats In Translation Settings ---------------------------------------- Odoo can define different data formats for different languages, including decimal precision display, date format, and time format. Open **Settings > Translations > Languages**, then open a specific language to configure its locale-related formats. ![Language technical settings](https://xp.odoohub.com.cn/en/chapter9/images/1.png) These settings are important for international companies because users in different regions may expect different formats. For example, a date shown as `03/04/2026` can mean March 4 or April 3 depending on the user's locale. During implementation, confirm the main working languages and test the following items under each language: | Item | Why It Matters | | --- | --- | | Date format | Prevents misunderstanding in delivery dates, payment dates, and validity dates. | | Time format | Helps teams work across time zones and operating schedules. | | Decimal separator | Avoids confusion in prices, quantities, and accounting reports. | | Thousands separator | Improves readability in large financial or inventory values. | This chapter explained language format settings from the technical configuration area. The next chapter discusses Odoo Studio and when it should or should not be used in a serious implementation. results matching "" =================== No results matching "" ====================== --- # Chapter 3 Payments · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 3 Payments](https://xp.odoohub.com.cn/en/) ==================================================== Chapter 3 Payments ================== After understanding customer invoices and vendor bills, the next step is payment. Odoo supports customer payments, vendor payments, partial payments, manual matching with existing payments, cash payments, online payments, and customer follow-up reminders. Customer And Vendor Payments ---------------------------- After customer or vendor invoices are created, waiting payments can be seen from the Accounting dashboard. ![Invoices waiting for payment](https://xp.odoohub.com.cn/en/account/images/AC34.png) In normal cases, select the invoice or bill and click **Register Payment**. ### Multiple Payments By default, the payment amount equals the full invoice or bill amount. To pay in multiple installments, change the payment amount. ![Partial payment amount](https://xp.odoohub.com.cn/en/account/images/AC35.png) Odoo offers two choices: | Option | Meaning | | --- | --- | | Keep open | The invoice or bill remains partially unpaid | | Mark as fully paid | The remaining amount will not be paid for some reason and the document is treated as fully paid | Use "Mark as fully paid" carefully because it affects receivable or payable follow-up. ### Match A Bill With Existing Payment Register Payment from an invoice automatically links the payment and invoice. However, sometimes payments and invoices are separate. For example, a customer may have credit from a previous refund or a balance paid earlier. In this case, manually match the extra payment with the invoice. ![Outstanding payment matching](https://xp.odoohub.com.cn/en/account/images/AC36.png) Odoo shows a light-blue suggestion box on the invoice when available payments can be matched. Select the payment from the list and click Add to reconcile it with the invoice. ### Pay With A Cash Account Normally, when paying a vendor bill from a bank journal, the bill may become **In Payment** until bank reconciliation is completed. If a cash journal is used, can the bill skip this state and become **Paid** directly? Yes. Open **Accounting -> Configuration -> Journals**, find the cash journal, and show the **Outstanding Payments Account** in outgoing payment settings. ![Outstanding payments account](https://xp.odoohub.com.cn/en/account/images/AC27.png) Set it to the cash account. Then when paying a vendor bill with the cash journal, the payment result can become Paid directly. Online Payments --------------- Besides cash and bank payments, Odoo supports online payment providers. Enable online payment in **Settings -> Sales -> Quotations and Orders -> Online Payment**. ![Enable online payment](https://xp.odoohub.com.cn/en/account/images/AC37.png) Odoo shows the default list of supported online payment providers. ![Payment providers](https://xp.odoohub.com.cn/en/account/images/AC38.png) Activate the provider needed by the company. ### Alipay And WeChat Pay For Mainland China users, Alipay and WeChat Pay are common requirements. Qingdao Ohm's general solutions include support for Alipay and WeChat Pay. Readers can learn more through OdooHub or the developer tutorial appendix. Customer Payment Follow-Up -------------------------- After setting payment terms, Odoo can remind customers to pay according to due dates. In **Customers -> Follow-up Reports**, users can see the list of customers who need payment reminders. ![Follow-up report](https://xp.odoohub.com.cn/en/account/images/AC39.png) ![Follow-up customer list](https://xp.odoohub.com.cn/en/account/images/AC40.png) Open one record and click Follow Up to choose a reminder method. ![Follow-up action](https://xp.odoohub.com.cn/en/account/images/AC41.png) Follow-up methods include: * Email. * Print. * SMS. * Post. ![Follow-up methods](https://xp.odoohub.com.cn/en/account/images/AC42.png) Choose the method according to the company's collection process. ### Follow-Up Levels Follow-up levels can be configured under **Settings -> Invoicing -> Follow-up Levels**. ![Follow-up levels](https://xp.odoohub.com.cn/en/account/images/AC43.png) For example, the company can remind customers a few days before due date, then send another reminder after overdue days, and continue with third or fourth reminders. This chapter explained payment registration, partial payments, matching existing payments, cash payments, online payments, and customer follow-up reminders. The next chapter explains customer statements. results matching "" =================== No results matching "" ====================== --- # Chapter 4 IP Whitelist · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 4 IP Whitelist](https://xp.odoohub.com.cn/en/) ======================================================== Chapter 4 IP Whitelist ====================== > This feature is available for contracted Qingdao Ohm Network Technology customers. Some companies want to restrict user login by IP address to reduce unnecessary security risks. For example, finance users may only be allowed to log in from the office network, or administrators may only access the system from a fixed VPN. Our base module includes an IP whitelist feature. This chapter explains how to enable whitelist-based login control in Odoo. Enable IP Whitelist ------------------- Go to **Settings > Ohm > Login Settings** and enable the IP whitelist feature. ![Enable IP whitelist](https://xp.odoohub.com.cn/en/chapter9/images/IP1.png) After enabling the feature, enter whitelist IP addresses in the settings box, one per line. IP ranges and subnet masks are also supported. Use this setting carefully. Before enabling a strict whitelist in production, make sure at least one administrator has a valid IP path to log in, otherwise the system may accidentally lock out legitimate users. Restrict By User Group ---------------------- By default, once the whitelist restriction is enabled, it applies to all users. In some situations, you may only want to restrict specific user groups. Select the user groups to be restricted on the right side of the setting. ![Restrict by user group](https://xp.odoohub.com.cn/en/chapter9/images/IP2.png) This allows a company to apply stricter rules to sensitive roles such as finance, administrators, or warehouse supervisors, while keeping ordinary portal or public website behavior unaffected. Login Log Review ---------------- The module also records login attempts. Go to **Settings > Technical > Database** to review user login logs. ![Login log review](https://xp.odoohub.com.cn/en/chapter9/images/IP3.png) Login logs help administrators investigate abnormal access attempts, verify whether whitelist rules are working, and provide evidence when security issues need to be reviewed. This chapter introduced IP whitelist login control and login log review. The next chapter covers technical settings related to language, date, and time formats. results matching "" =================== No results matching "" ====================== --- # WeChat Pay Solution · Odoo Implementation Manual - Qingdao Ohm Network Technology [WeChat Pay Solution](https://xp.odoohub.com.cn/en/) ===================================================== WeChat Pay Solution =================== WeChat Pay is one of the two major mobile payment providers in China, but it is not included in Odoo's official payment provider list. Even Alipay, which was once officially supported, was deprecated around Odoo 16 and merged into an AsiaPay-related option. The local payment ecosystem is still needed by real customers, so Qingdao Ohm implemented WeChat Pay integration for Odoo. This chapter explains the prerequisites, configuration, and major Odoo payment scenarios supported by the solution. Prerequisites ------------- To use WeChat Pay, first open a [WeChat Pay merchant account](https://pay.weixin.qq.com/) . You also need a valid payment scenario, such as PC website, app, Mini Program, or Official Account. Only after the merchant account and payment scenario are ready can Odoo connect to WeChat Pay. Install The WeChat Pay Module ----------------------------- After installing the WeChat Pay module, open the payment providers menu. You will see WeChat Pay as an available provider. Activate it to enable the payment method. ![WeChat Pay provider](https://xp.odoohub.com.cn/en/chapter10/images/wechatpay4.png) ### Configuration Guide WeChat Pay does not provide a normal sandbox environment for this flow, so configure production parameters directly. ![WeChat Pay configuration](https://xp.odoohub.com.cn/en/chapter10/images/wechatpay5.png) Key parameters include: | Field | Description | | --- | --- | | WeChat Pay APPID | Application ID of the Official Account, WeChat Open Platform website app, Mini Program, WeChat Shop, or other WeChat application. | | API Key | Merchant API key. | | Merchant ID | The 10-digit merchant number from WeChat Pay Merchant Platform. | | Merchant Key Path | Path to the merchant private key file, such as `/opt/odoo/perms/apiclient_key.pem`. | | Merchant Certificate Path | Path to the merchant certificate file, such as `/opt/odoo/perms/apiclient_cert.pem`. | After configuration, WeChat Pay can be used in several Odoo scenarios. eCommerce Checkout ------------------ After the base configuration is complete, customers can use WeChat Pay in the online shop checkout. ![WeChat Pay in online shop](https://xp.odoohub.com.cn/en/chapter10/images/wechatpay1.gif) Sales Order Online Payment -------------------------- After a sales order is confirmed, the salesperson can send a payment link to the customer. The customer opens the link and pays by scanning the WeChat Pay QR code. ![Sales order online payment](https://xp.odoohub.com.cn/en/chapter10/images/wechatpay22.gif) Invoice Online Payment ---------------------- When a customer clicks the invoice link from email or opens it from the portal preview, the payment button can be used to complete payment with WeChat Pay. ![Invoice online payment](https://xp.odoohub.com.cn/en/chapter10/images/wechatpay33.gif) H5 Payment ---------- > Supported from version `18.0.2.0+`. The QR code payment flow does not support scanning a WeChat QR code from a saved photo in the same phone. On mobile devices, users would need another phone to scan the QR code, which adds unnecessary friction. Later versions add H5 payment support. When a user operates from a mobile device, Odoo can invoke the WeChat application and complete payment more naturally. The operation flow is shown below. ![WeChat H5 payment step 1](https://xp.odoohub.com.cn/en/chapter10/images/WXH51.png) ![WeChat H5 payment step 2](https://xp.odoohub.com.cn/en/chapter10/images/WXH52.png) ![WeChat H5 payment step 3](https://xp.odoohub.com.cn/en/chapter10/images/WXH53.png) ![WeChat H5 payment step 4](https://xp.odoohub.com.cn/en/chapter10/images/WXH54.png) This chapter introduced WeChat Pay for online shop, sales orders, invoices, and H5 mobile payment. The next chapter explains WeChat Pay in POS, where cashiers scan customer payment codes at the counter. results matching "" =================== No results matching "" ====================== --- # POS WeChat Pay · Odoo Implementation Manual - Qingdao Ohm Network Technology [POS WeChat Pay](https://xp.odoohub.com.cn/en/) ================================================ POS WeChat Pay ============== The previous chapter introduced WeChat Pay for online payments. This chapter explains how to use WeChat Pay in Odoo Point of Sale for counter payment and refund. Module Installation ------------------- Go to **Settings > POS Settings > Payment Terminals** and enable WeChat Pay. ![Enable POS WeChat Pay](https://xp.odoohub.com.cn/en/chapter10/images/pos_wechat.png) After saving, Odoo installs the POS WeChat Pay module automatically. POS WeChat Pay reuses the website WeChat Pay application settings, so the payment provider configuration is not repeated here. Add A WeChat Payment Method --------------------------- Go to **Settings > Payment Methods** and create a WeChat Pay payment method. ![Create WeChat payment method](https://xp.odoohub.com.cn/en/chapter10/images/pos_wechat11.png) Add WeChat Pay To POS --------------------- When the POS session is closed, open the store configuration page and add the WeChat Pay payment method. ![Add payment method to POS](https://xp.odoohub.com.cn/en/chapter10/images/pos_wechat2.png) Receive Payment With WeChat Pay ------------------------------- Open the POS cashier interface and create an order. In this example, we sell a balloon for `0.01`. ![POS order example](https://xp.odoohub.com.cn/en/chapter10/images/pos_wechat12.png) Click payment, enter the checkout screen, and select WeChat Pay. ![Select WeChat Pay](https://xp.odoohub.com.cn/en/chapter10/images/pos_wechat3.png) Scan the barcode or QR code provided by the customer, then click confirm to complete payment. ![Scan customer code](https://xp.odoohub.com.cn/en/chapter10/images/pos_wechat4.png) Finally, click validate. ![Validate POS order](https://xp.odoohub.com.cn/en/chapter10/images/pos_wechat5.png) Then print the receipt for the customer. Refund With WeChat Pay ---------------------- For refunds, find the original order and click **Refund**. ![Refund order](https://xp.odoohub.com.cn/en/chapter10/images/pos_wechat7.png) The POS screen shows a negative amount, indicating a return order. Click payment. ![Negative refund order](https://xp.odoohub.com.cn/en/chapter10/images/pos_wechat8.png) Odoo asks whether to confirm the refund. ![Confirm refund](https://xp.odoohub.com.cn/en/chapter10/images/pos_wechat9.png) Click confirm to complete the refund. ![Refund complete](https://xp.odoohub.com.cn/en/chapter10/images/pos_wechat10.png) Finally, validate the order and print the refund receipt. ![Refund receipt](https://xp.odoohub.com.cn/en/chapter10/images/pos_wechat13.png) This chapter covered WeChat Pay collection and refund in POS. The next chapter introduces Alipay online payment for website, sales order, and invoice scenarios. results matching "" =================== No results matching "" ====================== --- # WeChat Official Account Solution · Odoo Implementation Manual - Qingdao Ohm Network Technology [WeChat Official Account Solution](https://xp.odoohub.com.cn/en/) ================================================================== WeChat Official Account Solution ================================ > This module applies to Odoo 16.0. WeChat Official Accounts are widely used in China for customer service, marketing, self-service inquiry, and service notifications. For Odoo projects, an Official Account can become a lightweight customer service入口: users can query information, receive template notifications, open menu links, and interact with business data without entering the backend. This chapter introduces the WeChat Official Account solution developed by Qingdao Ohm Network Technology. Business Background ------------------- When customers send inquiries, companies often spend repeated manual effort answering simple questions. Besides enterprise IM tools such as WeCom, a WeChat Official Account can handle part of the automatic inquiry workload. For example, customers can follow the account, click menus, send keywords, receive service messages, or even query serial numbers and warranty information through automatic replies. This reduces operating cost and makes service more accessible. Official Account Basic Configuration ------------------------------------ After applying for a WeChat Official Account, configure its basic settings before connecting it to Odoo. First, obtain the following parameters: | Parameter | Description | | --- | --- | | Developer ID / AppID | Usually starts with `wx`, for example `wx123456678`. | | Developer Password / AppSecret | A one-time secret. The Official Account platform does not display it again after creation; reset it if lost. | | Server URL | The Odoo URL used by WeChat to send messages and authentication callbacks. | | Token | Optional authentication token for communication between WeChat and the server. | | EncodingAESKey | Optional encryption key used when message encryption is enabled. | These parameters are available under **Settings & Development > Basic Configuration**. ![Official account basic configuration](https://xp.odoohub.com.cn/en/chapter10/images/wechat1.png) The server URL should use your Odoo domain plus the fixed path `/wechat/auth`. ### Business Domain And JS API Secure Domain If the Official Account needs to open custom web pages or avoid WeChat web security warnings, configure the JS API secure domain. The path is **Official Account Settings > JS API Secure Domain**. ![JS API secure domain](https://xp.odoohub.com.cn/en/chapter10/images/wechat2.png) When configuring the business domain, WeChat requires server-side verification. To make this easier, the module provides fields for the verification filename and file content. Users only need to enter the filename and text content in Odoo. ![Domain verification file](https://xp.odoohub.com.cn/en/chapter10/images/wechat3.png) Odoo WeChat Module Configuration -------------------------------- After the Official Account is configured, install the Odoo WeChat module `mommy_wechat`. Then go to **Official Account > Settings > Official Account**. Create an Official Account application and enter the parameters obtained from WeChat. ![Odoo WeChat application settings](https://xp.odoohub.com.cn/en/chapter10/images/wechat4.png) The web authorization verification filename is the text file mentioned earlier, and the content is the string inside that file. ### Bind Company The module supports multi-company scenarios. In company settings, select the Official Account application created above. ![Bind official account to company](https://xp.odoohub.com.cn/en/chapter10/images/wechat5.png) After this, the required preconditions are complete. Solution Features ----------------- ### Menu Management Menus are the entrance of an Official Account. A well-designed menu can provide a smooth customer experience. Menu management is available under **Official Account > Basic Configuration > Menu Management**. WeChat supports up to three top-level menus, and each top-level menu supports up to five submenus. Each menu can use a different response type, including: | Response Type | Typical Use | | --- | --- | | Click event | Trigger a backend action by key. | | URL redirect | Open an Odoo page or external page. | | Scan code push | Trigger scan-code interaction. | | Scan code message | Receive scan-code result as a message. | | Photo | Open camera. | | Photo or album | Let the user choose a photo source. | | WeChat album | Choose from WeChat album. | | Location | Let the user send location. | | Media message | Send media content. | | Article URL | Open news/article content. | | Mini Program | Open a WeChat Mini Program page. | Here is the menu creation interface. ![Create official account menu](https://xp.odoohub.com.cn/en/chapter10/images/wechat6.png) When creating submenus, create the top-level menu first. A menu can bind a key value, which is passed to the backend application. Developers can then customize business responses according to the key. The following screenshot shows the OdooHub Official Account menu configuration. ![OdooHub menu configuration](https://xp.odoohub.com.cn/en/chapter10/images/wechat7.png) Menus also support sequence sorting. A larger sequence number places the menu closer to the bottom of the Official Account menu area. ### Automatic Replies Automatic reply is one of the most common Official Account scenarios. For example, when a user follows the account, the system can send a welcome message. When a user sends a keyword, Odoo can reply with text, media, template messages, or business query results. Create automatic reply rules under **Official Account > Message Management > Auto Reply**. ![Auto reply rules](https://xp.odoohub.com.cn/en/chapter10/images/wechat8.png) Supported trigger conditions include: | Trigger | Meaning | | --- | --- | | Follow reply | Triggered when a user follows the Official Account. | | Keyword reply | Triggered when message content matches a keyword. | | Message reply | Triggered when a message is received. | | Click event | Triggered by a custom menu click event. | Supported response formats include no reply, text, image, voice, video, music, news/article, code reply, and template message. Code reply is especially flexible. It allows business logic to be written and executed from the interface, then packaged into a message and sent to the user. For example, when we send `echo` to the OdooHub Official Account, it returns a real-time calculation result showing current follower statistics and the user's subscription sequence. ![Echo reply result](https://xp.odoohub.com.cn/en/chapter10/images/wechat9.png) The logic is implemented with code reply. ![Code reply configuration](https://xp.odoohub.com.cn/en/chapter10/images/wechat10.png) The advantage is that small logic adjustments can be made from the interface without updating server code every time. Template Messages ----------------- Template messages are often used by service accounts to send service notifications to users who follow the Official Account. Bank transaction notifications and delivery notifications are typical examples. ### Message Templates Before sending template messages, create or apply for message templates in the WeChat Official Account backend. These templates are similar to SMS templates. > Template creation must use templates provided by WeChat or go through WeChat review. This module does not create Official Account templates directly; users should apply for them in the WeChat backend. In Odoo, use **Settings > Sync Message Templates** to synchronize templates. ![Synchronize templates](https://xp.odoohub.com.cn/en/chapter10/images/wechat11.png) After synchronization, templates are visible under **Message Management > Message Templates**. ![Template message data](https://xp.odoohub.com.cn/en/chapter10/images/wechat12.png) Template body data uses text plus variables. Variables are wrapped in `{{ }}` and follow the `variable.DATA` format. ### Send Template Messages Go to **Message Management > Template Messages** and create a template message. ![Create template message](https://xp.odoohub.com.cn/en/chapter10/images/wechat13.png) Select the template, target user, optional link, optional Mini Program page, and template data. The data format is: { 'name': { 'value': 'John' }, 'code': { 'value': 123456 } } The `name` and `code` keys correspond to variables in the template, and their values are placed under `value`. After sending, the user receives the message in WeChat. ![Template message in WeChat](https://xp.odoohub.com.cn/en/chapter10/images/wechat14.png) ### Programming Interface In real implementation, template messages are rarely created manually one by one. The module provides programming interfaces so developers can embed template message sending into business flows. Because this part is more technical, it is not expanded here. Customers who purchased the module can contact support or reply with the relevant keyword in the Official Account to receive developer guidance. This chapter introduced the WeChat Official Account solution. The next chapter explains WeChat Pay, which connects Odoo sales, invoices, and website checkout with domestic mobile payment. results matching "" =================== No results matching "" ====================== --- # POS Line Pay · Odoo Implementation Manual - Qingdao Ohm Network Technology [POS Line Pay](https://xp.odoohub.com.cn/en/) ============================================== POS Line Pay ============ Line is a popular social application in Japan, Thailand, and Taiwan. Similar to WeChat, Line also provides its own payment service: Line Pay. This chapter introduces how to use Line Pay for payment and refund in Odoo 16 POS. Register As A Line Pay Merchant ------------------------------- To receive payment through Line Pay, first register as a Line Pay merchant. The registration process is straightforward and can be completed through Line Pay's merchant channels. Get Channel ID And Secret ------------------------- After successful registration, the merchant account and password are sent by email. Log in to the merchant backend to obtain the Channel ID and Secret. Install The POS Line Pay Module ------------------------------- After obtaining the ID and Secret, install the POS Line Pay module from Odoo Apps. ![Install POS Line Pay module](https://xp.odoohub.com.cn/en/chapter10/images/linepay1.png) After installation, go to **POS Settings > Payment Methods**, find Line Pay, and enter the Channel ID and Secret. ![Configure Line Pay](https://xp.odoohub.com.cn/en/chapter10/images/linepay2.png) Use Line Pay For Payment And Refund ----------------------------------- The payment and refund flow is similar to the POS WeChat Pay and POS Alipay flows introduced earlier. Cashiers select Line Pay on the payment screen, scan or process the customer's payment code, confirm the transaction, and validate the POS order. For a detailed demonstration, refer to the video: [Line Pay POS Payment](https://www.bilibili.com/video/BV15m42157pd/) This chapter introduced POS Line Pay. The next chapter moves from payments to WeCom, where Odoo connects with enterprise communication, login, menus, notifications, and internal collaboration. results matching "" =================== No results matching "" ====================== --- # Chapter 2 Kiosk Self-Ordering · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 2 Kiosk Self-Ordering](https://xp.odoohub.com.cn/en/) =============================================================== Chapter 2 Kiosk Self-Ordering ============================= Kiosk and self-ordering features let customers browse products, place orders, and in some cases pay without a cashier entering every item manually. This is useful for restaurants, cafes, fast food counters, showrooms, and stores that want to reduce queue pressure. > The `pos_self_order` module must be installed before using this feature. Enable Kiosk Mode In POS ------------------------ In POS settings, select the store where you want to enable self-ordering. Under the mobile self-ordering and kiosk options, enable kiosk mode. ![Enable kiosk mode](https://xp.odoohub.com.cn/en/pos/images/kiosk1.png) Odoo provides three self-ordering modes: | Mode | Usage | | --- | --- | | QR Menu | Customers scan a QR code and browse the menu only. | | QR Menu + Ordering | Customers scan a QR code, browse the menu, and place an order. | | Kiosk | Customers place orders from a self-service kiosk screen. | With QR Menu, the customer scans the QR code and opens the mobile menu. ![QR menu](https://xp.odoohub.com.cn/en/pos/images/kiosk2.png) The customer browses the menu, selects products, and places the order. ![Mobile self-ordering](https://xp.odoohub.com.cn/en/pos/images/kiosk3.png) After the order is submitted, Odoo displays a confirmation message. Online Payment -------------- If customers should pay online by themselves, select an online payment mode in the POS settings. ![Online payment setting](https://xp.odoohub.com.cn/en/pos/images/kiosk4.png) If no online payment method is configured, the default process is to pay at the cashier counter. Time-Limited Availability ------------------------- Sometimes only certain POS product categories should be available for online or self-service ordering during a specific time period. Configure this on the POS category. ![Time-limited POS category](https://xp.odoohub.com.cn/en/pos/images/kiosk5.png) This is common in restaurant scenarios, such as breakfast menus, lunch sets, dinner menus, or products that should only be sold during specific service windows. This chapter introduced the basic kiosk and mobile self-ordering setup. The next chapter returns to checkout documents and explains POS receipts and invoices. results matching "" =================== No results matching "" ====================== --- # POS Alipay · Odoo Implementation Manual - Qingdao Ohm Network Technology [POS Alipay](https://xp.odoohub.com.cn/en/) ============================================ POS Alipay ========== Alipay can be used not only on the website, but also in Odoo Point of Sale. This chapter explains how to use Alipay for POS payment and refund in Odoo 18. Module Installation ------------------- First, activate POS Alipay payment. Go to **Settings > POS > Payment Terminals** and enable Alipay payment. ![Enable POS Alipay](https://xp.odoohub.com.cn/en/chapter10/images/alipay_pos.png) Click save to install the POS Alipay module. Configure Alipay Payment ------------------------ Set the payment terminal in POS settings. ![Configure POS Alipay terminal](https://xp.odoohub.com.cn/en/chapter10/images/alipay_pos2.png) Then add the Alipay payment method to the test store. ![Add Alipay payment method](https://xp.odoohub.com.cn/en/chapter10/images/alipay_pos9.png) Receive Payment With Alipay --------------------------- After setup, you can receive payment with Alipay. > POS Alipay uses the same configuration as website Alipay, so no separate provider configuration is required here. Open a POS terminal and sell a product. In this example, we use a notebook. ![POS product example](https://xp.odoohub.com.cn/en/chapter10/images/alipay_pos3.png) Sell a notebook for `10` yuan and click payment. ![POS checkout](https://xp.odoohub.com.cn/en/chapter10/images/alipay_pos4.png) Select Alipay, scan the customer's payment barcode or QR code with a scanner, and click confirm to complete payment. ![Scan Alipay code](https://xp.odoohub.com.cn/en/chapter10/images/alipay_pos5.png) Click validate and print the receipt. ![Validate Alipay POS payment](https://xp.odoohub.com.cn/en/chapter10/images/alipay_pos10.png) Refund With Alipay ------------------ To refund, select the order from the order list and click **Refund**. ![Select order to refund](https://xp.odoohub.com.cn/en/chapter10/images/alipay_pos6.png) In the generated refund screen, select Alipay. ![Refund with Alipay](https://xp.odoohub.com.cn/en/chapter10/images/alipay_pos7.png) Click confirm to complete the refund. ![Confirm Alipay refund](https://xp.odoohub.com.cn/en/chapter10/images/alipay_pos8.png) The POS Alipay payment and refund process is now complete. ![Refund result 1](https://xp.odoohub.com.cn/en/chapter10/images/alipay_pos11.png) ![Refund result 2](https://xp.odoohub.com.cn/en/chapter10/images/alipay_pos12.png) This chapter covered POS Alipay payment and refund. The next chapter introduces Line Pay for POS in regions where Line is widely used. results matching "" =================== No results matching "" ====================== --- # Chapter 4 Mailing Lists · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 4 Mailing Lists](https://xp.odoohub.com.cn/en/) ========================================================= Chapter 4 Mailing Lists ======================= Mailing lists allow website visitors to subscribe to company news, campaigns, product updates, or other communication channels. In Odoo, the website subscription component is connected with the Email Marketing application, so subscribers collected from the website can become part of a mailing list used for future campaigns. This chapter is based on Odoo 17 behavior and explains the common website subscription setup. Email Subscription On The Website --------------------------------- When visitors browse the website, they can subscribe to a mailing list through a subscription block. In the website editor, add the mailing list component to the page. ![Add mailing list component](https://xp.odoohub.com.cn/en/web/images/18.png) After users subscribe to a mailing channel, you can configure a thank-you button or message so the visitor knows the subscription has been received. ![Subscription thank-you setting](https://xp.odoohub.com.cn/en/web/images/19.png) This small feedback message matters. Without it, users may click repeatedly or wonder whether the subscription worked. Custom Mailing Lists -------------------- By default, the website may not already contain the exact mailing list you want to use. To create your own list, go to the Email Marketing application in the backend and create a mailing list. Make sure the list is set as public if it should be available from the website subscription component. ![Create public mailing list](https://xp.odoohub.com.cn/en/web/images/20.png) Then return to the website editor, select the subscription component, and choose the mailing list that visitors should subscribe to. ![Select mailing list on website component](https://xp.odoohub.com.cn/en/web/images/21.png) After this configuration, website visitors who submit the subscription form will be added to the selected list. Implementation Suggestions -------------------------- For a production website, do not treat mailing list subscription as only a page decoration. It should be connected with a real communication plan. | Topic | Suggestion | | --- | --- | | List naming | Use clear list names, such as `Product Updates`, `Monthly Newsletter`, or `Wholesale Customers`. | | Consent | Make the subscription purpose clear to visitors. | | Segmentation | Keep different audiences in different lists when future campaigns need different content. | | Testing | Subscribe with a test email and confirm the contact appears in the expected list. | | Branding | Ensure confirmation messages and campaign templates match the website brand. | This chapter introduced the website mailing list subscription flow and how to connect a website block to a backend mailing list. The next chapter returns to sales portal behavior and explains when customers can sign quotations or sales orders online. results matching "" =================== No results matching "" ====================== --- # SF International · Odoo Implementation Manual - Qingdao Ohm Network Technology [SF International](https://xp.odoohub.com.cn/en/) ================================================== SF International ================ SF Express supports some Hong Kong-related scenarios, but cross-border eCommerce and foreign trade often require more complete international shipping and customs declaration support. SF International provides better support for cross-border transportation and customs workflows. This chapter explains how to use the SF International module in Odoo for cross-border delivery. Preparation ----------- Unlike domestic Fengqiao, SF International uses the [SF International Open Platform](https://openapi-portal.sf.global/) . It is a separate platform, so register a separate account before configuration. ### Create An App After registration, create an app in the open platform console. ![Create SF International app](https://xp.odoohub.com.cn/en/chapter10/images/sfi1.png) After the app is created, obtain these key parameters: | Parameter | | --- | | APPKEY | | APPSCERT | | AESKEY | | CUSTOM\_CODE | ![SF International credentials](https://xp.odoohub.com.cn/en/chapter10/images/sfi2.png) Finally, associate the APIs you need with the app. ![Associate SF International APIs](https://xp.odoohub.com.cn/en/chapter10/images/sfi3.png) ### Odoo Configuration Install the [SF International module](https://apps.odoo.com/apps/modules/18.0/mommy_delivery_sfi) developed by Qingdao Ohm Network Technology. ![Install SF International module](https://xp.odoohub.com.cn/en/chapter10/images/sfi4.png) After installation, go to **Inventory > Configuration > Delivery Methods**, open SF International, and enter the parameters obtained from the platform. ![Configure SF International delivery method](https://xp.odoohub.com.cn/en/chapter10/images/sfi5.png) After configuration, SF International can be used for delivery. Regular Business Flow --------------------- ### Shipping Rate Estimation After creating a sales order, click **Add Shipping**, choose SF International, enter the total shipment weight, and click **Get Rate**. ![SF International rate estimation](https://xp.odoohub.com.cn/en/chapter10/images/sfi6.png) Odoo displays the estimated shipping cost. ### Electronic Waybill Similar to the domestic SF module, after validating the delivery order, Odoo fills in the tracking number returned by SF International and posts the electronic waybill in the chatter. ![SF International waybill](https://xp.odoohub.com.cn/en/chapter10/images/sfi7.png) ### Tracking Click the tracking button to open the SF International website and view shipment tracking. ![SF International tracking](https://xp.odoohub.com.cn/en/chapter10/images/sfi8.png) Cross-Border Business Flow -------------------------- ### Customs Declaration Cross-border shipments usually require product declaration information and sender/recipient identity data. The module adapts these requirements. Configure the user's identity information on the contact profile. ![Identity information](https://xp.odoohub.com.cn/en/chapter10/images/sfi9.png) After generating the electronic waybill on the delivery order, click the SF International upload button to submit identity documents for customs declaration. ![Upload customs document](https://xp.odoohub.com.cn/en/chapter10/images/sfi10.png) After uploading, click the verification button to validate the submitted certification documents. If verification fails, the system prompts the user to upload again. ![Verify certification document](https://xp.odoohub.com.cn/en/chapter10/images/sfi11.png) This chapter introduced SF International for cross-border shipping and customs declaration. The next chapters cover other domestic and international carrier integrations. results matching "" =================== No results matching "" ====================== --- # KDNiao Module · Odoo Implementation Manual - Qingdao Ohm Network Technology [KDNiao Module](https://xp.odoohub.com.cn/en/) =============================================== KDNiao Module ============= [KDNiao](http://www.kdniao.com/reg?from=TX-Kevin) is a widely used logistics integration and tracking platform in China. It provides APIs for more than 600 logistics companies and is a practical option when a company needs broad carrier coverage. With the release of Odoo 17, we upgraded the KDNiao module for the newer Odoo version. This chapter explains how to use it. Register A KDNiao Account ------------------------- To use KDNiao tracking services, register an account on the [KDNiao platform](http://www.kdniao.com/reg?from=TX-Kevin) . After registration, obtain the user ID and APPKEY from the personal center. ![KDNiao credentials](https://xp.odoohub.com.cn/en/chapter10/images/kdn.png) Install And Configure The Module -------------------------------- After obtaining the user ID and APPKEY, enable the KDNiao integration module in system settings. ![Enable KDNiao module](https://xp.odoohub.com.cn/en/chapter10/images/kdn2.png) After installation, open the KDNiao settings menu and enter the user ID and APPKEY. ![KDNiao settings](https://xp.odoohub.com.cn/en/chapter10/images/kdn3.png) You can then use KDNiao for delivery and tracking. Activate Carriers ----------------- KDNiao supports more than 600 logistics providers, but most companies only use a few. Therefore, all carriers are archived by default. Activate only the carriers you need from the archived list. ![Activate KDNiao carriers](https://xp.odoohub.com.cn/en/chapter10/images/kdn4.png) Use KDNiao For Delivery ----------------------- Using SF Express as an example, create a sales order and choose SF Express as the carrier on the generated delivery order. ![KDNiao delivery order](https://xp.odoohub.com.cn/en/chapter10/images/kdn5.png) In Odoo 17, the electronic label printing logic was adjusted to match other delivery methods. When the transfer is completed, the generated electronic label is attached to the chatter automatically. ![KDNiao waybill in chatter](https://xp.odoohub.com.cn/en/chapter10/images/kdn6.png) Print Electronic Label ---------------------- Click the attached PDF file to print the electronic label. ![Print KDNiao label](https://xp.odoohub.com.cn/en/chapter10/images/kdn7.png) Tracking -------- Tracking information is displayed automatically under the tracking number. Users can also click **Update Tracking Information** to refresh it manually. ![KDNiao tracking](https://xp.odoohub.com.cn/en/chapter10/images/kdn8.png) Pros And Cons ------------- The advantage of KDNiao is broad carrier coverage. You do not need to integrate each carrier separately. The limitation is that KDNiao's query service is paid and does not support shipping fee estimation. If you mainly use a single carrier such as SF Express, direct carrier integration is usually recommended. Technical Support ----------------- For more information about the KDNiao module, follow OdooHub for updates. results matching "" =================== No results matching "" ====================== --- # Chapter 9 Automatic Delivery For Lot And Serial-Tracked POS Products · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 9 Automatic Delivery For Lot And Serial-Tracked POS Products](https://xp.odoohub.com.cn/en/) ====================================================================================================== Chapter 9 Automatic Delivery For Lot And Serial-Tracked POS Products ==================================================================== > Based on Odoo 18. When POS creates an order, Odoo generates stock movements based on the POS order lines. If the product is not tracked by lot or serial number, Odoo can reserve stock and complete the delivery automatically. However, when the product is tracked by lot or serial number, automatic delivery may fail because the generated picking requires the user to manually confirm quantities and tracking information. This chapter explains how the Qingdao Ohm POS solution handles automatic delivery for lot and serial-tracked products. Enable Automatic Delivery For Lots And Serials ---------------------------------------------- To solve this issue, our POS solution adds an automatic delivery feature for lot and serial-tracked products. In **Point of Sale > Settings > Inventory**, enable this option. ![Enable automatic lot delivery](https://xp.odoohub.com.cn/en/pos/images/10.png) Automatic Lot Delivery ---------------------- After the option is enabled, when a POS order is created and enough stock is available, Odoo can automatically assign the stock and complete the delivery. ![Generated picking](https://xp.odoohub.com.cn/en/pos/images/11.png) ![Completed picking](https://xp.odoohub.com.cn/en/pos/images/12.png) This is useful for stores selling serialized or lot-tracked products, such as electronics, devices, regulated goods, or warranty-managed items. It reduces manual backend work after POS checkout while still keeping traceability in inventory records. This chapter completed the POS section by covering automatic delivery for tracked products. The next part of the manual moves into system settings and technical configuration topics. results matching "" =================== No results matching "" ====================== --- # YTO Express · Odoo Implementation Manual - Qingdao Ohm Network Technology [YTO Express](https://xp.odoohub.com.cn/en/) ============================================= YTO Express =========== YTO Express is one of the major courier providers in China. This chapter explains how to use the [YTO Express module](https://hub.mixoo.cn/shop/21) to connect Odoo with YTO delivery services. Installation And Configuration ------------------------------ To use YTO Express, enable it under **Settings > Inventory > Logistics Integration**. ![Enable YTO Express](https://xp.odoohub.com.cn/en/chapter10/images/yto.png) This option installs the YTO module automatically. After installation, go to **Inventory > Configuration > Delivery Methods** and open YTO Express. ![YTO delivery method](https://xp.odoohub.com.cn/en/chapter10/images/yto2.png) Enter the sandbox account and password obtained from YTO. YTO customer codes and keys are divided into two types: | Type | Description | | --- | --- | | STD | Customer code and key authorized by a YTO branch, usually starting with `K`. Used for key APIs such as order creation, cancellation, and electronic waybill. | | Basic | Customer code and key starting with `OPEN`, generated from the open platform and usable after approval. | Sales Order ----------- YTO is used in a similar way to other delivery carriers. Create a sales order and select YTO Express when adding a delivery method. ![Add YTO to sales order](https://xp.odoohub.com.cn/en/chapter10/images/yto3.png) Click **Get Rate** to estimate the shipping cost based on the customer's delivery address. Click **Add** to add the shipping cost to the sales order. ![YTO rate on sales order](https://xp.odoohub.com.cn/en/chapter10/images/yto4.png) Delivery -------- After the sales order is confirmed, Odoo can obtain the tracking number and electronic waybill during delivery. ![YTO tracking number](https://xp.odoohub.com.cn/en/chapter10/images/yto5.png) ![YTO electronic waybill](https://xp.odoohub.com.cn/en/chapter10/images/yto6.png) Click the tracking button in the upper right corner to query the shipment on the YTO website. ![YTO tracking](https://xp.odoohub.com.cn/en/chapter10/images/yto7.png) Website Orders -------------- YTO Express can also be offered as a delivery option during website checkout, allowing customers to select YTO and estimate shipping cost. ![YTO on website checkout](https://xp.odoohub.com.cn/en/chapter10/images/yto8.png) This chapter introduced YTO Express integration. The next chapter explains a DHL solution adapted for China export and customs declaration scenarios. results matching "" =================== No results matching "" ====================== --- # Chapter 4 Payment Methods · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 4 Payment Methods](https://xp.odoohub.com.cn/en/) =========================================================== Chapter 4 Payment Methods ========================= Payment methods define how a POS order is paid. A store may accept cash, bank cards, online payments, QR code payments, or integrated payment terminals. Correct payment method configuration affects cashier operation, accounting journals, reconciliation, and end-of-day control. This chapter introduces how to configure POS payment methods. Add A Payment Method -------------------- Go to **Point of Sale > Configuration > Payment Methods** to add payment methods. ![Payment methods menu](https://xp.odoohub.com.cn/en/pos/images/pos_payment1.png) Here is an example of a cash payment method. ![Cash payment method](https://xp.odoohub.com.cn/en/pos/images/pos_payment2.png) Key fields include: | Field | Meaning | | --- | --- | | Online Payment | Payment is completed through an integrated online payment provider, usually on a web page. | | Identify Customer | Forces the order to be linked to a customer. | | Journal | The accounting journal used by the POS payment method. | | Point of Sale | The POS stores where this payment method is available. | | Payment Terminal | Choose an integrated terminal or no terminal. | > A cash payment method should use its own cash journal. Different cash payment methods should not share the same cash journal. Bank journals, however, can be shared by multiple payment methods. POS Payment ----------- After payment methods are configured, cashiers can select the available payment method in the POS frontend and complete the checkout. The payment method list shown to the cashier depends on the POS configuration and the payment methods assigned to that POS store. QR Code Payments ---------------- In addition to common cash and bank payments, Odoo also supports QR code payment flows in some localizations. > The QR codes mentioned here are bank-app QR codes supported by specific localization rules. They are different from domestic Chinese WeChat Pay, Alipay, or UnionPay integrations. ### Configuration QR code payment behavior differs by country and fiscal localization. Refer to the official documentation for the relevant country-specific configuration. ![QR code payment configuration](https://xp.odoohub.com.cn/en/pos/images/pos_payment3.png) After QR code payment is configured, the POS frontend can display a QR code on the customer screen during checkout. The customer scans the code and completes payment. ![QR code on customer screen](https://xp.odoohub.com.cn/en/pos/images/pos_payment4.png) This chapter introduced POS payment method setup and QR code payment behavior. The next chapter explains POS pricelists, which control product prices in different sales situations. results matching "" =================== No results matching "" ====================== --- # Advanced WeCom Applications · Odoo Implementation Manual - Qingdao Ohm Network Technology [Advanced WeCom Applications](https://xp.odoohub.com.cn/en/) ============================================================= Advanced WeCom Applications =========================== The previous chapter introduced the basic WeCom and Odoo integration. In practice, the connection can do much more than login and notifications. This chapter introduces advanced scenarios including projects, attendance, approvals, and calendar integration. Projects -------- The solution adds support for the Project app. Enable project support in settings. ![Enable WeCom project support](https://xp.odoohub.com.cn/en/chapter10/images/wework22.png) When a project administrator assigns a task to an employee, Odoo automatically sends a WeCom notification to that employee. ![Task assignment notification setting](https://xp.odoohub.com.cn/en/chapter10/images/wework23.png) ![Task notification in WeCom](https://xp.odoohub.com.cn/en/chapter10/images/wework24.png) The employee can open the task directly from the link in WeCom. Attendance ---------- The WeCom solution can help companies synchronize attendance records into Odoo. ### View WeCom Attendance Records First, grant attendance API permissions to the custom application in the WeCom admin backend. ![Authorize attendance API](https://xp.odoohub.com.cn/en/chapter10/images/wework17.png) > For applications created before December 1, 2023, WeCom used a dedicated attendance APPID and secret. Later versions changed this behavior. After installing the advanced WeCom module, an attendance menu appears in the root menu. ![Attendance menu](https://xp.odoohub.com.cn/en/chapter10/images/11.png) Open the attendance menu to view the list of attendance employees. Open one employee to view all related WeCom attendance records. ![Attendance employee list](https://xp.odoohub.com.cn/en/chapter10/images/12.png) ### Native Attendance Records When synchronizing WeCom attendance records, the solution also synchronizes the records into Odoo's native Attendance app, making later payroll or attendance statistics easier. ![Native Odoo attendance records](https://xp.odoohub.com.cn/en/chapter10/images/13.png) ### Synchronization Settings Different customers have different needs, so the solution provides synchronization strategies: | Strategy | Meaning | | --- | --- | | Today | Synchronize only today's attendance records. | | One Week | Synchronize records from one week before today to today. | | One Month | Synchronize records from one month before today to today. | > For specific-date synchronization, users can set the target date in scheduled actions. Contact Qingdao Ohm technical support for detailed configuration. When creating native Odoo attendance records, Odoo may have restrictions. For example, it may not allow a new check-in record if the previous day's check-out is missing. The solution therefore provides exception strategies: | Strategy | Meaning | | --- | --- | | Empty | Skip the current record when an exception occurs. | | Same as check-in time | Use the check-in time as the check-out time to keep the native record complete. | ### Synchronization Operations Users can trigger synchronization from multiple places. In WeCom settings, click **Synchronize Attendance Records**. ![Synchronize attendance from settings](https://xp.odoohub.com.cn/en/chapter10/images/14.png) The system synchronizes WeCom attendance records according to the configured strategy. You can also synchronize a single employee from the employee profile through **Action > Synchronize WeCom Attendance Records**. ![Synchronize attendance for one employee](https://xp.odoohub.com.cn/en/chapter10/images/15.png) Scheduled actions can also be configured to synchronize records automatically. ![Attendance synchronization scheduled action](https://xp.odoohub.com.cn/en/chapter10/images/16.png) Video introduction: Video introduction Approvals --------- Odoo native apps do not provide a full complex approval workflow engine in many business scenarios. A common open-source approach is to use OCA tier validation modules, but their configuration can be complex and the user experience may not fit all companies. In China, many companies already use DingTalk, WeCom, and similar IM tools for daily approvals. Therefore, the solution integrates Odoo with WeCom approvals, using WeCom's approval flow capability to complement Odoo. We use purchase approval as an example. First, install the advanced WeCom module. Then go to **Settings > WeCom > Approvals** and enable purchase approval. ![Enable purchase approval](https://xp.odoohub.com.cn/en/chapter10/images/wework42.png) ### WeCom Backend Setup Configure the approval app in the WeCom backend. ![WeCom approval app](https://xp.odoohub.com.cn/en/chapter10/images/wework40.png) Add approval permission to the custom application. Then configure the callback interface in the custom application. ![Approval callback setting](https://xp.odoohub.com.cn/en/chapter10/images/wework41.png) The callback URL is: https://yourdomain/wework/approval ### Message Settings In Odoo WeCom settings, add the AESKEY and Token needed to parse WeCom messages. ![Approval message settings](https://xp.odoohub.com.cn/en/chapter10/images/wework26.png) ### Synchronize Approval Templates Go to **Settings > Approval > Approval Templates** and synchronize the purchase approval template into Odoo. ![Synchronize approval template](https://xp.odoohub.com.cn/en/chapter10/images/wework27.png) > WeCom approval templates include native and custom templates. This example uses a native template. After synchronization, map the controls in the approval template to the corresponding Odoo fields. ### Submit Purchase Approval After the template is configured, users can submit a purchase quotation for WeCom approval. ![Submit purchase approval button](https://xp.odoohub.com.cn/en/chapter10/images/wework28.png) After preparing the RFQ, click **Submit WeCom Approval** to submit the purchase order to the WeCom approval flow. ![Submit purchase order approval](https://xp.odoohub.com.cn/en/chapter10/images/wework29.png) After submission, Odoo displays the WeCom approval number and approval status. ![Approval number and status](https://xp.odoohub.com.cn/en/chapter10/images/wework30.png) When the purchase manager approves in WeCom, the purchase order is automatically confirmed in Odoo. ![Approved purchase order](https://xp.odoohub.com.cn/en/chapter10/images/wework31.png) Calendar Management ------------------- In the WeCom admin backend, go to **Collaboration > Calendar** and add the custom application under applications allowed to call the API. ![WeCom calendar API setting](https://xp.odoohub.com.cn/en/chapter10/images/wxplus10.png) After that, calendars created in Odoo can be synchronized to WeCom. This chapter introduced advanced WeCom applications for projects, attendance, approvals, and calendar integration. The next chapter focuses on WeCom-based petty cash and expense reimbursement workflows. results matching "" =================== No results matching "" ====================== --- # DHL For China Export Scenarios · Odoo Implementation Manual - Qingdao Ohm Network Technology [DHL For China Export Scenarios](https://xp.odoohub.com.cn/en/) ================================================================ DHL For China Export Scenarios ============================== A customer wanted to use DHL to ship goods overseas. Because Odoo natively includes a DHL module, the requirement looked simple at first: configure the official module and start shipping. In practice, the official module still used an older XML interface, while DHL had already announced that the old interface would gradually be replaced by the newer RESTful APIs. After several failed attempts with the official module, we implemented a DHL application adapted for China export scenarios, including customs declaration needs. Installation And Configuration ------------------------------ Install the DHL module. ![Install DHL module](https://xp.odoohub.com.cn/en/chapter10/images/DHL1.png) After installation, a new DHL delivery method appears in delivery methods. To distinguish it from the official one, it is named `MyDHL` here. ![MyDHL delivery method](https://xp.odoohub.com.cn/en/chapter10/images/DHL2.png) To use DHL, apply for a DHL username, password, and account. Export/import companies also need a DSP account and password for customs declaration. After configuration, DHL can be used for shipping. Sales Order Rate Estimation --------------------------- Like other delivery methods, add a shipping method on the sales order and choose MyDHL. ![DHL on sales order](https://xp.odoohub.com.cn/en/chapter10/images/DHL3.png) Shipping And Tracking --------------------- After confirming the sales order, open the delivery order, configure the required shipping parameters, and complete the delivery. ![DHL delivery order](https://xp.odoohub.com.cn/en/chapter10/images/DHL4.png) Odoo receives the electronic label returned by DHL. ![DHL electronic label 1](https://xp.odoohub.com.cn/en/chapter10/images/DHL5.png) ![DHL electronic label 2](https://xp.odoohub.com.cn/en/chapter10/images/DHL6.png) For normal shipments, this may be enough. For China export and customs requirements, additional online declaration is needed. Online Declaration ------------------ Customs declaration requires many parameters. To simplify user operation, the module adapts the required data structures. In addition to configuring the delivery method, users need to configure product parameters. Example: ![DHL product declaration parameters](https://xp.odoohub.com.cn/en/chapter10/images/DHL8.png) After configuration, click the upload file button on the delivery order. If the data is valid, Odoo displays an upload success message. ![DHL upload declaration file](https://xp.odoohub.com.cn/en/chapter10/images/DHL9.png) If there are issues, follow the error prompt and correct the data. Finally, click online declaration to complete the declaration. ![DHL online declaration](https://xp.odoohub.com.cn/en/chapter10/images/DHL10.png) This chapter introduced the China-adapted DHL solution. The next chapter covers KDNiao, a logistics aggregation platform for many domestic carriers. results matching "" =================== No results matching "" ====================== --- # SF Express · Odoo Implementation Manual - Qingdao Ohm Network Technology [SF Express](https://xp.odoohub.com.cn/en/) ============================================ SF Express ========== > Applicable versions: Odoo 15.0, 16.0, 17.0, and 18.0. Features may differ by version; contact support for details. SF Express is one of the most frequently used courier providers in China. For China-based Odoo implementations, SF Express integration is a common requirement for sales delivery, waybill generation, tracking, and electronic shipping labels. This chapter explains how to use the [SF Express module](https://hub.mixoo.cn/shop/8) to connect Odoo with SF domestic delivery services. Prerequisites ------------- Install the following Python libraries: autils == 0.3.12 sf-sdk >= 2.0.0.8 Fengqiao Platform Integration ----------------------------- To use the SF module, first register an account on [Fengqiao](https://open.sf-express.com/) , the SF Express API platform. Then obtain the customer code, checkword, and monthly settlement number. 1. Open Fengqiao, click developer integration, and create an application. ![Create SF application](https://xp.odoohub.com.cn/en/chapter10/images/sf1.png) 2. Enter the application name, developer language, and description. Keep the sandbox whitelist option as default and complete creation. ![Application information](https://xp.odoohub.com.cn/en/chapter10/images/sf2.png) 3. After the application is created, click **View API** and associate the APIs required by the module. ![Associate APIs](https://xp.odoohub.com.cn/en/chapter10/images/sf3.png) 4. The SF module requires the following APIs: * Cloud printing waybill API * ISV custom template list API * Order creation API * Order result query API * Order cancellation API * Order filtering API * Route query API 5. Return to the application details page and obtain the customer code, monthly settlement card number, and checkword. ![SF application credentials](https://xp.odoohub.com.cn/en/chapter10/images/sf4.png) After these steps, the basic SF-side setup is complete. Module Configuration -------------------- 1. Go to **Settings > General Settings > Sales > Delivery Settings** and enable SF Express. ![Enable SF Express](https://xp.odoohub.com.cn/en/chapter10/images/sf5.png) Save the settings to install the module. 2. Go to **Inventory > Configuration > Delivery Methods** and open SF Express. ![SF delivery method](https://xp.odoohub.com.cn/en/chapter10/images/sf6.png) 3. Enter the monthly settlement card number, customer code, and checkword in the basic settings. ![SF credentials in Odoo](https://xp.odoohub.com.cn/en/chapter10/images/sf7.png) 4. Select the electronic waybill template code you want to use. ![SF label template](https://xp.odoohub.com.cn/en/chapter10/images/sf9.png) The basic SF module configuration is now complete. User Guide ---------- > Fengqiao requires three successful API tests before production access can be enabled. Start with the sandbox checkword and switch to the production checkword after testing. ### Add SF Express To A Sales Order Create a sales order, for example selling a laptop, then add a delivery method and select SF Express. ![Add SF to sales order](https://xp.odoohub.com.cn/en/chapter10/images/sf8.png) Confirm the sales order and generate a delivery order. ![Generated delivery order](https://xp.odoohub.com.cn/en/chapter10/images/sf10.png) The delivery order selects SF by default. Choose the SF product and goods description, then validate the delivery. The electronic waybill is generated in the chatter. ![SF electronic waybill](https://xp.odoohub.com.cn/en/chapter10/images/sf11.png) ### Cancel Shipment Click the cancel button next to logistics tracking to cancel the SF order. ![Cancel SF order](https://xp.odoohub.com.cn/en/chapter10/images/sf12.png) ### Tracking Each time the delivery order is opened, the module updates the latest route information automatically. Users can also click the update button manually or click the tracking button to open the SF website. ![SF tracking](https://xp.odoohub.com.cn/en/chapter10/images/sf13.png) ### Custom SF Source Order Number The module supports three source order number strategies: | Strategy | Description | | --- | --- | | Use delivery order number | Use `SO/OUT/XXX` or the delivery order number directly as the SF source order number. | | Use origin document number | Use source documents such as `PO0001` or `SO0001` as the SF source order number. | | Use random suffix | Use delivery order number plus a four-character random suffix, such as `WH/OUT/00015-r9jc`. | ### Custom Sender Address Type The module supports three sender address strategies: | Strategy | Use Case | | --- | --- | | Current company address | Suitable for companies with one centralized shipping address. | | Warehouse address | Suitable when company address and shipping warehouse are different, or when multiple warehouses are used. | | Fixed address | Use a specific fixed address as sender address. | Custom address formatting is also supported, similar to sales order address formatting. ### Cross-Border Support For cross-border shipments, SF requires declared goods value. The module supports declared value fields. ![Declared goods value](https://xp.odoohub.com.cn/en/chapter10/images/sf14.png) If the sender or recipient address is outside mainland China, this field is required. ### Language Support The module supports multilingual settings. The language can follow the system or use a fixed language. ![SF language setting](https://xp.odoohub.com.cn/en/chapter10/images/sf15.png) ### Batch Label Printing To make order creation and waybill printing easier, the module provides batch electronic label printing. > Version requirements: `15.7.7+`, `16.8.0+`, `17.0.1.0+`, `18.0.1.0+`. FAQ --- ### Estimated shipping price does not show on website checkout Check whether sender and destination addresses are valid. Backend logs usually provide diagnostic details. ### Technical Support SF Open Platform requires at least three successful tests before production access. If you need help, follow OdooHub and contact support with proof of purchase. results matching "" =================== No results matching "" ====================== --- # Xiaohongshu Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology [Xiaohongshu Integration](https://xp.odoohub.com.cn/en/) ========================================================= Xiaohongshu Integration ======================= Xiaohongshu, also known as RED, is a popular social sharing and shopping platform among younger consumers in China. This chapter introduces how to use our Xiaohongshu module to connect the platform with Odoo. > Current version: `17.0.1.0`. Basic Configuration ------------------- First, install the Xiaohongshu module. ![Install Xiaohongshu module](https://xp.odoohub.com.cn/en/chapter10/images/xhs1.png) After installation, go to **Xiaohongshu > Configuration > Stores** and create a store. ![Create Xiaohongshu store](https://xp.odoohub.com.cn/en/chapter10/images/xhs2.png) Enter the APPKEY, APPSCERT, and other information from the application created in the Xiaohongshu merchant backend. Click the authorization button to redirect to the platform for authorization. After authorization, click **Get Access Token**. Synchronize Basic Data ---------------------- After obtaining the Access Token, synchronize base data from the configuration menu. ![Synchronize Xiaohongshu base data](https://xp.odoohub.com.cn/en/chapter10/images/xhs3.png) Synchronize categories, attributes, brands, logistics plans, and logistics companies in sequence. Synchronize Products -------------------- Before synchronizing products, make sure the base data mentioned above has been synchronized. Click **Configuration > Synchronize Products**. ![Synchronize Xiaohongshu products](https://xp.odoohub.com.cn/en/chapter10/images/xhs4.png) After synchronization, products can be viewed under **Xiaohongshu > Products > Product Templates** and **Product Variants**. The product form shows Xiaohongshu-specific product details. ![Xiaohongshu product detail](https://xp.odoohub.com.cn/en/chapter10/images/xhs5.png) Synchronize Orders ------------------ After products are synchronized, synchronize orders. Due to Xiaohongshu platform restrictions, each synchronization can only cover one day of orders. Therefore, the module provides a date selection field. Click **Configuration > Synchronize Orders**. ![Synchronize Xiaohongshu orders](https://xp.odoohub.com.cn/en/chapter10/images/xhs6.png) Click confirm to start order synchronization. After synchronization, users can view and process orders under **Xiaohongshu > Orders > Quotations / Orders**. ![Xiaohongshu synchronized orders](https://xp.odoohub.com.cn/en/chapter10/images/xhs7.png) Note that due to Xiaohongshu's official restrictions, sensitive customer information can only be obtained for orders waiting for shipment. For other statuses, the module uses the Xiaohongshu customer name as a substitute. Conclusion ---------- The current Xiaohongshu integration covers foundational connection, base data synchronization, product synchronization, and order synchronization. More functions will be added gradually as the platform capabilities and customer needs evolve. results matching "" =================== No results matching "" ====================== --- # 17TRACK Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology [17TRACK Integration](https://xp.odoohub.com.cn/en/) ===================================================== 17TRACK Integration =================== 17TRACK is a global parcel tracking platform. Its core value is simple: it aggregates logistics provider interfaces and provides one-stop tracking across many carriers. Examples of supported carriers include: Postal: EMS, China Post, USPS Express: DHL, FedEx, UPS eCommerce logistics: Cainiao, Yanwen, 4PX Given one tracking number, 17TRACK can automatically identify the carrier and track the shipment. It covers more than 200 countries and over 1,000 logistics providers. Qingdao Ohm Network Technology launched the 17TRACK integration based on real customer needs. This chapter explains how to integrate Odoo with 17TRACK. Module Access ------------- The module is available on the [Odoo App Store](https://apps.odoo.com/apps/modules/19.0/mommy_delivery_17track) . Supported versions: Odoo 15.0, 16.0, 17.0, 18.0, and 19.0. Installation And Configuration ------------------------------ Install the 17TRACK module in Odoo. ![Install 17TRACK module](https://xp.odoohub.com.cn/en/chapter10/images/17track.png) After installation, configure the Access Token obtained from the 17TRACK website under **Settings > Technical > System Parameters**. ![17TRACK access token](https://xp.odoohub.com.cn/en/chapter10/images/17token.png) Activate Carriers ----------------- Because 17TRACK supports a large number of carriers, the module archives all carriers by default. Users should activate only the carriers they need from the archived list. ![Activate archived carriers](https://xp.odoohub.com.cn/en/chapter10/images/archived.png) Configure Webhook Address ------------------------- 17TRACK uses webhook-based synchronization. Configure the webhook address in the 17TRACK backend so tracking updates can be pushed back to Odoo. Tracking -------- After webhook configuration is complete, Odoo can show shipment tracking on transfer orders. ![17TRACK tracking in Odoo](https://xp.odoohub.com.cn/en/chapter10/images/17track2.png) This chapter introduced 17TRACK integration. It is useful when one company ships with many global carriers and needs a centralized tracking layer. results matching "" =================== No results matching "" ====================== --- # NMI Payment · Odoo Implementation Manual - Qingdao Ohm Network Technology [NMI Payment](https://xp.odoohub.com.cn/en/) ============================================= NMI Payment =========== NMI is a payment service provider and payment gateway with offices in the United States and the United Kingdom. It provides credit card authorization and settlement services for banks and processors in the US, UK, and Canada. This chapter explains how to enable NMI payment in Odoo. Enable NMI Payment ------------------ Install the NMI payment module from Odoo Apps. ![Install NMI payment module](https://xp.odoohub.com.cn/en/chapter10/images/nmi1.png) Configure NMI Payment --------------------- Go to **Website > Configuration > Payment Providers**, select NMI, and enter the required parameters. ![NMI payment settings](https://xp.odoohub.com.cn/en/chapter10/images/nmi2.png) Key parameters include: | Field | Description | | --- | --- | | Security Key | Private key obtained from the NMI merchant portal. | | Tokenization | Tokenization token type for Collect.js. | | Public Key | Public key for Collect Checkout. | Use NMI In Online Shop ---------------------- After NMI parameters are configured, customers can use NMI at checkout. On the checkout page, select NMI, enter card number, expiration date, and CVV, then click pay. ![NMI checkout form](https://xp.odoohub.com.cn/en/chapter10/images/nmi3.png) ![NMI payment result](https://xp.odoohub.com.cn/en/chapter10/images/nmi4.png) After payment is completed, the order can be processed like other paid orders. This chapter introduced NMI payment for Odoo online shop scenarios. results matching "" =================== No results matching "" ====================== --- # Alibaba Cloud SMS · Odoo Implementation Manual - Qingdao Ohm Network Technology [Alibaba Cloud SMS](https://xp.odoohub.com.cn/en/) =================================================== Alibaba Cloud SMS ================= Due to SMS service restrictions in China, Odoo's native SMS service is often not suitable for domestic deployments. Alibaba Cloud SMS can be used as a local replacement for Odoo SMS sending. This chapter explains how to use Alibaba Cloud SMS in Odoo. Alibaba Cloud Configuration --------------------------- To use Alibaba Cloud SMS, first register an Alibaba Cloud account and obtain the API Key and API Secret. ![Alibaba Cloud SMS API credentials](https://xp.odoohub.com.cn/en/chapter10/images/aliyun_sms.png) Then create an SMS message template. ![Create SMS template](https://xp.odoohub.com.cn/en/chapter10/images/aliyun_sms2.png) After creating the SMS template, keep the template signature for later configuration. Use Alibaba Cloud SMS In Odoo ----------------------------- ### Enable Alibaba Cloud SMS Go to **Settings > Ohm > Mail And SMS Settings** and enable Alibaba Cloud SMS. ![Enable Alibaba Cloud SMS](https://xp.odoohub.com.cn/en/chapter10/images/aliyun_sms3.png) Click save to install the Alibaba Cloud SMS module. ### Configure Alibaba Cloud SMS After installation, go to **Settings > Technical > Alibaba Cloud SMS** and add an SMS configuration. ![Alibaba Cloud SMS config list](https://xp.odoohub.com.cn/en/chapter10/images/aliyun_sms4.png) ![Alibaba Cloud SMS config form](https://xp.odoohub.com.cn/en/chapter10/images/aliyun_sms5.png) ### Bind SMS Configuration To Company In company settings, bind the SMS configuration created above. ![Bind SMS config to company](https://xp.odoohub.com.cn/en/chapter10/images/aliyun_sms6.png) ### Create SMS Template In Odoo Go to **Settings > Technical > Alibaba Cloud SMS > SMS Templates** and create an SMS template. This example uses an Alibaba Cloud test template. ![Create Odoo SMS template](https://xp.odoohub.com.cn/en/chapter10/images/aliyun_sms7.png) Now the system is ready to send SMS messages. ### Send A Test SMS Go to **Settings > Technical > Phone And SMS** and create a new SMS message. ![Create SMS message](https://xp.odoohub.com.cn/en/chapter10/images/aliyun_sms8.png) Click send. If successful, the status changes to sent. ![SMS sent status](https://xp.odoohub.com.cn/en/chapter10/images/aliyun_sms9.png) If sending fails, Odoo displays the failure reason. This chapter introduced Alibaba Cloud SMS as a domestic SMS replacement for Odoo. results matching "" =================== No results matching "" ====================== --- # Chapter 1 Portal · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 1 Portal](https://xp.odoohub.com.cn/en/) ================================================== Chapter 1 Portal ================ Odoo Portal allows customers, vendors, and external users to view selected documents without giving them full backend access. In sales and service scenarios, a portal user can review quotations, sales orders, invoices, delivery information, and shared documents from the website front end. In practice, portal usability often determines whether customers are willing to use the system. This chapter explains portal sales search, product images on portal orders, multi-company portal links, document sharing, access token behavior, and enhanced token management. Portal Sales ------------ ### Search Sales Orders In The Portal By default, the portal sales order page supports sorting, but it does not provide rich search or group-by options. ![Default portal order list](https://xp.odoohub.com.cn/en/web/images/1.png) For customers with many orders, this is not convenient enough. A portal user may want to search by order number, product, salesperson, status, or time period. To improve this experience, our [Portal Sales Solution](https://odoohub.com.cn/) adds search, filter, and group-by support for portal sales orders. ![Enhanced portal sales search](https://xp.odoohub.com.cn/en/web/images/2.png) The enhanced filters include the following options. ![Portal filters](https://xp.odoohub.com.cn/en/web/images/3.png) The enhanced group-by options help users quickly organize orders by business dimension. ![Portal group by](https://xp.odoohub.com.cn/en/web/images/4.png) Search options are also extended so portal users can find orders faster. ![Portal search options](https://xp.odoohub.com.cn/en/web/images/5.png) This type of enhancement is useful for wholesale customers, distributors, franchisees, and long-term customers who need to check historical orders regularly. ### Product Images On Portal Orders After a customer registers on the website and becomes a portal user, they can view their orders in the portal center. A typical portal order page looks like this: ![Portal order preview](https://xp.odoohub.com.cn/en/web/images/preview.png) Native Odoo does not always show product images in portal order lines. In many businesses, however, customers expect to see the product picture directly on the order page. This is especially helpful for apparel, electronics, spare parts, gifts, and other visual products. Our [Portal Solution](https://odoohub.com.cn/) adds support for product images in portal sales orders. Go to **Settings > Sales > Quotations & Orders**, then enable the option to display product images on sales orders. ![Enable product images on portal sales orders](https://xp.odoohub.com.cn/en/web/images/image.png) After saving the setting, product images appear in the portal sales order line details. ![Portal sales order product image](https://xp.odoohub.com.cn/en/web/images/portal_sale.png) When the customer clicks the image, they can preview it, zoom in, zoom out, or download it. ![Portal product image preview](https://xp.odoohub.com.cn/en/web/images/portal_sale_preview.png) This keeps the portal order closer to the way customers recognize products in daily purchasing, instead of forcing them to rely only on internal product codes. Portal Links In Multi-Company Environments ------------------------------------------ Some Odoo databases contain multiple companies and multiple websites. In this situation, portal links can easily become confusing if invitation emails, password reset emails, or shared document links use the wrong domain. Native Odoo can determine the URL used in portal emails according to the following logic: 1. If the customer contact is linked to a website, Odoo uses that website URL in the email link. ![Website on contact](https://xp.odoohub.com.cn/en/web/images/6.png) 1. If the customer contact has no website, Odoo checks the website linked to the customer's company. 2. If neither condition is met, Odoo uses the system parameter `web.base.url`. In some projects, we want the invitation or reset link to be generated according to the current company instead. Our [Ohm Network](https://www.odoohub.com.cn/) solution adds this configuration. Go to **Settings > General Settings > Permissions**, then enable the company-based portal link option. ![Company-based portal link option](https://xp.odoohub.com.cn/en/web/images/7.png) After this option is configured, generated invitation links use the website domain of the current company. This is useful for group companies, multiple brands, and companies that operate several storefront websites in the same Odoo database. Sharing Documents ----------------- To make document sharing convenient, Odoo adds a share shortcut to many document models. Users can share a document link with customers, suppliers, or other external parties. Here we use a sales order as an example. Open the document and click **Action > Share**. Odoo displays a sharing dialog. ![Action share menu](https://xp.odoohub.com.cn/en/web/images/8.png) ![Share dialog](https://xp.odoohub.com.cn/en/web/images/9.png) The dialog contains the following fields: | Field | Purpose | | --- | --- | | Link | The share link. Users can copy it and send it to the customer. | | Recipients | Email recipients who should receive the shared document. | | Note | A short message included with the share email. | Users can either send an email notification from Odoo or copy the link and send it through another communication channel. If email is used, the recipient receives a share email and can click the link to open the related sales order page. ### Page Redirection Logic By default, Odoo chooses the target page according to the current user's access rights. If the user has backend access to the document, Odoo redirects them to the backend document view and requires login. If the user does not have backend access, such as a public user, Odoo displays the frontend portal page directly. ![Portal page redirection](https://xp.odoohub.com.cn/en/web/images/10.png) This is why portal permission design matters. If you do not want a customer to enter the backend, do not grant that customer backend access to the document model. ### Access Tokens Odoo uses an access token to make the sharing logic work. The access token is essentially a UUID assigned to the shared document when the user shares it. When a user opens the shared link without normal document access rights, Odoo validates the access token in the URL. If the token is valid, the document can be displayed on the frontend portal page. If the token is invalid, the user is redirected to the login page. In native behavior, each document usually has one token, and the token remains valid until it is refreshed. This is simple and convenient, but it does not provide fine-grained control when the same document needs to be shared with different people for different time windows. ### Multiple Tokens And Token Management Because a native document usually has only one access token, it cannot easily support this scenario: share the same document with Customer A for three days, with Customer B for one month, and revoke only one of the links later. Our [Portal Solution](https://odoohub.com.cn/) adds multi-token management and token expiration control. First, go to **Settings > Ohm > Portal** and enable the portal extension. ![Enable portal extension](https://xp.odoohub.com.cn/en/web/images/11.png) If you need sales order token control, enable the portal sales option and save the settings. #### Manage Multiple Tokens After the portal extension is installed, go to **Settings > Technical > Database Structure > Portal Token** to manage generated portal tokens. ![Portal token list](https://xp.odoohub.com.cn/en/web/images/13.png) All portal tokens generated by the system are shown here. The main fields include: | Field | Meaning | | --- | --- | | Model | The model of the shared document. | | `res_id` | The database ID of the related document. | | Partner | The partner who owns or receives the token. | | Access Token | The token value used in the shared URL. | | Expiration Date | The validity period. After this time, the token becomes invalid. | #### Sales Order Token Control After the portal sales extension is installed, the sales order sharing dialog includes token validity control. ![Sales order token validity](https://xp.odoohub.com.cn/en/web/images/14.png) Users can define how long the shared token remains valid. After sending the link, tokens can also be managed directly from the sales order. ![Manage tokens on sales order](https://xp.odoohub.com.cn/en/web/images/15.png) If the same order needs to be shared with another person for a longer period, click **Share** again and generate another token. ![Generate another token](https://xp.odoohub.com.cn/en/web/images/16.png) Existing tokens can be managed in the token list. ![Token list management](https://xp.odoohub.com.cn/en/web/images/17.png) This chapter explained how the Odoo portal exposes documents to customers, how links and tokens work, and how extensions can improve search, images, multi-company URLs, and token control. The next chapter moves to eCommerce, where customers place orders directly from the website. results matching "" =================== No results matching "" ====================== --- # Lark / Feishu Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology [Lark / Feishu Integration](https://xp.odoohub.com.cn/en/) =========================================================== Lark / Feishu Integration ========================= > Current versions: `16.0.1.0+`, `17.0.1.1+`, `18.0.1.0+`, `19.0.1.0+`. Feishu is one of the major enterprise IM tools in China, and its overseas version Lark is growing quickly in Japan, Singapore, India, and gradually in Europe. Compared with some other IM tools, Lark's multi-dimensional tables are also a strong differentiator. This chapter explains how to integrate Odoo with Feishu / Lark. Lark-Side Setup --------------- ### Create A Lark Application To connect Odoo with Lark, create an application in the Lark developer center and obtain the App ID and App Secret. ![Create Lark application](https://xp.odoohub.com.cn/en/chapter10/images/lark1.png) | Parameter | Meaning | | --- | --- | | App ID | Lark application ID. | | App Secret | Lark application secret. | After obtaining these parameters, create the corresponding application in Odoo. Odoo-Side Setup --------------- ### Install The Module Install the [Feishu / Lark integration module](https://apps.odoo.com/apps/modules/19.0/mommy_lark) developed by Qingdao Ohm Network Technology. ![Install Lark module](https://xp.odoohub.com.cn/en/chapter10/images/lark13.png) ### Set User Permissions After installation, grant Lark permissions to the users who will manage the integration. ![Lark user permission](https://xp.odoohub.com.cn/en/chapter10/images/lark14.png) ### Basic Configuration Return to the Odoo main interface and click the Feishu / Lark icon. ![Open Lark app in Odoo](https://xp.odoohub.com.cn/en/chapter10/images/lark15.png) Enter the App ID and App Secret obtained from the Lark open platform. ![Lark application settings](https://xp.odoohub.com.cn/en/chapter10/images/lark16.png) ### Bind Company After creating the application, bind it to the company that will use it. ![Bind Lark app to company](https://xp.odoohub.com.cn/en/chapter10/images/lark17.png) The basic configuration is complete. Click the test connection button to verify the configuration. ![Test Lark connection](https://xp.odoohub.com.cn/en/chapter10/images/lark18.png) If the configuration is correct, Odoo shows a connection success message in the upper right corner. Usage ----- ### Basic Data Synchronization 1. Synchronize department data from the settings menu. ![Synchronize departments](https://xp.odoohub.com.cn/en/chapter10/images/lark4.png) 2. Open a synchronized department and click the button to synchronize employees. ![Synchronize employees](https://xp.odoohub.com.cn/en/chapter10/images/lark5.png) After these steps, base data synchronization is complete. ### QR Code Login Odoo supports Lark QR code login. First, add web application capability to the Lark application in the open platform. 1. Add **Web App** capability and configure the web URL. ![Lark web app capability](https://xp.odoohub.com.cn/en/chapter10/images/lark6.png) Set the Redirect URL to: your_odoo_url/mommy_lark/authorize `your_odoo_url` refers to the value of the `web.base.url` system parameter. 2. In **Development Configuration > Permission Management**, grant the `contact:contact` permission. ![Lark contact permission](https://xp.odoohub.com.cn/en/chapter10/images/lark7.png) 3. In Odoo developer mode, go to **Users & Companies > OAuth Providers** and activate Lark login. ![Activate Lark OAuth](https://xp.odoohub.com.cn/en/chapter10/images/lark8.png) Users can then log in to Odoo with Lark QR code login. ![Lark login page](https://xp.odoohub.com.cn/en/chapter10/images/lark9.png) ![Lark authorization page](https://xp.odoohub.com.cn/en/chapter10/images/lark19.png) After authorization, the system redirects the user to the bound Odoo account. ### Chatter Messages Lark also supports Odoo chatter message synchronization. First, enable the setting for users who should receive chatter messages in Lark. ![Enable Lark chatter notification](https://xp.odoohub.com.cn/en/chapter10/images/lark10.png) Then send a text message in the chatter of a document followed by that user. ![Send Odoo chatter message](https://xp.odoohub.com.cn/en/chapter10/images/lark11.png) The user receives the message in Lark. ![Lark message received](https://xp.odoohub.com.cn/en/chapter10/images/lark12.png) This chapter introduced Lark integration for base data, QR login, and chatter notifications. results matching "" =================== No results matching "" ====================== --- # Website Payment Method Restrictions · Odoo Implementation Manual - Qingdao Ohm Network Technology [Website Payment Method Restrictions](https://xp.odoohub.com.cn/en/) ===================================================================== Website eCommerce Payment Method Restrictions ============================================= By default, Odoo does not support assigning multiple payment providers of the same type to different product groups. For example, Customer A may have two Stripe accounts, `Stripe1` and `Stripe2`, and wants different product categories to use different collection accounts for reporting and settlement analysis. To solve this type of requirement, our website payment solution adds product-level payment method control. Install The Website Payment Module ---------------------------------- Install the payment solution module first. ![Install website payment module](https://xp.odoohub.com.cn/en/chapter10/images/P1.png) Specify Payment Methods On Products ----------------------------------- On the target product, open the sales-related settings and define the supported payment methods. ![Product payment method setting](https://xp.odoohub.com.cn/en/chapter10/images/P.png) After payment methods are assigned, customers only see the specified payment methods when placing website orders for that product. Mixed Payment Method Warning ---------------------------- If Product A is restricted to Payment Method P1 and Product B is restricted to Payment Method P2, and both products appear in the same order, Odoo displays a reminder asking the customer to place separate orders. ![Mixed payment warning](https://xp.odoohub.com.cn/en/chapter10/images/P3.png) This keeps payment routing clear and avoids mixing products that should be settled through different payment channels. results matching "" =================== No results matching "" ====================== --- # JD Logistics · Odoo Implementation Manual - Qingdao Ohm Network Technology [JD Logistics](https://xp.odoohub.com.cn/en/) ============================================== JD Logistics ============ This chapter explains how to use the JD Logistics plugin developed by [Qingdao Ohm Network Technology](https://www.odoohub.com.cn/) to connect Odoo with JD Logistics. Preparation ----------- First, register as a self-developed merchant on the [JD Logistics Open Platform](https://open.jdl.com/) and complete certification and contract signing. ![JD Logistics registration](https://xp.odoohub.com.cn/en/chapter10/images/JDL1.png) After onboarding, obtain the following parameters: | Parameter | Description | | --- | --- | | Seller ID | Merchant ID. | | APPKEY | Application key. | | APPSECRET | Application secret. | | Customer Code | JD platform customer code, also called Qinglong code. | After obtaining these parameters, install the JD Logistics module in Odoo. Connect Odoo ------------ Install the JD Logistics module. ![Install JD Logistics module](https://xp.odoohub.com.cn/en/chapter10/images/JDL2.png) Activate it to complete installation. ### JD Logistics Configuration Go to **Inventory > Configuration > Delivery Methods** and create a JD Logistics delivery method. Select `JDL` as the provider. ![Create JDL delivery method](https://xp.odoohub.com.cn/en/chapter10/images/JDL3.png) Key configuration fields: | Field | Description | | --- | --- | | Seller ID | Merchant ID obtained earlier. | | JD Logistics APPKEY | APPKEY. | | JD Logistics Secret | APPSECRET. | | Customer Code | Contracted customer code / Qinglong code. | ### Complete Authorization After configuration, click the JD Logistics authorization button. Odoo redirects to the JD Logistics official website. ![JD Logistics authorization](https://xp.odoohub.com.cn/en/chapter10/images/JDL4.png) Log in with the merchant account. Odoo returns automatically after authentication. ![JD Logistics authorized](https://xp.odoohub.com.cn/en/chapter10/images/JDL6.png) > JD Logistics access token is valid for one year, and refresh token is valid for one year and one month. Refresh before expiration. Rate Estimation --------------- Select JD Logistics as the carrier on a sales order and click rate estimation. ![JDL rate estimation](https://xp.odoohub.com.cn/en/chapter10/images/JDL7.png) Ship And Generate Electronic Waybill ------------------------------------ Confirm the sales order, then validate the delivery order. ![JDL delivery order](https://xp.odoohub.com.cn/en/chapter10/images/JDL8.png) Print the electronic waybill attached to the chatter and place it on the package. ![JDL electronic waybill](https://xp.odoohub.com.cn/en/chapter10/images/JDL9.png) Cancel Shipment --------------- If the shipment should not be sent, click the cancel button on the delivery order to cancel the JD Logistics shipment. ![Cancel JDL shipment](https://xp.odoohub.com.cn/en/chapter10/images/JDL10.png) Tracking -------- Click the tracking smart button on the delivery order to query shipment information on the JD Logistics website. ![JDL tracking](https://xp.odoohub.com.cn/en/chapter10/images/JDL.png) This chapter introduced JD Logistics integration for Odoo delivery operations. results matching "" =================== No results matching "" ====================== --- # QuickBooks · Odoo Implementation Manual - Qingdao Ohm Network Technology [QuickBooks](https://xp.odoohub.com.cn/en/) ============================================ QuickBooks ========== QuickBooks is accounting and financial management software developed by Intuit. It is widely used by small and medium businesses for bookkeeping, tax filing, invoicing, payroll, and other financial operations. QuickBooks provides both Desktop and Online versions and is especially popular in North America. This chapter explains how to use our [QuickBooks plugin](https://apps.odoo.com/apps/modules/18.0/mommy_quickbooks) to connect Odoo with common QuickBooks workflows. QuickBooks-Side Setup --------------------- Like Xero, QuickBooks uses OAuth 2.0. Create an application in the [Intuit Developer Center](https://developer.intuit.com/) . ![Create QuickBooks app](https://xp.odoohub.com.cn/en/chapter10/images/qb1.png) Obtain these parameters: | Parameter | Description | | --- | --- | | Client ID | Application ID. | | Client Secret | Application secret. | Also obtain the QuickBooks company ID. ### Set Scopes Authorize the application to access the required data. ![QuickBooks scopes](https://xp.odoohub.com.cn/en/chapter10/images/qb2.png) ### Set Redirect URI Configure the redirect URI whitelist for the application. ![QuickBooks redirect URI](https://xp.odoohub.com.cn/en/chapter10/images/qb3.png) The QuickBooks-side setup is complete. Odoo-Side Setup --------------- Install the `mommy_quickbooks` module. ![Install QuickBooks module](https://xp.odoohub.com.cn/en/chapter10/images/qb4.png) Open the QuickBooks app in Odoo and create an Odoo QuickBooks application. ![Create QuickBooks app in Odoo](https://xp.odoohub.com.cn/en/chapter10/images/qb5.png) Enter Client ID and Client Secret, then configure the related parameters: | Parameter | Description | | --- | --- | | Debug Mode | Test mode. | | Minor Version | QuickBooks minor version. | | Test Redirect Host | Redirect host used in test mode. | | Scopes | Authorization scope list. | If unsure, keep defaults or contact support. ### Bind Company Bind the QuickBooks app to the relevant company and enter the company's QuickBooks company ID. ![Bind QuickBooks company](https://xp.odoohub.com.cn/en/chapter10/images/qb8.png) ### Authorization Click the authorization button. Odoo redirects to QuickBooks for authentication. ![QuickBooks authorization](https://xp.odoohub.com.cn/en/chapter10/images/qb6.png) After authorization, the page returns to Odoo and the app state becomes authorized. ![QuickBooks authorized](https://xp.odoohub.com.cn/en/chapter10/images/qb7.png) Data Synchronization -------------------- ### Account Synchronization Because Odoo and QuickBooks account structures differ, the module provides a mapping table for account type matching. ![QuickBooks account type mapping](https://xp.odoohub.com.cn/en/chapter10/images/qb9.png) Then synchronize the target accounts. ![Synchronize accounts](https://xp.odoohub.com.cn/en/chapter10/images/qb10.png) ### Invoice And Refund Synchronization Invoices and refunds can be synchronized from the invoice and refund screens. ![Synchronize invoices and refunds](https://xp.odoohub.com.cn/en/chapter10/images/qb11.png) ### Product Synchronization Products can be synchronized from the product interface. ![Synchronize products](https://xp.odoohub.com.cn/en/chapter10/images/qb12.png) ### Payment Term Synchronization Payment terms can also be synchronized to QuickBooks. ![Synchronize payment terms](https://xp.odoohub.com.cn/en/chapter10/images/qb13.png) ### Tax Synchronization Taxes can be synchronized as well. ![Synchronize taxes](https://xp.odoohub.com.cn/en/chapter10/images/qb14.png) This chapter introduced the basic QuickBooks integration workflow. More settings can be expanded according to customer needs. results matching "" =================== No results matching "" ====================== --- # Yunda Express · Odoo Implementation Manual - Qingdao Ohm Network Technology [Yunda Express](https://xp.odoohub.com.cn/en/) =============================================== Yunda Express ============= This chapter introduces a free integration solution between Odoo and Yunda Express. Register On Yunda Open Platform ------------------------------- To use Yunda Express, first register an account on the [Yunda Open Platform](http://open.yundaex.com/) and create an open platform application. After creating the application, obtain the following four parameters: | Parameter | Description | | --- | --- | | AppKey | Application key. | | AppSecret | Application secret. | | PartnerId | Customer code assigned by a Yunda branch. | | Secret | Secret corresponding to the customer code. | Use Yunda Express In Odoo ------------------------- Install the Yunda Express module developed by [Qingdao Ohm Network Technology](https://www.odoohub.com.cn/) . ![Install Yunda module](https://xp.odoohub.com.cn/en/chapter10/images/yd.png) The module automatically adds a Yunda Express delivery method. ![Yunda delivery method](https://xp.odoohub.com.cn/en/chapter10/images/yd2.png) Enter the parameters obtained earlier into the configuration. Rate Estimation --------------- Create a sales order, add Yunda Express as the delivery method, and click the rate estimation button. Odoo displays the estimated shipping fee returned by Yunda. ![Yunda rate estimation](https://xp.odoohub.com.cn/en/chapter10/images/yd3.png) Order Creation And Electronic Waybill ------------------------------------- Confirm the sales order. The generated delivery order uses Yunda Express as the default carrier. After validating the delivery, Odoo automatically fills in the Yunda tracking number and posts the electronic waybill in the chatter. ![Yunda electronic waybill](https://xp.odoohub.com.cn/en/chapter10/images/yd4.png) Tracking -------- Click the tracking button on the delivery order. The page redirects to the Yunda website and fills in the tracking number automatically. ![Yunda tracking](https://xp.odoohub.com.cn/en/chapter10/images/yd5.png) Order Cancellation ------------------ If the shipment was created incorrectly, click the cancel button to cancel the shipment. ![Cancel Yunda order](https://xp.odoohub.com.cn/en/chapter10/images/yd6.png) This chapter introduced Yunda Express integration for Odoo delivery operations. results matching "" =================== No results matching "" ====================== --- # General Solutions · Odoo Implementation Manual - Qingdao Ohm Network Technology [General Solutions](https://xp.odoohub.com.cn/en/) =================================================== General Solutions ================= This part introduces reusable Odoo solution patterns that are commonly needed in real implementation projects, including logistics carriers, payment services, messaging platforms, cloud storage, reporting, and operational tools. Each chapter focuses on a practical business problem first, then explains how the solution fits into Odoo's native workflow. The goal is to help readers understand both the configuration steps and the implementation logic behind them. results matching "" =================== No results matching "" ====================== --- # Xero Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology [Xero Integration](https://xp.odoohub.com.cn/en/) ================================================== Xero Integration ================ Xero is cloud-based accounting software designed for small and medium businesses. It is widely used in New Zealand and Australia for financial management and accounting workflows. This chapter demonstrates how to connect Odoo with Xero. > Supported versions: `18.0.1.8` / `17.0.1.6`. Xero-Side Setup --------------- Open the [Xero Developer Center](https://developer.xero.com/app/manage/) and create an application. ![Create Xero application](https://xp.odoohub.com.cn/en/chapter10/images/xero.png) Enter the application name and website, then configure the callback URL. ![Xero callback URL](https://xp.odoohub.com.cn/en/chapter10/images/xero2.png) Obtain two important parameters: | Parameter | Description | | --- | --- | | Client ID | Xero application ID. | | Client Secret | Xero application secret. | ### Get Tenant ID Open API Explorer. ![Xero API Explorer](https://xp.odoohub.com.cn/en/chapter10/images/xero3.png) Get the Tenant ID from the headers at the bottom. After these steps, Odoo can be configured. Odoo-Side Setup --------------- Install the `mommy_xero` module. ![Install Xero module](https://xp.odoohub.com.cn/en/chapter10/images/xero4.png) ### Create A Xero App Open the Xero application from the Odoo main app list and create a Xero app in settings. ![Open Xero app](https://xp.odoohub.com.cn/en/chapter10/images/xero5.png) ![Create Xero app](https://xp.odoohub.com.cn/en/chapter10/images/xero6.png) Enter the Client ID and Client Secret obtained earlier. ### Bind Company Bind the Xero app to the current company. Go to **Settings > Companies**, select the company, and choose the Xero app on the Xero tab. ![Bind Xero app to company](https://xp.odoohub.com.cn/en/chapter10/images/xero7.png) ### Scope Before authorization, define the scopes the Xero app can use. ![Xero scopes](https://xp.odoohub.com.cn/en/chapter10/images/xero20.png) ### OAuth Authorization Xero uses OAuth2. Click authorize on the Xero app to go to Xero's authorization page. ![Authorize Xero](https://xp.odoohub.com.cn/en/chapter10/images/xero8.png) After authorization, the page returns to Odoo and the app is shown as authorized. ![Xero authorized](https://xp.odoohub.com.cn/en/chapter10/images/xero9.png) > Xero Access Token is valid for 30 minutes. Refresh Access Token is valid for 60 days. To obtain Refresh Token, use the `offline_access` scope. Usage In Odoo ------------- ### Customer Synchronization Unlike QuickBooks, Xero does not force customer synchronization before invoices can be synchronized. It can accept a text customer name. However, the module still supports customer synchronization for cleaner data management. On the contact form, click the synchronize to Xero button. ![Sync contact to Xero](https://xp.odoohub.com.cn/en/chapter10/images/xero16.png) After synchronization, the Xero contact ID is written to the Xero tab on the contact. ![Xero contact ID](https://xp.odoohub.com.cn/en/chapter10/images/Xero17.png) Batch synchronization is also available from the contact list through **Action > Synchronize to Xero**. **Note:** A contact must have phone or email filled in before synchronization. ### Product Synchronization Products can also be synchronized to Xero from the product form. ![Sync product to Xero](https://xp.odoohub.com.cn/en/chapter10/images/Xero18.png) After synchronization, the Xero product code appears on the Xero tab. ![Xero product code](https://xp.odoohub.com.cn/en/chapter10/images/Xero19.png) Batch product synchronization is also available from the product list view. ### Invoice Synchronization Open a customer invoice in Accounting. ![Odoo invoice](https://xp.odoohub.com.cn/en/chapter10/images/xero10.png) When confirming the invoice or clicking the synchronize button, Odoo synchronizes the invoice to Xero. ![Synchronize invoice to Xero](https://xp.odoohub.com.cn/en/chapter10/images/xero11.png) After successful synchronization, the Xero tab shows the Xero invoice ID and invoice number. The invoice can also be viewed on the Xero website. ![Invoice in Xero](https://xp.odoohub.com.cn/en/chapter10/images/xero12.png) #### Update Synchronization If invoice information is modified and needs to be sent to Xero again, click the synchronize invoice button. ![Re-sync invoice](https://xp.odoohub.com.cn/en/chapter10/images/xero13.png) ### Account Type Matching Because Odoo and Xero account types do not match exactly, the module provides account type matching strategies. ![Xero account type matching](https://xp.odoohub.com.cn/en/chapter10/images/xero14.png) Users can adjust the matching relationship and bind the strategy to the Xero app. ### Manual Account Matching If Odoo account codes should not be the same as Xero account codes, fill in the Xero code manually on the account's Xero tab. ![Manual account code matching](https://xp.odoohub.com.cn/en/chapter10/images/xero15.png) After matching, invoices can be synchronized with Xero account codes and Xero will apply its own accounting configuration. ### Tax Synchronization Select taxes in Accounting and synchronize them to Xero. ![Synchronize tax to Xero](https://xp.odoohub.com.cn/en/chapter10/images/xero18.png) This chapter introduced Odoo and Xero integration for contacts, products, invoices, accounts, and taxes. results matching "" =================== No results matching "" ====================== --- # Shopline Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology [Shopline Integration](https://xp.odoohub.com.cn/en/) ====================================================== Shopline Integration ==================== Shopline, founded in 2013 and originally headquartered in Hong Kong, is a leading smart eCommerce SaaS platform in Asia. It helps merchants “sell from anywhere, to anywhere” across eCommerce, social commerce, offline POS, and cross-border operations. This chapter explains how to connect Shopline with Odoo so Shopline merchants can manage ERP operations inside Odoo. > This article applies to Shopline HK, JP, and TW. > > Supported versions: `15.6` / `18.0.1.3`. Shopline-Side Setup ------------------- There are two setup approaches: | Approach | Description | | --- | --- | | Register as a developer | Create and deploy your own Shopline application. | | Use Qingdao Ohm's extension | Install our app directly from the Shopline app center and avoid custom deployment work. | ### Register A Developer Account Register a developer account in the [Shopline Developer Center](https://developers.shoplineapp.com/) and create an application. ![Create Shopline application](https://xp.odoohub.com.cn/en/chapter10/images/shopline1.png) #### Callback URL Shopline callback URLs must pass whitelist verification. Only whitelisted callback URLs can be used successfully. ![Shopline callback whitelist](https://xp.odoohub.com.cn/en/chapter10/images/shopline2.png) #### Access Permissions Shopline uses detailed permissions for resource access. Select the permission scopes needed by the integration. ![Shopline access permissions](https://xp.odoohub.com.cn/en/chapter10/images/shopline3.png) #### Deploy And Publish The App After configuration, submit the application for review before it can be installed and used officially. #### Install The App After the app is published, install it from the [Shopline merchant backend](https://admin.shoplineapp.com/) . ![Install Shopline app](https://xp.odoohub.com.cn/en/chapter10/images/shopline4.png) ### Use Qingdao Ohm's Extension Using our extension avoids the manual app deployment process. Search for `Odoo` in the Shopline App Center and install it directly. Contact our support team to add your website callback URL to the app whitelist. Odoo-Side Setup --------------- Install the `mommy_shopline` module and open the Shopline app from the Odoo main page. ![Install Shopline module](https://xp.odoohub.com.cn/en/chapter10/images/shopline5.png) ### Create A Shopline Application Go to **Settings > Apps** and create a Shopline application. Enter the Client ID, secret, and merchant ID obtained earlier. ![Create Shopline app in Odoo](https://xp.odoohub.com.cn/en/chapter10/images/shopline6.png) Click the test connection button to check whether the configuration is correct. ### Authorization After settings are valid, click the authorization button. Odoo redirects to Shopline for authorization and returns to Odoo after success. The Shopline functions can then be used normally. ### Synchronize Customers Click synchronize customers in settings to import Shopline customers into Odoo. ![Synchronize Shopline customers](https://xp.odoohub.com.cn/en/chapter10/images/shopline7.png) Available option: | Option | Description | | --- | --- | | Bind Company | If enabled, synchronized customers are linked to the current company. | ### Synchronize Products After customers, synchronize products from the settings menu. ![Synchronize Shopline products](https://xp.odoohub.com.cn/en/chapter10/images/shopline8.png) Product synchronization includes: | Field | | --- | | Name | | Image | | Weight | | SKU | | Barcode | | Sales price | | Cost price | If Shopline products have variants, variants are synchronized into Odoo as well. Shopline supports up to three variant dimensions per product. Shopline variant SKUs may duplicate, but Odoo SKUs should not; if duplicated SKUs exist in Shopline, the synchronized Odoo SKU may be empty. #### Product Synchronization Logic Shopline supports custom attributes, up to three. During product synchronization, Odoo first synchronizes the product template. If variants exist, Odoo synchronizes the variant attributes and then synchronizes variants. For variant attribute names, English names are preferred. If English names do not exist, Traditional Chinese (`zh-hant`) names are used. #### Bind Company Products can also be bound to the current company during synchronization. ![Bind company for synchronized products](https://xp.odoohub.com.cn/en/chapter10/images/shopline14.png) When enabled, products synchronized from Shopline are only available to the current company. ### Synchronize Orders Order synchronization includes several options. ![Shopline order synchronization options](https://xp.odoohub.com.cn/en/chapter10/images/shopline15.png) | Option | Description | | --- | --- | | Replace Order Number | Use Shopline's order number as the Odoo order number. | | Silent Exception | Do not interrupt users with errors during synchronization. | | Order Status | Synchronize only selected Shopline statuses; if empty, synchronize all statuses. | | Auto Confirm | Automatically confirm synchronized orders. Existing confirmed orders are skipped. | | Payment Status | Synchronize only selected payment statuses; if empty, synchronize all orders. | If the Shopline order includes a delivery method, Odoo can also synchronize it. Configure a default shipping product first. Click synchronize orders. ![Synchronize Shopline orders](https://xp.odoohub.com.cn/en/chapter10/images/shopline9.png) ![Shopline order with delivery method](https://xp.odoohub.com.cn/en/chapter10/images/shopline16.png) Shopline shipping methods may not map directly to Odoo carriers. Users can synchronize the shipping method first and then match it to Odoo delivery carriers manually. ### Upload Shipment Status And Tracking Number After completing delivery in Odoo, upload shipment status and tracking number back to Shopline by clicking the upload button on the order. ![Upload shipment to Shopline](https://xp.odoohub.com.cn/en/chapter10/images/shopline11.png) ![Shopline shipment upload result](https://xp.odoohub.com.cn/en/chapter10/images/shopline12.png) In the Shopline merchant backend, the order is marked as shipped and the tracking number is available. ![Shopline shipped order](https://xp.odoohub.com.cn/en/chapter10/images/shopline13.png) Conclusion ---------- The current integration covers foundational Shopline operations: authorization, customer synchronization, product synchronization, order synchronization, and shipment status upload. More practical features can be added as business requirements grow. results matching "" =================== No results matching "" ====================== --- # A Practical View Of Odoo Studio · Odoo Implementation Manual - Qingdao Ohm Network Technology [A Practical View Of Odoo Studio](https://xp.odoohub.com.cn/en/) ================================================================= A Practical View Of Odoo Studio =============================== Odoo Studio is an official UI customization tool from Odoo. It allows users without programming knowledge to add fields, create or adjust views, and make lightweight workflow changes from the browser. Odoo's official positioning is clear: Studio gives business users more control without writing code. That promise is attractive, and Studio really can be useful. However, in implementation work, we should understand both its strengths and its limitations. This chapter explains where Studio helps, where it creates risk, and how we recommend using it. Strengths Of Studio ------------------- ### Custom Fields And Views Studio lets users enter Studio mode from the wrench icon in the interface and add fields or adjust views directly. For customers using standard Odoo, this is convenient. A business user can quickly add a field, move a field, hide a field, or build a simple view without waiting for a developer. ### Report Adjustments Odoo's native report styles are limited, and not every customer accepts the default content or layout. Studio can modify some report layouts and therefore satisfies part of the customer's need for visible document customization. For early demonstrations, requirement clarification, and small internal improvements, Studio can be a useful tool. Limitations Of Studio --------------------- ### Field Naming Fields added by Studio are named with the `x_` prefix to distinguish them from code-defined fields. This is technically understandable, but in long-term maintenance it can lead to many `x_` fields without clear business naming conventions. For developers and implementers, this makes later maintenance harder, especially when a database contains many Studio-created fields across several models. ### Dependency Clarity Studio-generated customizations do not always have clear and explicit module dependencies. When native modules are upgraded, installed, or changed, unexpected compatibility issues may appear because the customization depends on views, fields, or variables that changed underneath. ### Persistence And Portability Studio creates a module named `Studio Customization`, but this module is stored in the database rather than maintained as normal source code on disk. If the user uninstalls the module, the changes may be lost. This also makes version control, code review, deployment comparison, and controlled rollback more difficult than with a normal custom addon. ### Upgrade Risk Odoo SaaS can upgrade databases from older versions to newer versions, but databases with Studio customizations need careful testing before production upgrade. We have seen cases where a customer used Odoo SaaS 17.4 with many Studio changes. After upgrading to Odoo 18.0, several Studio customizations disappeared or caused unexpected errors. The reason is that Odoo's upgrade process does not guarantee that Studio customizations will be adapted like official code. In practice, Studio changes may be treated like third-party customizations, and the user or partner needs to resolve compatibility issues. One typical example is report customization. In Odoo 17, a report might use `tax_totals` and `formatted_amount` to display formatted values. If Odoo 18 refactors that report structure and removes or changes those variables, Studio-inherited report changes may fail after upgrade. The fix then requires checking views one by one and adapting variables manually. Recommended Use --------------- Studio is not useless. It is best treated as a prototyping and requirement communication tool. For example, a customer can use Studio in a test database to show where they want a field, what kind of information they want to capture, or how a report should roughly look. Then, for production implementation, the final customization should be implemented as a proper custom module when the requirement affects important workflows, reports, integrations, permissions, or future upgrades. Our recommendation is simple: | Scenario | Recommendation | | --- | --- | | Quick demo or prototype | Studio can be useful. | | Temporary internal field in a test database | Studio may be acceptable. | | Production-critical workflow | Prefer a custom module. | | Report logic with financial impact | Prefer a custom module. | | Features that must survive upgrades cleanly | Prefer a custom module. | Used carefully, Studio can help customers express requirements faster. Used casually in production, it can create hidden upgrade and maintenance costs. The safer implementation approach is to use Studio for exploration, then turn important changes into maintainable code. results matching "" =================== No results matching "" ====================== --- # Google Cloud Storage · Odoo Implementation Manual - Qingdao Ohm Network Technology [Google Cloud Storage](https://xp.odoohub.com.cn/en/) ====================================================== Google Cloud Storage ==================== This chapter explains how to use Google Cloud Storage with Odoo. > Odoo has a native Cloud Storage module that supports Google and Azure object storage, but it mainly covers chatter and attachment storage and does not provide the same migration and scoped storage controls described here. Register Google Cloud Storage ----------------------------- Create a [Google Cloud Storage](https://console.cloud.google.com/storage/overview) account and create a bucket. ![Create GCS bucket](https://xp.odoohub.com.cn/en/chapter10/images/GCS1.png) Obtain the following parameters: | Parameter | Description | | --- | --- | | Project ID | Google project ID. | | Bucket Name | Bucket name. | | Location | Bucket location. | | Service Account JSON File | Authentication JSON file containing service account credentials. | Odoo Configuration ------------------ Install the Google Cloud Storage module developed by Qingdao Ohm Network Technology. ![Install GCS module](https://xp.odoohub.com.cn/en/chapter10/images/GCS2.png) ### Create A Google Cloud Storage App In the Google Cloud Storage app settings, create an Odoo-side app. ![Create GCS app](https://xp.odoohub.com.cn/en/chapter10/images/GCS3.png) Enter the parameters obtained from Google Cloud. ### Bind Company In company settings, select the GCS app created above. ![Bind GCS app to company](https://xp.odoohub.com.cn/en/chapter10/images/GCS4.png) ### Activate App Click the enable button in the app. After activation, files can be uploaded to Google Cloud Storage. Upload Binary Files ------------------- For Odoo internal binary files, if the model is included in the upload scope, Odoo automatically stores files in Google Cloud Storage instead of local storage. Using a contact avatar as an example, create a contact named Larry Page. ![Upload contact avatar](https://xp.odoohub.com.cn/en/chapter10/images/GCS5.png) The file list shows that the image has been uploaded to Google Cloud Storage. ![GCS file list](https://xp.odoohub.com.cn/en/chapter10/images/GCS6.png) Check the Google Cloud Storage backend. ![File in GCS backend](https://xp.odoohub.com.cn/en/chapter10/images/GCS7.png) The image has been uploaded successfully. Upload Document Attachments --------------------------- Assume we sell Odoo services to Larry Page and create a quotation. ![Quotation example](https://xp.odoohub.com.cn/en/chapter10/images/GCS8.png) The chatter attachment no longer shows a normal download button. Instead, it shows a link. Opening the link displays the file through Google Cloud Storage. ![GCS attachment link](https://xp.odoohub.com.cn/en/chapter10/images/GCS9.png) Batch Synchronization --------------------- The Google Cloud Storage module also supports batch synchronization. The operation is similar to Alibaba Cloud OSS and AWS S3. ![GCS batch sync 1](https://xp.odoohub.com.cn/en/chapter10/images/GCS10.png) ![GCS batch sync 2](https://xp.odoohub.com.cn/en/chapter10/images/GCS11.png) Deletion -------- When files are deleted in Odoo, the corresponding files stored in Google Cloud Storage are deleted automatically. Conclusion ---------- Google Cloud Storage works similarly to Alibaba Cloud OSS and AWS S3 in the Odoo integration. Users can choose the object storage provider that best fits their cloud environment. results matching "" =================== No results matching "" ====================== --- # Revolut Pay Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology [Revolut Pay Integration](https://xp.odoohub.com.cn/en/) ========================================================= Revolut Pay Integration ======================= Revolut Pay is an online payment method from Revolut. It allows users to pay directly with their Revolut account without entering bank card information. Integrating Revolut Pay gives customers a convenient and secure payment option and can improve checkout conversion. This chapter explains how to configure and use Revolut Pay in Odoo. Install The Revolut Pay Module ------------------------------ The Revolut Pay module is developed by Qingdao Ohm Network Technology Co., Ltd. Install it from the Odoo Apps menu. ![Install Revolut Pay module](https://xp.odoohub.com.cn/en/chapter10/images/R00.png) Configure Revolut Pay --------------------- After installation: 1. Go to **Settings > Payment Providers**. 2. Find **Revolut Pay** and edit it. 3. Enter the merchant ID from your Revolut merchant account. ![Configure Revolut Pay](https://xp.odoohub.com.cn/en/chapter10/images/R1.png) Save the configuration. Use Revolut Pay --------------- ### Sales Order Payment When a customer receives a sales order payment link, Odoo guides the customer through the Revolut payment flow. ![Select Revolut Pay on sales order](https://xp.odoohub.com.cn/en/chapter10/images/R2.png) Select Revolut Pay. ![Revolut payment form](https://xp.odoohub.com.cn/en/chapter10/images/R3.png) The payment interface appears and the customer completes payment. ![Revolut payment processing](https://xp.odoohub.com.cn/en/chapter10/images/R4.png) Payment completed: ![Revolut payment success](https://xp.odoohub.com.cn/en/chapter10/images/R5.png) ### Invoice Payment Customers can also choose Revolut Pay from an invoice portal page. The process is similar to sales order payment. ![Select Revolut Pay on invoice](https://xp.odoohub.com.cn/en/chapter10/images/R6.png) Select Revolut Pay. ![Invoice Revolut payment form](https://xp.odoohub.com.cn/en/chapter10/images/R7.png) Odoo guides the customer through the Revolut payment flow. ![Invoice payment processing](https://xp.odoohub.com.cn/en/chapter10/images/R8.png) Payment completed: ![Invoice payment success](https://xp.odoohub.com.cn/en/chapter10/images/R9.png) ### eCommerce Payment Customers can also choose Revolut Pay during online shop checkout. ![Revolut Pay on eCommerce checkout](https://xp.odoohub.com.cn/en/chapter10/images/R10.png) Enter the required information in the pop-up and complete payment. ![Complete Revolut checkout](https://xp.odoohub.com.cn/en/chapter10/images/R11.png) Payment completed: ![Revolut checkout success 1](https://xp.odoohub.com.cn/en/chapter10/images/R12.png) ![Revolut checkout success 2](https://xp.odoohub.com.cn/en/chapter10/images/R13.png) Conclusion ---------- By integrating Revolut Pay, merchants can offer customers a convenient and secure payment method in sales orders, invoices, and online shop checkout. results matching "" =================== No results matching "" ====================== --- # Alibaba Cloud OSS · Odoo Implementation Manual - Qingdao Ohm Network Technology [Alibaba Cloud OSS](https://xp.odoohub.com.cn/en/) =================================================== Alibaba Cloud OSS ================= This chapter explains how to use Alibaba Cloud Object Storage Service, or OSS, with Odoo. The goal is to move Odoo attachments to Alibaba Cloud OSS and reduce local server disk usage. What Is Object Storage ---------------------- Object storage is a storage method for massive unstructured data. Unlike traditional file storage or block storage, it offers higher scalability, reliability, and cost advantages and is widely used in cloud environments. Each file is stored as an object. Instead of relying on traditional directory structures, each object is identified and accessed by a unique object key and metadata. You can think of object storage as a very large cloud drive: every file has a unique identifier, and you can upload or download it without caring about which directory or disk stores it. Typical Scenarios And Advantages -------------------------------- Typical scenarios include: | Scenario | | --- | | Images, videos, and media files | | Static website resources such as JS, CSS, and images | | Database backups and logs | | Application installation packages | | Large-scale data archive | | User-uploaded files for eCommerce or social media | Advantages: | Feature | Description | | --- | --- | | Massive storage | Scales to PB or EB levels. | | Lower cost | Usually cheaper than traditional storage. | | High reliability | Multi-copy protection greatly reduces data loss risk. | | High availability | Does not depend on a single server. | | Simple access | Files can be accessed by URL or key. | | HTTP support | Suitable for web and app services. | Common object storage services include Amazon S3, Alibaba Cloud OSS, Tencent Cloud COS, and self-hosted MinIO. Use Alibaba Cloud OSS In Odoo ----------------------------- ### Register Alibaba Cloud OSS Open [Alibaba Cloud OSS](https://www.aliyun.com/product/oss) , enable the service, and create a bucket. ![Create OSS bucket](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS4.png) Obtain the following parameters: | Parameter | Description | | --- | --- | | AccessKey ID | Alibaba Cloud OSS access key ID. | | AccessKey Secret | Alibaba Cloud OSS access secret. | | OSS Endpoint | Region endpoint. | | Bucket Name | Bucket name. | ### Install The Alibaba Cloud OSS Module Install the Alibaba Cloud OSS module developed by Qingdao Ohm Network Technology. ![Install Alibaba Cloud OSS module](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUN1.png) After installation, an Alibaba Cloud OSS app appears on the main page. ![Alibaba Cloud OSS app](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS2.png) Open the app, click settings, and create an OSS instance. ![Create OSS instance](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS3.png) Enter the key parameters obtained from Alibaba Cloud OSS. ![OSS instance settings](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS5.png) Click activate, then bind the app to the current company. ![Bind OSS app to company](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS6.png) ### Synchronize Files To OSS When the app is active, file upload is enabled. Using a contact avatar as an example, create a contact named Zhang San and set an avatar. ![Contact avatar](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS7.png) After saving, the image is uploaded to the OSS bucket. ![File in OSS bucket](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS9.png) ### Manage OSS Files The module provides a management list so users can view uploaded files and related information in Odoo. ![OSS file management](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS8.png) Odoo may generate multiple image sizes from one uploaded avatar, so multiple files may be synchronized. ### Retrieve Files From OSS After files are stored in OSS, Odoo keeps only a link internally. To retrieve the file back into Odoo, use **Action > Sync Document From Alibaba Cloud OSS**. ![Retrieve OSS file](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS10.png) ![Sync document from OSS](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS11.png) ### Delete Files When a file is deleted in Odoo, the corresponding OSS file is also deleted automatically. ### Batch Synchronization For existing data, the module provides two buttons in the OSS app. ![Batch synchronization buttons](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS121.png) Click **Synchronize To Alibaba Cloud OSS** to batch upload selected files. ![Batch upload to OSS](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS13.png) Click **Synchronize From Alibaba Cloud To Odoo** to bring files back into Odoo. ![Batch retrieve from OSS](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS14.png) After retrieving files from OSS, the OSS files are automatically deleted. ![Retrieved file removed from OSS](https://xp.odoohub.com.cn/en/chapter10/images/ALIYUNOSS15.png) This chapter introduced Alibaba Cloud OSS integration for Odoo attachment storage. results matching "" =================== No results matching "" ====================== --- # Chapter 5 POS Pricelists · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 5 POS Pricelists](https://xp.odoohub.com.cn/en/) ========================================================== Chapter 5 POS Pricelists ======================== Odoo pricelists allow companies to calculate product prices automatically under different conditions. A pricelist can be assigned to customers, limited by date, configured with discounts, or used for membership and promotion rules. This chapter explains how to configure pricelists for POS. Configuration ------------- First, activate pricelists in POS settings. Go to the POS settings and make sure **Flexible Pricelists** is enabled. ![Enable POS pricelists](https://xp.odoohub.com.cn/en/pos/images/pricelist1.png) In this section, you can set the available pricelists and the default pricelist for the POS. > In Odoo 17 and earlier, pricelists had two strategies: one price per product per pricelist line, and advanced price rules. Since Odoo 18, these approaches have been merged. Create A Pricelist ------------------ To create a pricelist, go to **Point of Sale > Products > Pricelists** and click **New**. ![Create pricelist](https://xp.odoohub.com.cn/en/pos/images/pricelist2.png) You can set the pricelist name and define the countries or country groups where it applies. Configure Pricelist Rules ------------------------- ![Pricelist rules](https://xp.odoohub.com.cn/en/pos/images/pricelist3.png) Pricelist rules can apply to products or product categories. The rule types include discount, formula, and fixed price. ### Products And Product Categories The rule scope can be a single product or a product category. ![Pricelist product scope](https://xp.odoohub.com.cn/en/pos/images/pricelist4.png) If you choose a product, you can also select a specific product variant. ![Pricelist product variant](https://xp.odoohub.com.cn/en/pos/images/pricelist5.png) If you choose a product category, select the category that should be covered by the rule. ### Pricelist Rule Types The simplest rule type is fixed price. A fixed price means that once this pricelist is selected, the product uses the defined fixed price. ![Fixed price rule](https://xp.odoohub.com.cn/en/pos/images/pricelist6.png) The second type is formula. A formula rule means the price can be based on another pricelist and then adjusted with additional logic. ![Formula rule](https://xp.odoohub.com.cn/en/pos/images/pricelist7.png) Formula rules can add margins, apply discounts, set validity periods, define rounding precision, or add extra prices. The final type is discount. A discount rule applies a discount on another pricelist. If no base pricelist is selected, the product's sales price is used as the base price. ![Discount rule](https://xp.odoohub.com.cn/en/pos/images/pricelist8.png) Assign The Default POS Pricelist -------------------------------- In POS settings, configure the available pricelists and the default pricelist. When a default pricelist is defined, POS uses that pricelist for product prices. If users need to switch pricelists, they can only select from the pricelists made available in the POS settings. This chapter explained how POS pricelists are enabled, created, and applied. The next chapter introduces loyalty programs, which use coupons, gift cards, points, promotions, and discounts to encourage repeat purchases. results matching "" =================== No results matching "" ====================== --- # Shopify And Odoo Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology [Shopify And Odoo Integration](https://xp.odoohub.com.cn/en/) ============================================================== Shopify And Odoo Integration ============================ > Applicable to Odoo 19.0. This chapter explains how to connect Shopify with Odoo using the Shopify integration module developed by Qingdao Ohm Network Technology. Shopify Configuration --------------------- First, create a private app in the Shopify backend. ![Create Shopify private app](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY1.png) Obtain these parameters: | Parameter | Description | | --- | --- | | App Key | Application key. | | Admin Access Token | Admin API access token. | ### Configure App Permissions Grant the required API permissions under **Configuration > Admin API Integration > API Access Scopes**. ![Shopify API permissions](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY2.png) Odoo Configuration ------------------ Install the Shopify integration module developed by [Qingdao Ohm Network Technology](https://www.qingsolution.com/) . ![Install Shopify module](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY3.png) After installation, click the Shopify icon on the main page and open the Shopify app. ![Open Shopify app](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY4.png) ### Create A Shopify Store Go to **Settings > Stores** and create a Shopify store. ![Create Shopify store](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY5.png) Enter the parameters obtained earlier. After configuration, click **Test Connection**. If settings are correct, Odoo shows a success message. ![Test Shopify connection](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY6.png) ### Bind Company Bind the Shopify app to the company that will use it. Go to **Settings > Companies**, select the company, and choose the Shopify app on the Shopify tab. ![Bind Shopify app to company](https://xp.odoohub.com.cn/en/chapter10/images/shopify7.png) Odoo Usage ---------- ### Product Synchronization Click **Settings > Synchronize Products** to trigger product synchronization. ![Synchronize Shopify products](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY8.png) After synchronization, Odoo shows how many products were synchronized. ![Shopify product sync result](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY9.png) Products can be viewed under **Products > Product Templates** and **Product Variants**. ![Synchronized Shopify products](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY10.png) #### Variant Synchronization If Shopify products have variants, Odoo synchronizes the variants automatically. ![Shopify variants in Odoo](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY11.png) ### Customer Synchronization After product synchronization, synchronize Shopify customers from the configuration menu. ![Synchronize Shopify customers](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY12.png) After synchronization, Odoo shows how many records were synchronized. ![Shopify customer sync result](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY13.png) ### Order Synchronization In Shopify, draft orders and orders are different data types. In Odoo, they are the same model with different states. The settings therefore distinguish between the two. ![Shopify order type setting](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY16.png) | Option | Meaning | | --- | --- | | Draft Order | Synchronize Shopify draft orders. | | Order | Synchronize valid Shopify orders. | Click the synchronize orders menu in settings to import orders into Odoo. ![Synchronize Shopify orders](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY18.png) Synchronized order example: ![Synchronized Shopify order](https://xp.odoohub.com.cn/en/chapter10/images/SHOPIFY17.png) This chapter introduced Shopify product, customer, and order synchronization with Odoo. results matching "" =================== No results matching "" ====================== --- # Odoo Prod Backup Solution · Odoo Implementation Manual - Qingdao Ohm Network Technology [Odoo Prod Backup Solution](https://xp.odoohub.com.cn/en/) =========================================================== Odoo Prod Backup Solution ========================= > When Odoo backup no longer means high cost: a more affordable production-grade solution with point-in-time recovery. After Odoo enters production, the real question is not only whether the system can go live. It is whether data can be restored quickly, accurately, and with limited loss when something goes wrong. Whether the issue is user error, upgrade failure, hardware failure, or an unexpected production incident, the value of a backup system is not simply “there is a backup”. The value is whether the business can recover to the right point in time. Qingdao Ohm Network Technology's `odoo-prod-backup` is designed for Odoo production data protection. It focuses on three core values: lower cost, more flexible recovery, and better long-term suitability for self-hosted Odoo environments. ![Odoo prod backup overview](https://xp.odoohub.com.cn/en/chapter10/images/image-7.png) A Better Backup Choice For Cost-Sensitive Companies --------------------------------------------------- When companies evaluate Odoo data safety, they often first encounter platform solutions such as Odoo.sh. Odoo.sh provides a managed environment with automatic backup, version control, testing environments, and other useful features. It is a good fit for companies that do not want to invest in operations. However, the cost can be high, especially for companies that already self-host Odoo or care strongly about long-term cost control. `odoo-prod-backup` does not require a company to migrate its full deployment model. It adds independent production backup capability on top of the existing Odoo production environment. The advantages are clear: | Advantage | | --- | | No ongoing high platform cost. | | No need to change the existing Odoo deployment structure. | | No need to rebuild the whole business environment. | | Existing server resources can be reused. | | Companies keep stronger control over their own data. | For manufacturing, trading, project delivery, and channel management companies that rely heavily on Odoo, data safety matters, but the protection plan must also make commercial sense. ![Backup cost comparison](https://xp.odoohub.com.cn/en/chapter10/images/image-2.png) Real-Time Synchronization And Point-In-Time Recovery ---------------------------------------------------- The common problem with traditional backups is that they look safe but are not flexible enough during recovery. If a system only keeps one full package backup per day, then when an accidental deletion, wrong import, or failed upgrade happens in the afternoon, recovery usually goes back to the previous night or an earlier backup. The system is restored, but a large amount of business data is lost. `odoo-prod-backup` provides more continuous data protection and supports point-in-time recovery. This means: | Capability | | --- | | Key data is synchronized continuously to the backup environment. | | Files, configuration, and code keep staged snapshots. | | Recovery can use the latest available state. | | Recovery can also target a time close to the incident. | For production systems, the real question is not only whether recovery is possible, but how much data is lost after recovery. ![Point-in-time recovery](https://xp.odoohub.com.cn/en/chapter10/images/image-1.png) Common commands focus on listing restore points, dry-run restore, actual restore, and backup health checks. ### List Available Restore Points odoo-prod-restore --list Use this before recovery to see which time points are available. ### Dry Run Before Real Restore odoo-prod-restore --dry-run latest Or specify a target time: odoo-prod-restore --dry-run "2026-05-28 14:30:00" Dry run does not change the current environment. It tells operators which backup, file snapshot, and configuration version would be used. ### Execute Restore Restore to the latest available state: odoo-prod-restore latest Restore to a specified time: odoo-prod-restore "2026-05-28 14:30:00" This makes recovery a controlled operation rather than emergency guessing. ### Check Backup Health /usr/local/sbin/odoo-prod-backup-check Regular health checks help discover potential backup problems before recovery is needed. ![Backup health check](https://xp.odoohub.com.cn/en/chapter10/images/image-3.png) Test Environments Comparable To Odoo.sh --------------------------------------- Because of continuous synchronization and staged snapshots, `odoo-prod-backup` can also prepare a test environment from backup data, similar to Odoo.sh. This helps companies avoid operating directly on production when they need to: | Use Case | | --- | | Test new modules. | | Validate upgrade plans. | | Check report or workflow adjustments. | | Reproduce production issues. | | Train internal users. | | Rehearse restore procedures. | Operators can list restore points, choose a suitable time, and prepare a test environment based on realistic data without affecting production. ![Test environment from backup](https://xp.odoohub.com.cn/en/chapter10/images/image-5.png) Protect Data And Save Cost -------------------------- A mature backup solution should not only work technically. It must also be practical for business, executable for operations, and acceptable in cost. `odoo-prod-backup` is designed to make data protection a long-term capability: | Customer Concern | Solution Value | | --- | --- | | Data safety with controlled cost | Independent backup without platform migration. | | Recovery capability without heavy operational burden | Standard commands and health checks. | | Fit existing Odoo environments | Works with self-hosted deployments. | | Backup must be restorable | Restore points and dry-run restore are part of the workflow. | Lower cost does not mean lower standards. Professional backup means that when recovery is needed, the customer can recover, dares to recover, and can recover accurately. Conclusion ---------- If your Odoo is already in production, or you are considering a more reliable and cost-effective backup mechanism for an existing Odoo system, `odoo-prod-backup` is a practical direction. At the current stage, it is available for contracted customers. Qingdao Ohm Network Technology, your one-stop Odoo service expert, is ready to help protect your data and support continuous business growth. results matching "" =================== No results matching "" ====================== --- # WeChat Mini Program Store · Odoo Implementation Manual - Qingdao Ohm Network Technology [WeChat Mini Program Store](https://xp.odoohub.com.cn/en/) =========================================================== WeChat Mini Program Store ========================= Odoo is strong at internal business management: products, customers, orders, inventory, and sales workflows can all operate in one system. But in the Chinese market and Chinese-speaking customer groups, many business interactions do not start inside the ERP. They start inside WeChat. Customers use WeChat to communicate, browse products, ask for prices, and submit requirements. Salespeople also maintain customer relationships through WeChat. If Odoo remains only an internal system, the customer-facing side may still depend on chat, spreadsheets, and manual forwarding. Mini Programs are valuable because they are lightweight. Customers do not need to install an app or remember a URL. They open WeChat and use it directly. Connecting Odoo with a Mini Program extends backend business capabilities to a customer entrance that users already know. Simply put: the Mini Program reaches customers, and Odoo manages the business. Together they close the loop from frontend order to backend process. After long iteration, we developed a general Mini Program store solution suitable for many industries. Basic Store Capabilities ------------------------ The basic Mini Program store does not try to include every marketing feature from day one. It first connects the core commerce flow: customers can view products, add to cart, submit orders, and the company can continue order processing in Odoo. ### Product Display The first question for a store is what the customer can see. ![Product display](https://xp.odoohub.com.cn/en/chapter10/images/43ab0eef6f0c7166c1cb91dc06cc1f54.jpg) The basic version supports product list and product detail pages. Customers can view product name, image, price, specifications, and other basic information. Companies manage product data from Odoo, reducing repeated maintenance across multiple systems. ### Product Categories When product volume grows, categories become important. ![Product categories](https://xp.odoohub.com.cn/en/chapter10/images/7943dfcdc2df2a5327ccc5d248f0157a.jpg) Categories help customers find products faster. The Mini Program supports either native Odoo categories or eCommerce categories, so companies can choose the structure that fits their business. ### Cart Customers can add products to the cart and confirm quantity and details together. ![Mini Program cart](https://xp.odoohub.com.cn/en/chapter10/images/4aaac6f1bee02080250af946d87af86e.jpg) The cart gives customers a place to organize the order and reduces follow-up communication. ### Submit Order After confirmation, customers submit the order in the Mini Program. ![Submit order](https://xp.odoohub.com.cn/en/chapter10/images/14171ebda5ffcb757b33f02263adea7e.jpg) After submission, the company continues the sales process in Odoo. The Mini Program is not only a display frontend; it becomes an Odoo order source. ### WeChat Pay The solution supports WeChat Pay natively. Customers can complete payment inside the Mini Program. The company only needs to bind the Mini Program on WeChat Merchant Platform. ![WeChat Pay](https://xp.odoohub.com.cn/en/chapter10/images/ac48fd21d7de88c695d5c1959ca9a0eb.jpg) ### Order Query Customers can view their order records and basic status in the Mini Program. ![Order query](https://xp.odoohub.com.cn/en/chapter10/images/53f559c7812fc9ed78c86ed6d1135823.jpg) This reduces repeated inquiries to sales and customer service teams. ### After-Sales Support If customers have questions, they can contact sales or service staff from the Mini Program. ![After-sales support](https://xp.odoohub.com.cn/en/chapter10/images/2912520178f9d757522ce2ad22eb1c57.jpg) Odoo-Side Support ----------------- The Mini Program is the customer touchpoint, but Odoo supports the business process behind it. ### General Configuration ![General Mini Program configuration](https://xp.odoohub.com.cn/en/chapter10/images/QQ_1782140659341.png) Our Mini Program is designed as an Odoo-configurable business entrance rather than an isolated system. Odoo provides a general configuration interface for Mini Program basic information, product display rules, order processing rules, and other behavior. ### Flexible Configuration ![Flexible Mini Program configuration](https://xp.odoohub.com.cn/en/chapter10/images/QQ_1782140785389.png) Different companies need different flows. Some may not need online payment, especially in B2B or non-China payment scenarios. Others may need order review before confirmation, or special fields on orders. The Mini Program provides flexible settings so companies can adjust behavior without rewriting code every time. ### Integration With The Ohm Ecosystem ![Ohm ecosystem integration](https://xp.odoohub.com.cn/en/chapter10/images/QQ_1782141439870.png) The Mini Program can work with other Qingdao Ohm Odoo modules, such as WeCom, Official Account, SF Express, and Google Cloud Storage. For example, Mini Program orders can notify salespeople through WeCom, logistics information can be connected to carriers, and images can be stored in cloud storage for better access. ### Extensibility The base Mini Program module supports not only eCommerce Mini Programs, but also other Mini Program types. For example, an appointment Mini Program can use the same technical framework while Odoo manages appointment data. More Than A Mini Program ------------------------ The value of a Mini Program is not only that it is lightweight. Connecting it with Odoo makes it part of the enterprise's digital system. It extends backend capability to the customer-facing WeChat entrance. ![Mini Program value](https://xp.odoohub.com.cn/en/chapter10/images/image.png) In the AI era, digital transformation keeps accelerating. Companies with lower cost and better service win more customers. That is why every Odoo company serving the Chinese market should consider its own Mini Program store. Whether using Odoo Community or Enterprise, the general Mini Program solution can help launch faster, connect more customers, improve customer experience, and continue managing business processes in Odoo. results matching "" =================== No results matching "" ====================== --- # WeCom Solution · Odoo Implementation Manual - Qingdao Ohm Network Technology [WeCom Solution](https://xp.odoohub.com.cn/en/) ================================================ WeCom Solution ============== > This chapter is based on the WeCom module `17.0.2.1`. Compatible versions include Odoo 13.0, 15.0, and 16.0. Some behavior differs by version; contact support for details. WeCom, also known as Enterprise WeChat, is one of the major internal communication tools used by Chinese companies. Its advantage is that it connects naturally with WeChat, making it convenient for both internal collaboration and customer communication. This chapter explains how the WeCom solution connects Odoo with WeCom for data synchronization, QR login, menus, workbench display, robot messages, and document chatter notifications. Business Background ------------------- Many companies want work notifications, approvals, attendance, expenses, and internal collaboration to happen inside WeCom. By connecting WeCom with Odoo, business records in Odoo can trigger timely notifications and employees can interact with work items from the tool they already use every day. WeCom Admin Backend Configuration --------------------------------- To use [WeCom](https://work.weixin.qq.com/) , first register a WeCom account. After registration, log in to the [admin backend](https://work.weixin.qq.com/wework_admin/frame) with an administrator account. ### Create An Application Create an application under **Application Management > Create Application**. In this example, the application is named `Odoo`. ![Create WeCom application](https://xp.odoohub.com.cn/en/chapter10/images/wework1.png) ### Get Basic Parameters Obtain the following parameters: | Parameter | Location / Example | | --- | --- | | Corp ID | Found under **My Company**, for example `ww123456`. | | AgentID | Application ID, for example `1000001`. | | Secret | Application secret, for example `abcdefghijklmn`. | Then configure the web authorization and JS-SDK domain for OAuth authorization. ![Configure authorization domain](https://xp.odoohub.com.cn/en/chapter10/images/wework2.png) Finally, add the server IP address to the trusted IP whitelist of the WeCom enterprise. Odoo Configuration ------------------ After the WeCom backend is configured, connect it from Odoo. First, add the relevant user to the **WeCom Manager** user group. Then open the WeCom app from the main menu. Under **WeCom > Settings > WeCom**, enter the parameters obtained earlier. ![Odoo WeCom settings](https://xp.odoohub.com.cn/en/chapter10/images/wework3.png) > If domain ownership verification is required, enter the generated verification filename and content in the domain settings. ### Message Decryption If Odoo needs to parse messages sent by WeCom servers, configure `EncodingAESKey` and `Token`. These can be obtained from the WeCom message API settings. ### Bind Company After setting up the WeCom application, bind it to the company that will use it. Go to **WeCom > Companies > WeCom** and select the application. ![Bind WeCom application to company](https://xp.odoohub.com.cn/en/chapter10/images/wework4.png) The basic Odoo-side configuration is now complete. Features -------- ### Basic Data Synchronization The first step after connecting WeCom is synchronizing department and employee data into Odoo. Use **WeCom > Settings > Sync Departments** and **Sync Employees**. ![Synchronize departments and employees](https://xp.odoohub.com.cn/en/chapter10/images/wework5.png) ### Employee Synchronization During employee synchronization, users can choose automatic user binding or user creation. ![Employee synchronization options](https://xp.odoohub.com.cn/en/chapter10/images/wework6.png) #### Automatic Binding By default, synchronization matches employees by name. The matching strategy can be adjusted in application settings. Supported strategies include: | Strategy | | --- | | Match by name | | Match by email | | Match by phone | | Match by email or phone | | Match when any of the above conditions is met | #### Automatically Create System Users If automatic user creation is enabled, Odoo checks whether a user with the same name already exists. If not, it creates a synchronized user. > The login name of an automatically created user is the WeCom ID. #### Sensitive Information Authorization Since 2022, WeCom has treated employee avatar, email, and phone as private information. Applications can only obtain these fields after the employee grants authorization. On the employee page, click **Action > Send Authorization Message**. The employee receives an authorization request in WeCom. After approval, Odoo can obtain avatar, email, phone, and other sensitive fields. ![Sensitive information authorization](https://xp.odoohub.com.cn/en/chapter10/images/WX16.png) ### QR Code Login After basic data synchronization, enable QR code login to simplify employee login. Go to **Settings > Users > OAuth Providers** and open the **WeCom OAuth Provider** line. ![WeCom OAuth provider](https://xp.odoohub.com.cn/en/chapter10/images/wework7.png) Enable the provider and enter Corp ID and AgentID. After logging out, the login page shows a WeCom login button. Click it to display the QR code login page, then scan with WeCom to log in. ![WeCom QR login](https://xp.odoohub.com.cn/en/chapter10/images/wework8.png) ### Menu Management The custom application appears in the WeCom app list. It supports custom menus, which can be configured in Odoo and linked to suitable actions. ![WeCom menu management](https://xp.odoohub.com.cn/en/chapter10/images/wework10.png) An application supports up to three top-level menus and five submenus under each top-level menu. Menus can be linked directly to specific Odoo pages, allowing employees to open target records or actions quickly. ![WeCom menu linked to Odoo page](https://xp.odoohub.com.cn/en/chapter10/images/wework11.png) ### Workbench Compared with the application home page, the WeCom workbench is more visible and can be customized to display data. Create a workbench under **WeCom > Applications > Workbench** and configure its style. ![Create WeCom workbench](https://xp.odoohub.com.cn/en/chapter10/images/wework12.png) Users can then see customized data display in the WeCom client workbench. ![Workbench display in WeCom](https://xp.odoohub.com.cn/en/chapter10/images/wework13.png) ### Robot Messages Many business messages can be pushed in real time through robots. The module supports customized robot messages. First, create a robot from the robot menu. ![Create WeCom robot](https://xp.odoohub.com.cn/en/chapter10/images/wework14.png) Enter the Webhook URL of the robot. To send a robot message, go to **Robots > Robot Messages** and create a test message. ![Create robot message](https://xp.odoohub.com.cn/en/chapter10/images/wework15.png) The message is received in the group where the robot is located. ![Robot message received](https://xp.odoohub.com.cn/en/chapter10/images/wework16.png) ### Chatter Messages To connect Odoo chatter with WeCom, enable instant messaging settings. ![Enable instant messaging](https://xp.odoohub.com.cn/en/chapter10/images/wework19.png) When a user mentions an employee in the chatter of any document, Odoo sends a WeCom notification automatically. ![Mention employee in chatter](https://xp.odoohub.com.cn/en/chapter10/images/wework25.png) The employee receives the message in WeCom immediately. ![WeCom message received](https://xp.odoohub.com.cn/en/chapter10/images/wework21.png) The employee can reply directly in the WeCom dialog. The reply is attached back to the original Odoo document according to the latest related record. > The default message format is text. Card-style messages can be selected in WeCom settings. ![Card-style message](https://xp.odoohub.com.cn/en/chapter10/images/wx15.png) This chapter introduced the base WeCom solution. With WeCom connected to Odoo, companies can extend into approvals, attendance, expenses, and more advanced workflows. The next chapter covers those advanced scenarios. results matching "" =================== No results matching "" ====================== --- # WeChat Mini Program Store Pro · Odoo Implementation Manual - Qingdao Ohm Network Technology [WeChat Mini Program Store Pro](https://xp.odoohub.com.cn/en/) =============================================================== WeChat Mini Program Store Pro ============================= In many digital projects, the first phase of a Mini Program store has a clear goal: **Products can be displayed, customers can place orders, orders enter Odoo, and payment and address flows work.** This solves the online transaction entrance. After the store goes live, companies quickly enter the next phase: | Question | | --- | | How do we encourage repeat purchases? | | How do different customers receive different benefits? | | How do we support coupons, points, member prices, and automatic promotions? | | How do we make the Mini Program an operation entrance instead of only an order tool? | This is what the Pro version solves. The Pro version is not a separate marketing system. It builds on the basic store and reuses Odoo pricelists, Discount and Loyalty, sales orders, customers, and payment systems. The Mini Program becomes the customer-facing operation entrance, while Odoo remains the rule source and business center. Why Pro Version Is Needed ------------------------- The basic version supports product display, categories, cart, orders, address, payment, and account center. This is enough for many companies to go live. But real operation raises more detailed questions: | Scenario | | --- | | New customers need newcomer coupons. | | Existing customers need member prices. | | Orders should generate points. | | Points should be redeemable in future orders. | | Certain customers or tags should see exclusive coupons. | | Automatic promotions and coupons should be controlled by backend rules. | | Canceled or refunded orders should correctly handle points, coupons, wallet balance, and gift cards. | If all these rules are written only in the Mini Program frontend, short-term delivery may look fast, but long-term problems appear: price inconsistency, refund rollback issues, accounting difficulty, and upgrade risk. The core design principle of the Pro version is: **reuse Odoo native marketing and order calculation as much as possible, while the Mini Program handles channel display and user experience**. ![Mini Program Pro overview](https://xp.odoohub.com.cn/en/chapter10/image-1.png) Pro Capabilities ---------------- ### Backend Quotation Preview In the Pro version, checkout and discount calculation are not calculated only by the frontend. When customers enter checkout, coupon selection, or point redemption, Odoo generates or updates a draft quotation and calculates pricelists, coupons, automatic promotions, points, gift cards, and payable amount. Typical flow: Mini Program cart -> Order confirmation -> Odoo backend quotation preview -> Return subtotal, discounts, points, and payable amount -> User confirms -> Same quotation becomes official order and payment starts The business value is that price and discount results are based on Odoo. The amount customers see, discount lines on the sales order, payment amount, and reconciliation basis remain consistent. ### Coupons The Pro version exposes Odoo Discount and Loyalty programs to the Mini Program channel. Supported coupon distribution patterns include: | Pattern | Meaning | | --- | --- | | Public claim | All eligible logged-in customers can see and claim the coupon. | | Targeted claim | Only specified customers or customer tags can see and claim it. | | Backend issue | Operators issue coupons from Odoo; the Mini Program only shows owned coupons. | ![Coupon page](https://xp.odoohub.com.cn/en/chapter10/a38c74e159ca0ce70caf0fa6fcd6b0e4.jpg) Coupon eligibility must not rely only on frontend hiding. Claiming, applying, previewing, and final order submission should all be verified by Odoo backend rules. ### Automatic Promotions The Pro version also supports automatic promotions. ![Automatic promotions](https://xp.odoohub.com.cn/en/chapter10/4e3d80753a35b0ec0cbb4d5f3b78b023.jpg) Examples include full reduction, percentage discount, specific product activity, and automatic discount. Odoo evaluates the order and returns discount details during checkout. Coupons and automatic promotions are different: | Type | Behavior | | --- | --- | | Coupon | Usually claimed or selected by the customer. | | Automatic promotion | Applied automatically by Odoo rules. | ![Promotion details](https://xp.odoohub.com.cn/en/chapter10/image-2.png) The Mini Program should display automatic promotions as order discount details rather than making customers manually select them. ### Points The Pro version uses Odoo Discount and Loyalty point programs, not a separate Mini Program point ledger. ![Points](https://xp.odoohub.com.cn/en/chapter10/b79c5ccbffcb3e37b5712cd634047cfd.jpg) Supported point scenarios include: | Capability | | --- | | Show point balance in account center. | | Show point account and history. | | Show expected points on order confirmation. | | Support point redemption during checkout. | | Show Chinese reasons when points are unavailable. | | Use Odoo logic to roll back point history and card balance when orders are canceled. | Expected points are not current redeemable points. Expected points are earned after completing the order, while redeemable points come from the customer's current balance and must satisfy backend redemption rules. ### Membership Levels And Member Prices Membership should become part of Odoo customer master data and work across backend sales, website, POS, and Mini Program. ![Membership](https://xp.odoohub.com.cn/en/chapter10/22cbbba44988413e96097a0b8544a82a.jpg) Pro membership capabilities include: | Capability | | --- | | Membership levels | | Growth value | | Growth value history | | Customer tags linked to membership levels | | Pricelists linked to membership levels | | Member-only promotions | | Mini Program membership benefit page | ![Membership benefits 1](https://xp.odoohub.com.cn/en/chapter10/ea2c570daccd2f2268aea15341bff01b.jpg) ![Membership benefits 2](https://xp.odoohub.com.cn/en/chapter10/f8f9ea5599dc3fe19bb9cee9dd903604.jpg) Member prices should use Odoo native pricelists as much as possible. After a customer reaches a membership level, the corresponding pricelist can be synchronized and reused across channels. ![Member price](https://xp.odoohub.com.cn/en/chapter10/d3de642f900d921d7707ddc66c323ceb.jpg) ### Gift Cards And eWallet The Pro version also plans and integrates balance-related capabilities such as gift cards and eWallet. ![Gift cards and eWallet](https://xp.odoohub.com.cn/en/chapter10/205fb874f329e61a9c4eeb96136bd215.jpg) These features involve payment offset, refund restoration, financial confirmation, and balance reconciliation, so they require more careful design than ordinary coupons. The principle is that usage, deduction, refund restoration, and history must have clear snapshots and records. ![Wallet flow](https://xp.odoohub.com.cn/en/chapter10/image.png) Conclusion ---------- The Pro version upgrades the Mini Program store from a transaction entrance to an operation entrance. It adds coupons, automatic promotions, point redemption, membership levels, member prices, gift cards, and eWallet while keeping Odoo as the rule source. ![Mini Program Pro conclusion](https://xp.odoohub.com.cn/en/chapter10/image-3.png) A truly useful Mini Program store is not only a beautiful interface. The backend must support it, rules must be controllable, orders must reconcile, and customer data must accumulate. Qingdao Ohm Network Technology focuses on making Odoo systems not only go live, but also support long-term operation. results matching "" =================== No results matching "" ====================== --- # Industry Solutions · Odoo Implementation Manual - Qingdao Ohm Network Technology [Industry Solutions](https://xp.odoohub.com.cn/en/) ==================================================== Industry Solutions ================== This section collects reusable industry solution patterns based on Odoo implementation experience. The goal is to help readers understand how Odoo can be adapted to real business scenes, not only as a standard ERP, but also as a practical operating platform for specific industries. results matching "" =================== No results matching "" ====================== --- # Foreign Trade Industry Solution · Odoo Implementation Manual - Qingdao Ohm Network Technology [Foreign Trade Industry Solution](https://xp.odoohub.com.cn/en/) ================================================================= Foreign Trade Industry Solution =============================== Foreign trade companies usually need to manage quotations, sales orders, supplier coordination, international shipping, freight cost, customs-related documents, currency conversion, and profit analysis. Odoo provides a strong foundation through Sales, Purchase, Inventory, Accounting, and CRM. On top of that foundation, Qingdao Ohm Network Technology can extend logistics integration, freight comparison, carrier tracking, order-level cost collection, and profitability analysis to make the system fit real foreign trade operations. results matching "" =================== No results matching "" ====================== --- # Alipay Payment · Odoo Implementation Manual - Qingdao Ohm Network Technology [Alipay Payment](https://xp.odoohub.com.cn/en/) ================================================ Alipay Payment ============== > Supported versions: Odoo 16.0, 17.0, and 18.0. Odoo 16 deprecated the official Alipay module, but Chinese businesses still need Alipay as a mainstream payment method. Instead of relying on the recommended AsiaPay option, Qingdao Ohm implemented a dedicated Alipay payment module for Odoo. Installation And Configuration ------------------------------ Install the Alipay module from the Apps menu. ![Install Alipay module](https://xp.odoohub.com.cn/en/chapter10/images/alipay.png) After installation, go to **Sales > Configuration > Online Payments > Payment Providers** and open the Alipay configuration page. ![Alipay provider settings](https://xp.odoohub.com.cn/en/chapter10/images/alipay2.png) Key parameters include: | Parameter | Description | | --- | --- | | Alipay APPID | Application ID created on Alipay Open Platform. | | Alipay Seller ID | Merchant account on the Alipay platform. | | Merchant Private Key | Merchant private key generated or uploaded through Alipay Open Platform. | | Alipay Public Key | Alipay public key generated or uploaded through Alipay Open Platform. | | Signature Type | `RSA` or `RSA2`. | After configuration, Alipay can be used in Odoo payment flows. Use Alipay In The Online Shop ----------------------------- In the online shop, the customer places an order and reaches the payment page. Odoo redirects the customer to Alipay to complete payment. After payment, the browser returns to the website and Odoo receives the payment status. ![Alipay in online shop](https://xp.odoohub.com.cn/en/chapter10/images/alipay3.gif) Use Alipay On Sales Orders -------------------------- Alipay can also be used to pay sales orders. First, create a sales order. ![Sales order for Alipay payment](https://xp.odoohub.com.cn/en/chapter10/images/alipay4.png) Send the order to the customer by email. The customer opens the link from the email and reaches the payment page. ![Sales order payment link](https://xp.odoohub.com.cn/en/chapter10/images/alipay5.png) Use Alipay On Invoices ---------------------- You can also create an invoice and send it to the customer. From the invoice portal preview page, the customer clicks **Pay Now**. ![Invoice payment button](https://xp.odoohub.com.cn/en/chapter10/images/alipay6.png) The customer selects Alipay and completes payment. ![Pay invoice with Alipay](https://xp.odoohub.com.cn/en/chapter10/images/alipay7.png) This chapter introduced Alipay online payment for Odoo. The next chapter explains Alipay in POS counter payment and refund scenarios. results matching "" =================== No results matching "" ====================== --- # WeChat QR Code Login · Odoo Implementation Manual - Qingdao Ohm Network Technology [WeChat QR Code Login](https://xp.odoohub.com.cn/en/) ====================================================== WeChat QR Code Login ==================== WeChat QR code login allows website users to register, log in, and bind an existing Odoo account by scanning a WeChat QR code. This is especially useful for China-facing portals and eCommerce sites where users are already accustomed to WeChat identity flows. This solution uses the [WeChat Open Platform](https://open.weixin.qq.com/) capability and applies to version `18.0.1.5+` and `19.0.1.2+`. Register A Website Application On WeChat Open Platform ------------------------------------------------------ Before installing the WeChat QR login module, register a website application on WeChat Open Platform. ![Register WeChat Open Platform application](https://xp.odoohub.com.cn/en/chapter10/images/WECHATLOGIN1.png) ### Get APPID And APP Secret After the application is created, obtain the application's APPID and APP Secret. ### Configure Callback Domain Configure the callback domain for the Open Platform application. The domain must match your Odoo website domain. If the domain is inconsistent, authentication will fail. Odoo Configuration ------------------ After the WeChat-side setup is ready, configure the provider in Odoo. ### Configure APPID And Secret Go to **Settings > Users > OAuth Providers**, find **WeChat Open Platform**, and enter the application APPID in the client ID field. ![Configure WeChat OAuth provider](https://xp.odoohub.com.cn/en/chapter10/images/WECHATLOG2.png) If your website allows customers to register as portal users through WeChat QR login, enable **Allow registration as portal user**. ### Activate OAuth Login WeChat QR login is disabled by default. Go to **Settings > Users & Companies > OAuth Providers**, open the WeChat Open Platform provider, and enable it. ![Enable WeChat OAuth provider](https://xp.odoohub.com.cn/en/chapter10/images/WECHATLOG3.png) User Experience --------------- After configuration, the WeChat login button appears in the relevant website pages. ### Registration Page Open the website registration page. ![WeChat button on registration page](https://xp.odoohub.com.cn/en/chapter10/images/WECHATLOG4.png) After clicking the WeChat QR button, Odoo guides the user to the QR code page. ![WeChat QR code page](https://xp.odoohub.com.cn/en/chapter10/images/WECHATLOG5.png) The user scans the QR code to complete registration and enters the portal account center. ### Login Page The same button can be used on the login page. Existing users can scan the QR code and complete one-click login. ### Bind From Account Center If a user registered through the normal account flow, they can later bind their WeChat account from the portal account center. ![Bind WeChat account](https://xp.odoohub.com.cn/en/chapter10/images/WECHATLOG6.png) This chapter introduced WeChat QR login for Odoo websites. The next chapter explains the WeChat Official Account solution, which supports menus, automatic replies, template messages, and customer interaction. results matching "" =================== No results matching "" ====================== --- # FAQ · Odoo Implementation Manual - Qingdao Ohm Network Technology [FAQ](https://xp.odoohub.com.cn/en/) ===================================== FAQ === Sales order line is missing required detail fields -------------------------------------------------- This error is usually caused by missing receivable or payable accounts on the customer's accounting information, or by missing units of measure on sales order lines during invoicing. Solution: | Check | What To Confirm | | --- | --- | | Customer accounting tab | Receivable and payable accounts are configured and belong to the current company. | | Sales order lines | Units of measure are set correctly. | results matching "" =================== No results matching "" ====================== --- # Windcave Payment · Odoo Implementation Manual - Qingdao Ohm Network Technology [Windcave Payment](https://xp.odoohub.com.cn/en/) ================================================== Windcave Payment ================ Windcave is a leading payment technology company in New Zealand. Formerly known as Payment Express, it was renamed Windcave in 2020. It helps businesses accept electronic payments through a range of payment solutions and technologies. This chapter explains how to integrate Windcave payment with Odoo 18 POS for retail customers in New Zealand. Install The Windcave Module --------------------------- ![Install Windcave module](https://xp.odoohub.com.cn/en/chapter10/images/wc1.png) After installation, configure Windcave in Odoo. Configuration ------------- Create a Windcave payment method under **POS > Configuration > Payment Methods**. ![Create Windcave payment method](https://xp.odoohub.com.cn/en/chapter10/images/wc2.png) Choose a bank journal, select Windcave as the payment terminal, and enter the payment credentials obtained from Windcave. Then add the Windcave payment method to the POS store. ![Add Windcave to POS](https://xp.odoohub.com.cn/en/chapter10/images/wc3.png) Receive Payment In POS ---------------------- After configuration, open a new POS session and create an order. ![Windcave POS order](https://xp.odoohub.com.cn/en/chapter10/images/wc4.png) ![Windcave POS payment screen](https://xp.odoohub.com.cn/en/chapter10/images/wc5.png) Click the send button. The payment amount is displayed on the HIT device in the store. The customer pays by scanning or using a bank card. After payment, Odoo POS completes the order automatically. ![Windcave device payment](https://xp.odoohub.com.cn/en/chapter10/images/wc6.png) After the customer pays, click validate and print the receipt. ![Windcave payment validated](https://xp.odoohub.com.cn/en/chapter10/images/wc7.png) Conclusion ---------- Odoo 18 POS frontend changed significantly compared with Odoo 17, so many payment plugins need adaptation. This Windcave integration provides a practical payment path for New Zealand POS deployments. results matching "" =================== No results matching "" ====================== --- # WeCom-Based Petty Cash And Expense Reimbursement · Odoo Implementation Manual - Qingdao Ohm Network Technology [WeCom-Based Petty Cash And Expense Reimbursement](https://xp.odoohub.com.cn/en/) ================================================================================== WeCom-Based Petty Cash And Expense Reimbursement ================================================ The previous chapters introduced basic and advanced WeCom integration. This chapter explains how to combine WeCom approvals with Odoo to handle two common business processes: petty cash and expense reimbursement. We start with the petty cash workflow. WeCom Approval Setup -------------------- This solution uses WeCom's native approval flow. Therefore, first configure the approval process and approval nodes in WeCom. ![WeCom payment approval flow](https://xp.odoohub.com.cn/en/chapter10/images/WX1.png) In this example, we use WeCom's payment approval process. Users can adjust the approval flow according to their actual business needs. Approval Template Configuration ------------------------------- First, enable the expense solution and WeCom expense approval feature from Qingdao Ohm's solution settings. ![Enable WeCom expense approval](https://xp.odoohub.com.cn/en/chapter10/images/WX2.png) After enabling these features, go to **WeCom > Settings > Approval Templates** and synchronize the required approval template into Odoo. To synchronize, open the target approval template in the WeCom backend, copy the template ID from the URL, paste it into the template ID field in Odoo, and click sync. ![Synchronize WeCom approval template](https://xp.odoohub.com.cn/en/chapter10/images/WX4.png) After synchronization, Odoo displays a form composed of multiple controls that match the WeCom-side configuration. Map these controls manually to the fields needed by the Odoo module, then save. ![Approval field mapping](https://xp.odoohub.com.cn/en/chapter10/images/WX3.png) Petty Cash Application ---------------------- After the approval template is configured, users can submit petty cash approval. Go to **Expenses > Petty Cash** and create a new petty cash process. ![Create petty cash request](https://xp.odoohub.com.cn/en/chapter10/images/WX5.png) Fill in the employee, amount, date, and other required information, then submit. After submission, the employee's manager receives an approval reminder in WeCom. ![WeCom approval reminder](https://xp.odoohub.com.cn/en/chapter10/images/WX6.png) The approver can approve or reject from WeCom. The approval result is pushed back to Odoo and updates the Odoo record status. ![Approve in WeCom](https://xp.odoohub.com.cn/en/chapter10/images/WX7.png) If the push does not succeed, the employee can manually click the refresh button to update the status. ![Refresh approval status](https://xp.odoohub.com.cn/en/chapter10/images/WX8.png) After approval, the finance user selects a payment method and clicks payment to complete the payment. ![Pay petty cash](https://xp.odoohub.com.cn/en/chapter10/images/WX9.png) Petty Cash Return And Expense Reimbursement ------------------------------------------- After the employee finishes the business activity, three situations may occur: | Situation | Handling | | --- | --- | | Petty cash is not enough | After reimbursement, the company needs to pay the employee's additional advanced amount. | | Petty cash is exactly used up | Submit expense details and reimbursement documents directly. | | Petty cash remains | Return the remaining petty cash after reimbursement. | ### Refund If petty cash remains, click the refund button on the petty cash form to record the returned amount. ![Refund remaining petty cash](https://xp.odoohub.com.cn/en/chapter10/images/WX10.png) ### Expense Reimbursement To offset expenses against petty cash, click **Create Expense** from the petty cash form and enter the expense reimbursement flow. ![Create expense from petty cash](https://xp.odoohub.com.cn/en/chapter10/images/WX11.png) Similarly, after the expense report is submitted for approval, the supervisor or manager receives a reminder in WeCom. After approval, finance handles expense settlement. ![Expense approval reminder](https://xp.odoohub.com.cn/en/chapter10/images/WX12.png) After finance posts the accounting entry, the system shows a payment button. If the expense amount exactly equals the petty cash amount, no additional operation is required and the bill is marked as paid. ![Expense fully offset](https://xp.odoohub.com.cn/en/chapter10/images/WX13.png) If the employee paid extra out of pocket, the system indicates that an additional payment to the employee is required. ![Additional employee payment required](https://xp.odoohub.com.cn/en/chapter10/images/WX14.png) FAQ --- Error example: field `creator_userid` expect type `string`. invalid Request Parameter, hint: [1720512723142834164225648], from ip: 39.88.46.36, more info at https://open.work.weixin.qq.com/devtool/query?e=40058 This error usually has two possible causes: 1. The corresponding approval process is not configured correctly in WeCom. 2. The employee submitted from Odoo does not have a matching WeCom OpenID. This chapter explained petty cash and expense reimbursement using WeCom approvals. Together with the previous WeCom chapters, it shows how Odoo can delegate approval interaction to the communication tool that employees already use every day. results matching "" =================== No results matching "" ====================== --- # Chapter 8 Barcode Rules · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 8 Barcode Rules](https://xp.odoohub.com.cn/en/) ========================================================= Chapter 8 Barcode Rules ======================= Odoo supports barcode scanning for products, serial numbers, lots, packages, and warehouse operations. To decide how a scanned code should be interpreted, Odoo uses a dedicated object: barcode nomenclature and barcode rules. This chapter introduces the basic barcode standards and explains how Odoo barcode rules identify different code patterns. UPC And EAN ----------- Two common barcode systems are UPC and EAN. UPC, or Universal Product Code, is mainly used in the United States and Canada. It is commonly a 12-digit barcode. EAN, or European Article Number, is used in many other regions. The standard 13-digit version is called EAN-13, and the shorter 8-digit version is EAN-8. ![UPC and EAN example](https://xp.odoohub.com.cn/en/stock/images/18.png) UPC and EAN can be converted. A UPC can become an EAN by adding `0` at the beginning. GS1 Standard ------------ GS1 provides a common global language for businesses to uniquely identify, capture, and share information about products, locations, logistics units, assets, documents, and service relationships. Common GS1 identifiers include: | GS1 Identifier | Identifies | Example | | --- | --- | --- | | GTIN | Trade items | Clothes sold online, cakes sold in a store | | GLN | Partners and locations | Company, warehouse, factory, store | | SSCC | Logistics units | Pallet, container, parcel | | GRAI | Returnable assets | Pallet base, crate, container | | GIAI | Individual assets | Medical equipment, production equipment | | GSRN | Service relationship | Loyalty member, patient, employee | | GDTI | Document type | Tax document, shipping document, insurance policy | | GINC | Consignment | A group of logistics units in a shipment | | GSIN | Shipment | Logistics units shipped under the same dispatch notice | | GCN | Coupon | Physical or digital coupon | | CPID | Component or part | Component that becomes part of a final product | In warehouse implementation, GS1 is important when products, lots, expiration dates, weights, or logistics units need to be encoded in one scannable string. Barcode Nomenclature -------------------- After understanding UPC and EAN, we can look at Odoo barcode rules. A typical barcode nomenclature looks like this: ![Barcode nomenclature](https://xp.odoohub.com.cn/en/stock/images/18.png) Important properties include: | Field | Meaning | | --- | --- | | Barcode Nomenclature | The name of the barcode rule set | | UPC/EAN Conversion | How Odoo converts between UPC and EAN | | Use GS1 Nomenclature | If enabled, the nomenclature accepts GS1-128 style codes | UPC/EAN conversion options include always, EAN-13 to UPC-A, UPC-A to EAN-13, and never. Barcode rules define how barcodes are organized and recognized. When a barcode is scanned, Odoo uses the first matching rule. Rules are based on patterns. If a pattern matches the scanned barcode prefix, that rule is applied. Patterns can also define numeric value positions. For example, product price or weight can be encoded in the barcode. `{N}` represents numeric digits, and `{D}` supports decimal precision. `{NNNDD}` means three integer digits and two decimal digits. Rule Definition --------------- Opening a barcode rule shows a form like this: ![Barcode rule definition](https://xp.odoohub.com.cn/en/stock/images/19.png) Common fields include: * Rule name. * Sequence, which controls matching order. * Type, which defines the scanning scenario supported by Odoo. * Encoding. * Pattern, which defines the regular expression matching logic. Rule sequence is important. If two rules can match the same barcode, the earlier rule wins. During implementation, barcode rules should be tested with real scanner output, not only with theoretical examples. This chapter explained barcode standards and Odoo barcode rules. The next chapter explains putaway rules, which decide where incoming products should be stored. results matching "" =================== No results matching "" ====================== --- # Tencent Cloud COS · Odoo Implementation Manual - Qingdao Ohm Network Technology [Tencent Cloud COS](https://xp.odoohub.com.cn/en/) =================================================== Tencent Cloud COS ================= We have already implemented integrations with AWS S3, Alibaba Cloud OSS, and Google Cloud Storage. When connecting with the WeChat ecosystem, Tencent Cloud COS becomes a natural option because WeChat Mini Program, Official Account, and WeCom all belong to Tencent's ecosystem. Tencent Cloud COS is Tencent Cloud's object storage service. This chapter introduces the COS integration solution for storing and accessing Odoo attachments in the cloud. 1\. Tencent Cloud COS Configuration ----------------------------------- ![COS configuration](https://xp.odoohub.com.cn/en/chapter10/images/QQ_1782663191510.png) During implementation, administrators create a COS storage backend in Odoo and configure Tencent Cloud information, such as: | Configuration | | --- | | Bucket name | | Region | | Secret ID / Secret Key | | Public or private access mode | | Signed URL validity period | | Optional custom domain or CDN address | | Business models to migrate to COS | After configuration, Odoo knows which attachments should be stored in COS and which should remain local. The value is that file storage, access mode, and validity become manageable system configuration instead of scattered server scripts or manual experience. 2\. Automatic Attachment Upload To COS -------------------------------------- ![Automatic COS upload](https://xp.odoohub.com.cn/en/chapter10/images/QQ_1782663595967.png) When users upload attachments that match the configured rules, Odoo automatically uploads the file to Tencent Cloud COS. Examples include: | File Type | | --- | | Product main images | | Product detail images | | Product manuals | | Quotation PDFs | | After-sales documents | | Business attachments needed by Mini Programs | After upload, Odoo stores the COS object path and switches the attachment to remote storage. Users continue to view and use attachments as before. 3\. Stable File Access For Mini Program And WeChat -------------------------------------------------- ![Stable WeChat file access](https://xp.odoohub.com.cn/en/chapter10/images/QQ_1782663658748.png) In Mini Program scenarios, product images, order attachments, and document downloads need stable HTTPS URLs. The COS module can generate file URLs according to configuration: | Resource Type | Access Mode | | --- | --- | | Public resources such as product images | Public URL or CDN domain. | | Sensitive files such as contracts or customer documents | Signed URL with expiration. | | Official Account, WeCom, or H5 pages | Reuse the same COS access capability. | This avoids forcing Mini Programs to read large files directly from the Odoo server. Odoo manages business data, COS manages files, and the Mini Program handles display. 4\. Batch Migration Of Historical Attachments --------------------------------------------- ![Batch COS migration](https://xp.odoohub.com.cn/en/chapter10/images/QQ_1782663710630.png) For Odoo systems already running for some time, many attachments may already exist in local filestore. The solution supports batch migration of historical attachments to Tencent Cloud COS. Migration can be controlled by business model. For example, migrate product images first, then expand to other attachment types. Typical migration flow: | Step | | --- | | Pre-check candidate attachment count and size. | | Execute batch migration. | | Check COS upload result. | | Verify attachment reading and Mini Program access. | | Clean local filestore references after confirmation. | This is not just “move everything once”. It is a safer enterprise migration flow, especially for production systems. 5\. Rollback And Local Cleanup ------------------------------ Object storage solutions must support rollback. If some attachments need to return to local Odoo storage, the files can be downloaded from COS and written back to Odoo filestore. After confirming COS files can be read correctly and Mini Program access works normally, local cleanup can be executed. During cleanup, the system checks whether local files are still referenced by other attachments to avoid deleting shared files by mistake. Saving disk space matters, but data safety comes first. results matching "" =================== No results matching "" ====================== --- # AWS S3 Simple Storage · Odoo Implementation Manual - Qingdao Ohm Network Technology [AWS S3 Simple Storage](https://xp.odoohub.com.cn/en/) ======================================================= AWS S3 Simple Storage ===================== The previous chapter explained Alibaba Cloud OSS. This chapter introduces AWS S3, a globally popular object storage service, and how it can be used with Odoo. Register S3 Service ------------------- Before configuration, enable [AWS S3](https://aws.amazon.com/cn/s3) and create a bucket. The example below uses Hong Kong. ![Create S3 bucket](https://xp.odoohub.com.cn/en/chapter10/images/S3-1.png) Obtain these parameters: | Parameter | Description | | --- | --- | | Secret Key ID | Access key ID. | | Secret Key | Access key secret. | | Bucket Name | Bucket name. | | Region | AWS region. | Configure S3 In Odoo -------------------- Install the AWS S3 simple storage module developed by Qingdao Ohm Network Technology. ![Install AWS S3 module](https://xp.odoohub.com.cn/en/chapter10/images/S3-2.png) After installation, an application similar to Alibaba Cloud OSS appears on the main page. ![S3 app entry](https://xp.odoohub.com.cn/en/chapter10/images/S3-3.png) ### Configure S3 Parameters Open the app and create an S3 application under configuration. ![Create S3 configuration](https://xp.odoohub.com.cn/en/chapter10/images/S3-4.png) Enter the AWS parameters. ### Bind Company After creating the S3 app, bind it in company settings. ![Bind S3 app to company](https://xp.odoohub.com.cn/en/chapter10/images/S3-5.png) The basic configuration is complete. Example 1: Store Binary Field Files ----------------------------------- Using a contact avatar as an example, create a contact named Bezos and upload an avatar. ![Upload contact avatar](https://xp.odoohub.com.cn/en/chapter10/images/S3-6.png) Check the corresponding attachment type. ![Attachment URL type](https://xp.odoohub.com.cn/en/chapter10/images/S3-7.png) The file type has become a URL, and the file can be seen in the S3 backend. ![File in S3](https://xp.odoohub.com.cn/en/chapter10/images/S3-8.png) Batch Migration --------------- S3 also supports batch upload of existing data to reduce disk usage. In the S3 app settings, define the data range and click **Store Files To S3**. ![Batch upload to S3](https://xp.odoohub.com.cn/en/chapter10/images/S3-9.png) Files can also be retrieved from S3 back to local storage. ![Retrieve files from S3](https://xp.odoohub.com.cn/en/chapter10/images/S3-11.png) Users can also manually select files from the file list and run upload or download actions. ![Manual S3 actions](https://xp.odoohub.com.cn/en/chapter10/images/S3-10.png) Example 2: Store Document Attachments ------------------------------------- Odoo document chatter is one of the most common places where users upload files. The module supports cloud storage for chatter attachments. Assume we sell Odoo services to Bezos and create a sales order. ![Sales order example](https://xp.odoohub.com.cn/en/chapter10/images/S3-12.png) Send an email with the quotation PDF attached. ![Send quotation email](https://xp.odoohub.com.cn/en/chapter10/images/S3-13.png) The PDF quotation attachment is now a link instead of a local document. When previewed, it opens the S3 URL directly. ![S3 attachment preview](https://xp.odoohub.com.cn/en/chapter10/images/S3-14.png) Deletion -------- When files are deleted in Odoo, the corresponding S3 files are deleted automatically. Access Control -------------- To allow flexible internal file control, the S3 settings include selectable storage scopes. Users can decide which models' attachments are uploaded to S3, such as product documents or user avatars, and which remain local, such as quotations, purchase documents, or payslips. The module also supports public access for selected models and private access for specific models. Contact us for more details. Conclusion ---------- AWS is a leading global cloud provider, and S3 is widely used worldwide. Connecting Odoo with S3 helps cross-border trade and eCommerce companies reduce local storage pressure while providing better file access and data security. results matching "" =================== No results matching "" ====================== --- # Cloud Printing · Odoo Implementation Manual - Qingdao Ohm Network Technology [Cloud Printing](https://xp.odoohub.com.cn/en/) ================================================ Cloud Printing ============== Sometimes documents should be sent directly to a printer without asking users to download and open the file manually. Cloud printing solves this by allowing documents to be sent to remote printers through an internet-based printing service. Install The Cloud Printing Module --------------------------------- The cloud printing module is developed by Qingdao Ohm Network Technology Co., Ltd. It provides an Odoo interface for registering and managing cloud printing services. Install it from Odoo Apps. ![Install cloud printing module](https://xp.odoohub.com.cn/en/chapter10/images/cloud_print.png) Configure Cloud Printing Service -------------------------------- After installation, configure the cloud printing service. First, configure an API key on the service side. Then open the cloud printing settings in Odoo and enter the API key and related information. ![Cloud printing service configuration](https://xp.odoohub.com.cn/en/chapter10/images/cloud_print2.png) ### Configure Cloud Printers After service configuration, add cloud printers in the cloud printing module. Enter printer name, model, and other related information. ![Cloud printer configuration](https://xp.odoohub.com.cn/en/chapter10/images/cloud_print4.png) Click the test connection button to verify that the printer is configured correctly. If the test succeeds, Odoo can use cloud printing. Click the synchronize cloud printers button to synchronize printer information into Odoo so users can choose cloud printers from Odoo. ### Print Queue When cloud printing is used, documents are added to the print queue. Users can view and manage print jobs from the print queue interface. ![Cloud print queue](https://xp.odoohub.com.cn/en/chapter10/images/cloud_print3.png) ### Automatic Cloud Printing For Reports Reports can also be configured for automatic cloud printing. When certain Odoo reports should be sent automatically to a cloud printer, select the cloud printer in the report settings. ![Automatic cloud printing for reports](https://xp.odoohub.com.cn/en/chapter10/images/cloud_print5.png) After this configuration, when the report is generated, Odoo automatically sends it to the cloud printer without manual download or printing. results matching "" =================== No results matching "" ====================== --- # Foreign Trade Shipping · Odoo Implementation Manual - Qingdao Ohm Network Technology [Foreign Trade Shipping](https://xp.odoohub.com.cn/en/) ======================================================== Foreign Trade Shipping ====================== Foreign trade companies often use international logistics carriers such as DHL, FedEx, and UPS. Some carriers are supported by native Odoo, while others require additional adaptation. This chapter explains how common carrier integrations can simplify foreign trade shipping operations in Odoo. Freight Rate Comparison ----------------------- For foreign trade companies, freight cost is often an important factor when choosing a carrier. Operators may need to manually enter sender and recipient addresses on multiple carrier websites, compare prices, and then choose a result. To solve this, our foreign trade solution includes a freight rate comparison feature. Operators only need to choose sender and recipient addresses and enter package length, width, height, and weight. The system then queries preconfigured carriers and returns rate results in one view. ![Freight rate comparison](https://xp.odoohub.com.cn/en/solutions/images/EXPORT1.png) This makes carrier selection faster and reduces manual comparison work. results matching "" =================== No results matching "" ====================== --- # Chapter 3 Attachment Sharing · Odoo Implementation Manual - Qingdao Ohm Network Technology [Chapter 3 Attachment Sharing](https://xp.odoohub.com.cn/en/) ============================================================== Chapter 3 Attachment Sharing ============================ Odoo provides portal access for documents, but in some situations we do not want an external user to access the entire document and all related attachments. Instead, we may only want them to access selected attachments for a limited period. This chapter introduces an attachment sharing feature designed for that scenario. Sales Attachment Management --------------------------- We use sales order attachment management as an example. First, open a sales order. ![Sales order attachments](https://xp.odoohub.com.cn/en/chapter9/images/share1.png) In this example, the order contains two attachments. We want to manage and share each attachment separately, including controlling the expiration date. Click the attachment sharing shortcut button at the top of the document to open the attachment sharing management page. ![Attachment sharing management](https://xp.odoohub.com.cn/en/chapter9/images/share2.png) The system automatically creates sharing entries for each attachment. You can edit the expiration date to control how long each attachment remains available. This is useful when attachments contain quotation files, product drawings, certificates, contracts, or delivery documents that should be shared selectively. Share With External Users ------------------------- Copy the sharing link from the document and send it to the external user. ![Shared attachment preview](https://xp.odoohub.com.cn/en/chapter9/images/share3.png) The external user can preview the image or click the download button to save the document locally. Compared with sharing the entire sales order portal page, attachment-level sharing gives the company more control. It is a practical approach when the recipient only needs a file, not the full business document. This chapter introduced controlled attachment sharing. The next chapter explains IP whitelist login restrictions for security-sensitive deployments. results matching "" =================== No results matching "" ====================== --- # YunExpress Integration · Odoo Implementation Manual - Qingdao Ohm Network Technology [YunExpress Integration](https://xp.odoohub.com.cn/en/) ======================================================== YunExpress Integration ====================== > Supported versions: 15.3+ / 17.0.1.2+ / 19.0.1.3+ YunExpress is a logistics provider widely used by cross-border eCommerce sellers for small international parcels. For companies selling through marketplaces, independent websites, or Odoo Sales, a YunExpress integration can reduce manual shipping work: users can estimate shipping fees, create shipping orders from Odoo delivery orders, obtain tracking numbers, download shipping labels, and open the official tracking page from Odoo. This chapter explains how to use the YunExpress integration in Odoo 19.0. We will start from the YunExpress developer account, then configure the delivery method in Odoo, sync YunExpress shipping products, prepare declaration and IOSS data, and finally walk through shipping fee estimation, waybill creation, label download, and tracking. * [Register A YunExpress Developer Account](https://xp.odoohub.com.cn/en/chapter10/YUN.html#register-a-yunexpress-developer-account) * [Install And Configure The YunExpress Module](https://xp.odoohub.com.cn/en/chapter10/YUN.html#install-and-configure-the-yunexpress-module) * [Order Type](https://xp.odoohub.com.cn/en/chapter10/YUN.html#order-type) * [YunExpress Products](https://xp.odoohub.com.cn/en/chapter10/YUN.html#yunexpress-products) * [Declaration Policy](https://xp.odoohub.com.cn/en/chapter10/YUN.html#declaration-policy) * [Additional Services And IOSS](https://xp.odoohub.com.cn/en/chapter10/YUN.html#additional-services-and-ioss) * [Estimate Shipping Fees On A Sales Order](https://xp.odoohub.com.cn/en/chapter10/YUN.html#estimate-shipping-fees-on-a-sales-order) * [Create A Waybill From A Delivery Order](https://xp.odoohub.com.cn/en/chapter10/YUN.html#create-a-waybill-from-a-delivery-order) * [Track The Shipment](https://xp.odoohub.com.cn/en/chapter10/YUN.html#track-the-shipment) * [Common Error](https://xp.odoohub.com.cn/en/chapter10/YUN.html#common-error) * [Implementation Notes](https://xp.odoohub.com.cn/en/chapter10/YUN.html#implementation-notes) Register A YunExpress Developer Account --------------------------------------- Before configuring Odoo, register a developer account on the [YunExpress Open Platform](https://open.yunexpress.cn/) and create an application. After the application is created, YunExpress provides the API credentials required by Odoo. You will normally need three values: | Field | Meaning | Where It Is Used | | --- | --- | --- | | `APPID` | Application ID | Identifies the YunExpress application. | | `APPSECRET` | Application secret | Used to request API access tokens and sign requests. | | `SOURCEKEY` | Source verification key | Confirms the request source in the YunExpress OpenAPI. | ![YunExpress developer credentials](https://xp.odoohub.com.cn/en/chapter10/images/yun8.png) > `SourceKey` can be found in the user information settings on the YunExpress Open Platform. Keep these credentials in the Odoo carrier configuration only. Do not write them into documentation, screenshots, code comments, or shared chat messages. Install And Configure The YunExpress Module ------------------------------------------- After the YunExpress credentials are ready, install the YunExpress delivery module in Odoo. The module extends Odoo's native delivery carrier flow, so users can still work from Sales Orders and Inventory Delivery Orders instead of opening a separate shipping system. Go to `Settings > Sales` and enable the YunExpress shipping option. ![Enable YunExpress delivery](https://xp.odoohub.com.cn/en/chapter10/images/yun1.png) After saving the setting, go to `Inventory > Configuration > Delivery Methods`, create or open the YunExpress delivery method, and enter the credentials obtained from the YunExpress Open Platform. ![Configure the YunExpress delivery method](https://xp.odoohub.com.cn/en/chapter10/images/yun2.png) The basic configuration usually includes API credentials, environment, order type, package type, default YunExpress product, declaration policy, and optional additional services. In a real project, do not rush to test shipping immediately after entering the credentials. First make sure products, customer addresses, company sender information, weights, and declaration names are ready; otherwise most API errors will appear at the shipping order stage. ### Order Type YunExpress shipping orders can be created in two major scenarios: | Type | Usage Scenario | | --- | --- | | Package | Used for normal single-parcel shipping orders. This is the most common scenario for cross-border eCommerce parcels. | | FBA | Used when shipping goods to Amazon FBA warehouses. | Choose the order type according to the actual business process. If the company handles both direct-to-consumer parcels and FBA replenishment, it is usually clearer to create separate delivery methods or at least document which configuration is used for each scenario. ### YunExpress Products YunExpress provides multiple logistics products and routes. In Odoo, these products are stored locally so the delivery method can select a default YunExpress product for quotation and waybill creation. Click the sync button to update the available YunExpress product list from the OpenAPI. ![Sync YunExpress products](https://xp.odoohub.com.cn/en/chapter10/images/yun10.png) After syncing, select the default product on the delivery method. This default product is important because the sales shipping fee estimation uses it to find the matching YunExpress price result. ### Declaration Policy Cross-border parcels usually require customs declaration information. The YunExpress module adds a declaration name field on products so the implementation team can maintain names used for shipping declaration separately from the normal product display name. ![Product declaration name](https://xp.odoohub.com.cn/en/chapter10/images/yun11.png) The declaration policy controls how Odoo maps product names into YunExpress declaration fields: | Option | Behavior | | --- | --- | | Use declaration name as English name | The declaration name is sent as the English declaration name. | | Use declaration name as Chinese name | The declaration name is sent as the Chinese or local declaration name. | For cross-border sellers, this field should be treated as master data, not as a temporary shipping note. Product weight, product value, HS-related information if required by the business, and declaration names should be checked before go-live. ### Additional Services And IOSS For shipments to Europe, IOSS information may be required depending on the tax and shipping scenario. The YunExpress module adds an `IOSS` field on contacts, so the company can maintain the IOSS number on the relevant sender or company contact. ![IOSS field on contact](https://xp.odoohub.com.cn/en/chapter10/images/yun12.png) When the sender has an IOSS number, use that number in the contact record. If the sender does not have an IOSS number and the business chooses to use YunExpress VAT collection service, add the `V1` additional service in the delivery method configuration. Common additional services may include remote area handling, duty prepaid services, VAT collection, or export tax refund related services. The available services should be confirmed with the YunExpress account manager or the official Open Platform configuration for the customer's contract. Estimate Shipping Fees On A Sales Order --------------------------------------- Once the delivery method is configured, users can estimate YunExpress shipping fees directly on the Odoo Sales Order. ![Estimate YunExpress shipping fee on sales order](https://xp.odoohub.com.cn/en/chapter10/images/yun3.png) The estimation is based on the YunExpress product configured on the delivery method. In practice, the calculation also depends on the shipping country, postal code, package type, origin, and product weight. If the quotation result is unexpected, check these data first before assuming the API is wrong. This step is useful before order confirmation because sales users can compare shipping methods and understand the estimated delivery cost without leaving Odoo. Create A Waybill From A Delivery Order -------------------------------------- After the sales order is confirmed and the delivery order is ready, process the Odoo delivery order as usual. When the delivery is validated with the YunExpress delivery method, Odoo creates a YunExpress shipping order and receives a waybill number. ![Create YunExpress waybill from delivery order](https://xp.odoohub.com.cn/en/chapter10/images/yun4.png) After the waybill is created successfully, Odoo downloads the electronic shipping label and attaches it to the delivery order chatter. Warehouse users can open or print the label from the delivery order. ![YunExpress label attached to the delivery order](https://xp.odoohub.com.cn/en/chapter10/images/yun5.png) Before using this flow in production, the warehouse team should test at least three scenarios: a normal parcel, a parcel with incomplete address data, and a parcel using the expected IOSS or additional service setup. These tests help confirm that the API credentials, sender data, product declaration data, and printing process all work together. Track The Shipment ------------------ Like other Odoo delivery methods, the YunExpress delivery method provides a tracking action. Users can click the tracking button on the delivery order to open the official YunExpress tracking page. ![Open YunExpress tracking page](https://xp.odoohub.com.cn/en/chapter10/images/yun7.png) This standard tracking link is suitable for basic customer service work. If the company needs structured tracking events inside Odoo, such as automatic status updates, delayed shipment alerts, or customer notification rules, the implementation can be extended by connecting YunExpress tracking events to Odoo's delivery tracking model. Common Error ------------ ### `receiver.address_lines` single string length: 1-200 This error usually means the recipient address line is longer than 200 characters, or one of the address fields is empty in a way that YunExpress does not accept. Recommended checks: | Check Item | What To Do | | --- | --- | | Street address | Split an overly long address into `Street` and `Street 2`. | | Country and state | Make sure the country is selected correctly and the state/province format is accepted. | | Postal code | Confirm the postal code is not empty for countries that require it. | | Phone or mobile | Make sure the recipient has a phone number or mobile number. | | Hidden spaces | Remove line breaks, repeated spaces, or pasted special characters. | In cross-border logistics projects, address quality is often the first operational bottleneck. A small amount of master data cleanup before go-live usually saves much more time than repeatedly handling failed waybill creation later. Implementation Notes -------------------- The YunExpress integration is built on top of Odoo's native delivery carrier mechanism. From a user perspective, the flow stays familiar: configure a delivery method, estimate shipping on the sales order, validate the delivery order, receive a tracking number, and print the label. From an implementation perspective, YunExpress has a few extra requirements that should be planned early: | Area | Practical Note | | --- | --- | | Credentials | Keep sandbox and production credentials separated. Test in sandbox first if the YunExpress account supports it. | | Product data | Maintain product weight and declaration names before enabling warehouse users to create labels. | | Address data | Recipient country, postal code, city, street, phone, and email should be complete enough for YunExpress validation. | | IOSS and services | Confirm whether the company uses its own IOSS number or YunExpress VAT collection service. | | Batch operations | If the warehouse prints labels in batches, test duplicate-click prevention and label merge behavior before production use. | | Tracking | A simple tracking link is enough for basic use; structured tracking events require an additional implementation layer. | In this chapter, we completed the main YunExpress flow in Odoo: account preparation, delivery method configuration, product sync, declaration setup, IOSS and additional services, shipping fee estimation, waybill creation, label download, and tracking. In later chapters of the English manual, we can continue translating other logistics and general solution chapters so overseas readers can understand the same Odoo implementation patterns with consistent terminology. results matching "" =================== No results matching "" ====================== --- # Foreign Trade Custom Apparel · Odoo Implementation Manual - Qingdao Ohm Network Technology [Foreign Trade Custom Apparel](https://xp.odoohub.com.cn/en/) ============================================================== Foreign Trade Custom Apparel ============================ Business Background ------------------- This customer runs a custom foreign trade apparel business. Their customers submit customized product requirements and place orders. Production is outsourced to factories, and after production the goods are shipped to customers. During the process, merchandisers arrange shipment time, follow up balances, and handle after-sales service. This case was implemented with Odoo 16.0. SKU Design ---------- Because the business is more make-to-order and the customer does not directly manage inventory, all SKUs were designed as consumables. The factory usually ships directly, but logistics tracking is still required. Order Processing Flow --------------------- ### Sales Orders Salespeople create orders in the Sales app. Sales orders are divided into bulk orders and sample orders. ![Sales order type 1](https://xp.odoohub.com.cn/en/example/images/1.png) ![Sales order type 2](https://xp.odoohub.com.cn/en/example/images/2.png) Salespeople can quickly identify whether the order is a sample or bulk order. After confirming products and quantities, they confirm the sales order and enter customer ETD and supplier ETA in the corresponding fields. ### Generate Purchase Orders Because almost all production is outsourced, factories are treated as suppliers. Production requirements are sent to factories through purchase orders. To simplify operation, a create purchase order button was added to the sales order. It creates a linked purchase order directly. ![Create purchase order from sales order](https://xp.odoohub.com.cn/en/example/images/3.png) ### Supplier Updates Order Status Suppliers are given system access. After login, they can view their own orders and update price and status. To make information sharing easier, a tag/status feature was developed. Merchandisers or suppliers can update order status so relevant staff can follow progress. ![Supplier order status](https://xp.odoohub.com.cn/en/example/images/4.png) Order statuses can be customized in settings. ### Shipment After factory production is completed, the merchandiser or supplier marks the order as finished. The order enters QC and shipment stage. QC uses native Odoo functionality. After QC, users fill in carrier and tracking number, then validate delivery. ![Shipment](https://xp.odoohub.com.cn/en/example/images/5.png) ### Logistics Status Update With APIs from DHL, 17TRACK, and other logistics platforms, shipment status can be queried directly from the order. ![Logistics status](https://xp.odoohub.com.cn/en/example/images/6.png) Reminders or follow-up actions can be triggered after delivery. Real-Time Order Status Tracking ------------------------------- To make order status visible at a glance, the order list displays payment status, logistics status, and other key information. ![Order status list](https://xp.odoohub.com.cn/en/example/images/7.png) Merchandisers can quickly identify next actions. Freight Cost Calculation ------------------------ Carrier APIs allow freight cost to be added to orders. ![Freight cost estimation](https://xp.odoohub.com.cn/en/example/images/8.png) Carrier freight bills can also be imported to generate freight purchase orders. ![Freight bill import](https://xp.odoohub.com.cn/en/example/images/9.png) Generated freight purchase orders are linked to sales orders and included in statistics. Cost Statistics --------------- Costs related to orders are linked to the order. ![Order cost statistics](https://xp.odoohub.com.cn/en/example/images/10.png) Profit Statistics ----------------- Profit can then be analyzed by order across all related stages. ![Order profit statistics](https://xp.odoohub.com.cn/en/example/images/11.png) Foreign currencies are automatically converted to RMB for statistics. After-Sales Service ------------------- If after-sales service is needed during the order process, the after-sales team follows up and resolves the issue. ![After-sales service](https://xp.odoohub.com.cn/en/example/images/12.png) Conclusion ---------- With Odoo's standardized process and targeted custom development, the customer successfully transformed an Excel-driven workflow into an Odoo-based process. Internal operations became clearer and simpler, allowing the company to focus more on business growth. results matching "" =================== No results matching "" ====================== ---